pandas——数据筛选

读取数据的处理

访问某一列,使用dataframe数据的每一列的表头名 作为属性obj.表头名
中文作为属性也可以
例如,df.中国 等价于 df[‘中国’]
对于多列的访问,可以将一个列表作为参数放入中括号中

a=pd.read_excel(r'my_excel.xlsx',encoding='gbk')
print(a)
print(a.columns)
print('这是使用 =属性名称=访问一列===')
print(a.名字)		#这里使用中文作为属性也是可以的
print('这是使用 =索引名称=访问一列===')
print(a['名字'])		#使用中括号范文某一列
print(a[['名字','age']])	#这里需要注意的是,将一个列表作为了索引的参数
'''
   名字  age sex
0  王贵   24   男
1  狗子   35   男
2  黑蛋   23   女
3  小五    5   男
4  李四    6   男
5  小红    4   女
Index(['名字', 'age', 'sex'], dtype='object')
这是使用 =属性名称=访问一列===
0    王贵
1    狗子
2    黑蛋
3    小五
4    李四
5    小红
Name: 名字, dtype: object
这是使用 =索引名称=访问一列===
0    王贵
1    狗子
2    黑蛋
3    小五
4    李四
5    小红
Name: 名字, dtype: object
   名字  age
0  王贵   24
1  狗子   35
2  黑蛋   23
3  小五    5
4  李四    6
5  小红    4
'''

DataFrame数据对象的方法

df.loc[A,B ] 选择行和列(location)
loc works on labels in the index.

参数范围:使用df对象columns、index包含的标签范围内的变量筛选数据
A:行标签选择;B:列标签选择
A和B: 1.列表(表示某几个散列的行)、
2.切片类型(范围之间的数据)(不能是元组)
3.单独一个数值(某一行)
4.满足逻辑变量的行

如果对那行部分不需要做选择可以使用**冒号(:)**代替这部分。

a=pd.read_excel(r'my_excel.xlsx',encoding='gbk')
print(a)
print('这是==范围选择==之后的数据======')
print(a.loc[[0,2],'名字':'sex'])  
print('这是==逻辑判断==之后的数据======')
print(a.loc[a['名字']=='王贵',:])
'''
   名字  age sex
0  王贵   24   男
1  狗子   35   男
2  黑蛋   23   女
3  小五    5   男
4  李四    6   男
5  小红    4   女
6  王贵   24   男
这是==范围选择==之后的数据======
   名字  age sex
0  王贵   24   男
2  黑蛋   23   女
这是==逻辑判断==之后的数据======
   名字  age sex
0  王贵   24   男
6  王贵   24   男
'''
df.iloc[A,B ] (integer location)

参考:https://blog.csdn.net/zxyhhjs2017/article/details/82804758

iloc works on the positions in the index (so it only takes integers).

iloc()的两个参数全部只能是整数,表示数据的第几行和第几列
本质的区别
iloc函数参数,总是按照表中位置数据(第几行,第几列)选择数据
loc函数的参数值(对应的标签)
1.当df对象定义了columns和index的值时,只能是定义过的标签
2.当df对象未定义columns和index的值时默认数据第一行是 columnsindex是从0开始的一维数组
容易混淆的,
当未定义df的index时,iloc和loc函数的第一个参数都是数据,
loc[0:6,:]表示:第1行到第7行#访问标签
iloc[0:6,:]表示的是第1行到第6行#使用整型切片

a=pd.read_excel(r'my_excel.xlsx',encoding='gbk')
b=pd.read_excel(r'my_excel.xlsx',encoding='gbk')
b.index=['fir','sec','thre','fo','fi','six','sev']
print(a)
print('这是==a的loc==之后的数据======')
print(a.loc[0:2,'名字':'age']) 
print('这是==a的iloc==之后的数据======')
print(a.iloc[0:2,0:2])
print('!'*10+'这是添加了index后的b==')
print(b)
print('这是==b的loc==之后的数据======')
print(b.loc['fir':'sec','名字':'age']) 
print('这是==b的iloc==之后的数据======')
print(b.iloc[0:2,0:2])
'''
   名字  age sex
0  王贵   24   男
1  狗子   35   男
2  黑蛋   23   女
3  小五    5   男
4  李四    6   男
5  小红    4   女
6  王贵   24   男
这是==a的loc==之后的数据======
   名字  age
0  王贵   24
1  狗子   35
2  黑蛋   23
这是==a的iloc==之后的数据======
   名字  age
0  王贵   24
1  狗子   35
!!!!!!!!!!这是添加了index后==
      名字  age sex
fir   王贵   24   男
sec   狗子   35   男
thre  黑蛋   23   女
fo    小五    5   男
fi    李四    6   男
six   小红    4   女
sev   王贵   24   男
这是==b的loc==之后的数据======
     名字  age
fir  王贵   24
sec  狗子   35
这是==b的iloc==之后的数据======
     名字  age
fir  王贵   24
sec  狗子   35
'''
发布了70 篇原创文章 · 获赞 1 · 访问量 2434

猜你喜欢

转载自blog.csdn.net/weixin_43794311/article/details/104607022
今日推荐