Python:使用pandas对excel数据筛选选择

1.筛选方式1:直接筛选

#直接筛选

#DataFrame索引使用[],

#直接索引语法:df[]

1.1 直接筛选,选择单列数据:df["列"]

1.2直接筛选,选择多列数据:df[["列1","列2"]](注意:多嵌套列)

1.3直接筛选,选择多行数据:df[2:4]按照位置选取连续的行(切片),前闭后开

2.筛选方式2:条件筛选

#('----------筛选方式2:条件筛选-------------')

#条件筛选

#布尔索引(带条件判断的索引):根据布尔条件选择对应的行

#索引列表中可以使用&、|操作符,但是不能用and、or关键词

#布尔选择的结果还是DataFrame,所以对于结果可以进行切片、索引器等访问

2.1:单列布尔选择,df[(df["列"]==条件)]选取某列满足一定条件的行

2.2:多列布尔选择,df[(df["列1"]==条件&df["列1"]>条件)]选取多列满足一定条件的行

3.筛选方式3:筛选器筛选

#在Pandas两种数据结构中,原始索引(位置信息)和自定义索引(标签信息)并存

#原始索引(位置信息):小标,即行数组0,1,2,3标号;列数组0,1,2,3标号

#自定义索引(标签信息):小标,即行数组0,1,2,3标号,列名(代码,资产,负债,所有者权益)

#loc索引器:只能使用自定义索引,如果数据中没有自定义索引,则使用原始索引。

#根据行索引和列索引进行选取:先行后列,也可以只选取行索引,

#常见形式如下 1.选择单行/多行数据;

2.选择多行多列数据,通过两个列表选取行列组合;

3.loc布尔选择,按照条件选取单列(多列)满足一定条件的行;

4.loc切片(选择连续的多行多列),通过切片选取连续的行列组合,冒号前后留空代表开口;

#iloc索引器:iloc索引器与loc索引器使用几乎相同。

#iloc索引器只能使用原始索引(位置信息),不能使用自定义索引

python 复制代码
import pandas as pd

#('----------筛选方式1:直接筛选-------------')
#直接筛选
#DataFrame索引使用[],
#直接索引语法:df[]

df1=pd.read_excel(r'C:\Benjamin\Benjamin\Benjamin\Python\Study_example\Demo_panada\demo1.4\TEST1.4.xlsx')
print('----------读取表格行,列-------------')
print(df1.shape)
print('----------读取表格行,列结束-------------')

print('----------读取表头(默认前5行)-------------')
print(df1.head())
print('----------读取表头结束-------------')

print('----------读取表尾(默认后5行)-------------')
print(df1.tail())
print('----------读取表尾结束-------------')
#print(old[''])

#1.4.1:直接筛选,选择单列数据:df["列"]
print('----------选择单列数据,比如:资产列-------------')
print(df1["资产"].head())
print('----------选择单列数据结束-------------')

#1.4.2:直接筛选,选择多列数据:df[["列1","列2"]](注意:多嵌套列)
print('----------选择多列数据,比如:资产列,负债列-------------')
print(df1[["资产","负债"]].head())
print('----------选择多列数据结束-------------')

#1.4.3:直接筛选,选择多行数据:df[2:4]按照位置选取连续的行(切片),前闭后开
print('----------选择多行数据,切片-------------')
print(df1[2:4])
print('----------选择多行数据结束-------------')


#('----------筛选方式2:条件筛选-------------')
#条件筛选
#布尔索引(带条件判断的索引):根据布尔条件选择对应的行
#索引列表中可以使用&、|操作符,但是不能用and、or关键词
#布尔选择的结果还是DataFrame,所以对于结果可以进行切片、索引器等访问

#1.5.1:单列布尔选择,df[(df["列"]==条件)]选取某列满足一定条件的行
print('----------选择满足条件的列,比如资产>130的行-------------')
print(df1[(df1["资产"]>130)])
print('----------选择多行数据结束-------------')


#1.5.2:多列布尔选择,df[(df["列1"]==条件&df["列1"]>条件)]选取多列满足一定条件的行
print('----------选择满足条件的列,比如资产>130的行-------------')
print(df1[(df1["资产"]>130)&(df1["负债"]<48)])
print('----------选择满足条件的行数据结束-------------')


#('----------筛选方式3:索引器筛选-------------')
#在Pandas两种数据结构中,原始索引(位置信息)和自定义索引(标签信息)并存
#原始索引(位置信息):小标,即行数组0,1,2,3标号;列数组0,1,2,3标号
#自定义索引(标签信息):小标,即行数组0,1,2,3标号,列名(代码,资产,负债,所有者权益)

