栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Pandas】DataFrame查询数据

【Pandas】DataFrame查询数据

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

通过索引查询

通过索引查询数据时可以使用 行列的下标或名称,查询多行多列数据时还可以配合切片进行查询 连续的 数据。
需要注意的是在查询 非连续的 多行多列数据时,需要传入列表组成列表嵌套。

查询某(几)列

索引方式:先操作列,再去操作行

# 获取其中的一列
print('获取单列数据:n', df['B'])
print('数据类型:n', type(df['B']))
print('*' * 100)

# 获取其中的多列数据  注意: [[ 用的是列表的嵌套!!! ]]
print('获取多列数据:n', df[['B', 'C', 'D']])
print('数据类型:n', type(df[['B', 'C', 'D']]))

查询一列 的 某(几)行
# 获取其中的一列的某几行
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方法

上述输出结果都为:

print('获取其中的一列的后5行:n', df['B'].tail(5))  # tail方法

查询多列 的 某(几)行
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]]被当作是在前面的基础上继续查询列,而不是查询行
"""

使用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])

从效率上来说—直接索引效率高,执行速度快,loc和iloc会稍微慢一点
从应用的广泛性来说—loc和iloc在工作中使用较多!

使用bool-series索引
boolList = [True,True,False,True,False,False,True,True,True,False,]
print("bool数组索引:n",df.loc[boolList,:])

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/761044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号