一.根据列名加载数据
-
查看一列数据
- df[‘列名’]
# 导入数据库 import pandas as pd # 加载tsv文件数据 df = pd.read_csv('gapminder.tsv', sep='\t') # 输出DataFrame数据的一列 print(df['country'])
-
查看多列数据
- df[[‘列名1’,‘列名2’,…]]
# 获取列名为country和continent的数据 print(df[['country', 'continent']])
二.根据行加载数据
- 打印数据的前五行
- DataFrame.head()
# 获取数据的前五行 print(df.head()) # 获取数据的第一行 print(df.head(1))
- 通过行索引获取数据
- df.iloc[n]
# 获取第一行数据 print(df.iloc[0]) # 获取第5行数据 print(df.iloc[4]) # 获取最后一行数据 print(df.iloc[-1])
- 获取数据的后五行
- DataFrame.tail()
# 获取后五行数据 print(df.tail()) # 获取最后一行数据 print(df.tail(1))
- 通过多个索引获取多行数据
- DataFrame.iloc[index1, index2…]
# 获取第2行、第6行、第100行的数据 print(df.iloc[[1, 5, 99]])
- 获取指定区间的多行数据
- DataFrame.iloc[开始索引:结束索引:间隔]
# 获取从第11行到20行的数据 print(df.iloc[10:21]) # 获取从第11行到20行的数据,间隔为2 print(df.iloc[10:21:2]) # 获取前三行数据 print(df.iloc[:3]) # 获取后三行数据 print(df.iloc[-3:])
- 根据行序号的值获取单行数据
- DataFrame.loc[行序号]
# 获取行序号为10的数据 print(df.loc[10]) # 获取最后一行的数据 n = len(df) print(df.loc[n-1])
- 通过多个索引获取多行数据
DataFrame.loc[index1, index2…]# 获取第2行、第6行、第100行的数据 print(df.loc[[1, 5, 99]])
三.iloc和loc的区别
- iloc传入的是索引的序号(行索引下标),loc是索引的标签(行索引的值);
- 并不是所有情况下索引标签=索引序号;
- iloc : 通过行索引的下标获取行数据
- loc : 通过行索引的值获取行数据
- 值切片的原则是左闭右也闭,下标切片的原则是左闭右开
三.根据行和列获取指定范围的数据
- 使用iloc和loc获取单个数据
- DataFrame.iloc[[行索引下标],[列索引下标]]
- DataFrame.iloc[行索引下标,列索引下标]
- DataFrame.loc[[行索引值],[列索引值]]
- DataFrame.loc[行索引值,列索引值]
# 返回第一行第一列的数据(返回值为DataFrame形式) print(df.iloc[[0], [0]]) # 返回第一行第一列的数据(返回值为str类型) print(df.iloc[0, 0]) # 获取第一行,列索引值为country的数据(返回值为DataFrame类型) print(df.loc[[0], ['country']]) # 获取第一行,列索引之为country的数据(返回值为str类型) print(df.loc[0, 'country'])
- 使用iloc和loc获取指定范围内的数据
- DataFrame.iloc[[行索引], [列索引]]
- DataFrame.loc[[行序号],[列序号]]
# 获取行索引为1、3、5,列序号为2、3、4的数据 print(df.iloc[[1, 3, 5], range(2,5)]) # 获取行序号为0、99、999,列序号为country和lifeExp的数据 print(df.loc[[0, 99, 999], ['country', 'lifeExp']]) # 获取行序号为1、3、5,列序号为country和lifeExp的数据 print(df.loc[1:5:2,['country', 'lifeExp']]) # 获取第1、3、5行,第1、3、5列的数据 print(df.iloc[1:6:2,1:6:2]) # 取出行序号为year和pop的列(返回值为DataFrame) print(df.loc[:,['year', 'pop']]) # 取出行索引为2和4和-1的数据(返回值为DataFrame) print(df.iloc[:, [2, 4, -1]]) # 取出前五列数据 print(df.iloc[:, range(5)]) # 取出第4列到第6列的数据 print(df.iloc[:, 3:6])