#loc索引器:只能使用自定义索引,如果数据中没有自定义索引,则使用原始索引。
#根据行索引和列索引进行选取:先行后列,也可以只选取行索引,
#常见形式如下 1.选择单行/多行数据;
#             2.选择多行多列数据,通过两个列表选取行列组合;
#             3.loc布尔选择,按照条件选取单列(多列)满足一定条件的行;
#             4.loc切片(选择连续的多行多列),通过切片选取连续的行列组合,冒号前后留空代表开口;


#1.6.1:选择单行/多行数据:df.loc['行']、df.loc[['行1','行2']](注意:多嵌套列)
print('----------loc行名选择-------------')
print(df1.loc[1])
print(df1.loc[[1,3]])
print('----------选择多行数据结束-------------')

#1.6.2:选择多行/多列数据:df.loc[['行1','行2'],['列1','列2']](注意:多嵌套列)
print('----------loc行列选择-------------')
print(df1.loc[[1,2],["资产","负债"]])
print(df1.loc[[6,7],["资产","负债"]])
print('----------选择多行数据结束-------------')

#1.6.3:loc切片,(选择多行/多列数据):df.loc['行1':'行2','列1':'列2']
print('----------loc切片行列选择-------------')
print(df1.loc[1:4,:"负债"])
print(df1.loc[6:8,"资产":"负债"])
print('----------loc切片数据结束-------------')


#iloc索引器:iloc索引器与loc索引器使用几乎相同。
#iloc索引器只能使用原始索引(位置信息),不能使用自定义索引
print('----------iloc切片行列选择-------------')
print(df1.loc[1:4,:"负债"])
print(df1.iloc[1:4,:3])
print('----------iloc切片数据结束-------------')

输出结果:

----------读取表格行,列-------------

(40, 4)

----------读取表格行,列结束-------------

----------读取表头(默认前5行)-------------

代码 资产 负债 所有者权益

0 1 100 11 1111234

1 2 101 12 1111235

2 3 102 13 1111236

3 4 103 14 1111237

4 5 104 15 1111238

----------读取表头结束-------------

----------读取表尾(默认后5行)-------------

代码 资产 负债 所有者权益

35 36 135 46 1111269

36 37 136 47 1111270

37 38 137 48 1111271

38 39 138 49 1111272

39 40 139 50 1111273

----------读取表尾结束-------------

----------选择单列数据,比如:资产列-------------

0 100

1 101

2 102

3 103

4 104

Name: 资产, dtype: int64

----------选择单列数据结束-------------

----------选择多列数据,比如:资产列,负债列-------------

资产 负债

0 100 11

1 101 12

2 102 13

3 103 14

4 104 15

----------选择多列数据结束-------------

----------选择多行数据,切片-------------

代码 资产 负债 所有者权益

2 3 102 13 1111236

3 4 103 14 1111237

----------选择多行数据结束-------------

----------选择满足条件的列,比如资产>130的行-------------

代码 资产 负债 所有者权益

31 32 131 42 1111265

32 33 132 43 1111266

33 34 133 44 1111267

34 35 134 45 1111268

35 36 135 46 1111269

36 37 136 47 1111270

37 38 137 48 1111271

38 39 138 49 1111272

39 40 139 50 1111273

----------选择多行数据结束-------------

----------选择满足条件的列,比如资产>130的行-------------

代码 资产 负债 所有者权益

31 32 131 42 1111265

32 33 132 43 1111266

33 34 133 44 1111267

34 35 134 45 1111268

35 36 135 46 1111269

36 37 136 47 1111270

----------选择满足条件的行数据结束-------------

----------loc行名选择-------------

代码 2

资产 101

负债 12

所有者权益 1111235

Name: 1, dtype: int64

代码 资产 负债 所有者权益

1 2 101 12 1111235

3 4 103 14 1111237

----------选择多行数据结束-------------

----------loc行列选择-------------

资产 负债

1 101 12

2 102 13

资产 负债

6 106 17

7 107 18

----------选择多行数据结束-------------

----------loc切片行列选择-------------

代码 资产 负债

1 2 101 12

2 3 102 13

3 4 103 14

4 5 104 15

资产 负债

6 106 17

7 107 18

8 108 19

----------loc切片数据结束-------------

----------iloc切片行列选择-------------

代码 资产 负债

1 2 101 12

2 3 102 13

3 4 103 14

4 5 104 15

代码 资产 负债

1 2 101 12

2 3 102 13

3 4 103 14

----------iloc切片数据结束-------------

相关推荐
AIAdvocate1 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼1 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
redcocal4 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
artificiali4 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python
RaidenQ5 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
花生了什么树~.5 小时前
python基础知识(六)--字典遍历、公共运算符、公共方法、函数、变量分类、参数分类、拆包、引用
开发语言·python
Trouvaille ~5 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算
爆更小小刘5 小时前
Python基础语法(3)下
开发语言·python
哪 吒5 小时前
华为OD机试 - 第 K 个字母在原来字符串的索引(Python/JS/C/C++ 2024 E卷 100分)
javascript·python·华为od