DataFrame查询数据
- 加载数据
- 通过索引查询
-
- 查询某(几)列
- 查询一列 的 某(几)行
- 查询多列 的 某(几)行
- 使用loc和iloc方法查询
-
- 使用bool-series索引
加载数据
import pandas as pd# 加载数据
df = pd.read_excel('demo.xlsx', sheet_name=0)
# 重新构建行索引
index = ['index_' + str(tmp) for tmp in df.index]
# 添加到数据上去
df.index = index
print('df:\n', df)
修改索引的方法参见:https://blog.csdn.net/weixin_45760274/article/details/123459130
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/215951NP-0.png)
文章图片
通过索引查询 通过索引查询数据时可以使用 行列的
下标
或名称
,查询多行多列数据时还可以配合切片
进行查询 连续的 数据。需要注意的是在查询 非连续的 多行多列数据时,需要传入列表组成
列表嵌套
。查询某(几)列 索引方式:先操作列,再去操作行
# 获取其中的一列
print('获取单列数据:\n', df['B'])
print('数据类型:\n', type(df['B']))
print('*' * 100)# 获取其中的多列数据注意: [[ 用的是列表的嵌套!!! ]]
print('获取多列数据:\n', df[['B', 'C', 'D']])
print('数据类型:\n', type(df[['B', 'C', 'D']]))
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/2159512103-1.jpg)
文章图片
查询一列 的 某(几)行
# 获取其中的一列的某几行
print('获取其中的一列的前5行:\n', df['B'][:5])# 行下标切片
print('获取其中的一列的前5行:\n', df['B'][:'index_4'])# 行名称切片---名称切片时包含尾部的!
print('获取其中的一列的前5行:\n', df['B'][[0, 1, 2, 3, 4]])# 行下标列表
print('获取其中的一列的前5行:\n', df['B'][['index_0', 'index_1', 'index_2', 'index_3', 'index_4']])# 行名称列表
print('获取其中的一列的前5行:\n', df['B'].head(5))# head方法
【Pandas|【Pandas】DataFrame查询数据】上述输出结果都为:
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/2159512593-2.png)
文章图片
print('获取其中的一列的后5行:\n', df['B'].tail(5))# tail方法
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/2159513401-3.png)
文章图片
查询多列 的 某(几)行
print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][:5])# 行下标切片
print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][:'index_4'])# 行名称切片
print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']].head(5))# head方法
print('获取其中的多列的后n行:\n', df[['B', 'C', 'D']].tail(5))# tail方法
# print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][[0, 1, 2, 3]])# 此时,行下标列表报错!
# print('获取其中的多列的前n行:\n', df[['B', 'C', 'D']][['index_0','index_1','index_2']])# 此时,行名称列表报错!
"""
报错的原因是因为 df[['B', 'C', 'D']] 查询出的是多列数据,
后面的[[0, 1, 2, 3]]被当作是在前面的基础上继续查询列,而不是查询行
"""
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/21595135Q-4.png)
文章图片
使用loc和iloc方法查询 同时操作DataFrame的行和列,可以借助 loc 和 iloc 的方法
注意:
loc
只能使用名称; iloc
只能使用下标 。----不能混用!DataFrame.loc[“行名称”, “列名称”]
DataFrame.iloc[行索引, 列索引]
print('获取其中的一列:\n', df.loc[:, 'B'])
print('获取其中的一列:\n', df.iloc[:, 5])print('获取其中的多列:\n', df.loc[:, ['A', 'B', 'D']])
print('获取其中的多列:\n', df.iloc[:, [2, 5, -2]])print('获取其中的多列:\n', df.loc[:, 'A':'C'])
print('获取其中的多列:\n', df.iloc[:, 0:3])print('获取多列的指定行:\n', df.loc['index_0':'index_4', ['A', 'B', 'D']])
print('获取多列的指定行:\n', df.iloc[0:5, 0:3])
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/215951BX-5.jpg)
文章图片
从效率上来说—直接索引效率高,执行速度快,loc和iloc会稍微慢一点
从应用的广泛性来说—loc和iloc在工作中使用较多!
使用bool-series索引
boolList = [True,True,False,True,False,False,True,True,True,False,]
print("bool数组索引:\n",df.loc[boolList,:])
![Pandas|【Pandas】DataFrame查询数据](http://img.readke.com/220813/2159513J9-6.png)
文章图片
推荐阅读
- 大橙子在数据分析|【Python数据处理】用pandas将dataframe写入excel中
- C语言学习心得|深度分析数据在内存中的存储形式
- 编程语言|Python干货宝典(如何处理Pandas中丢失的数据)
- 数据分析|Python | Pandas | 多列映射匹配到新列
- 上榜中国大数据企业50强,思迈特软件再夺多项荣誉
- Python|数据分析(实战模拟)
- JEECG低代码平台|JeecgBoot 3.4.0 版本发布,微服务重构版本
- 数据分析|机器学习基础篇(十)——聚类
- python|计算聚类系数clustering coefficient的python实现