python-pandas-dataframe-数据处理(选择,空值处理)


1.dataframe可以看数据库里面的一张table

2.更注重于行的筛选,对于列可以看做是属性

3.所以有dataframe.colname,dataframe[:,colname]来提取整个列的操作

都是先行后列

4.利用标签来选择特定的行列dataframe.loc[rowname,colname]

5.默认是对于行进行筛选,所以dataframe.loc[:3],进行切片的时候是默认切行

6.要是想把列加上应该这么写dataframe.loc[rowrange,colrange](标签筛选)

7.还有一个选取是datafram.iloc[](坐标筛选)

8.接下来是条件筛选:本质上就是将判断的结果扩展到对象中的每一个元素:dataframe[]

时刻记住是默认对行进行筛选!

比如

 

.ipynb

 

 

In [14]:
import pandas as pd
In [15]:
import numpy as np
In [22]:
df=pd.DataFrame(np.random.randn(6,6),columns=['a','b','c','d','e','f'])
In [28]:
df
Out[28]:
 
 
 
 
 
 
  a b c d e f
0 0.900993 -0.138740 0.802412 0.538833 2.227220 -0.284986
1 0.258847 0.604430 0.393389 -1.302650 1.517982 -0.699211
2 0.705676 -0.258530 0.788059 -0.323895 0.581658 0.689732
3 1.900100 -1.711729 0.040754 -0.798442 0.628421 -0.710979
4 -0.865565 -1.888664 -1.895750 1.241144 -0.697723 -0.593916
5 -0.789671 -0.370566 -0.210978 1.873560 -0.448096 -1.785732
In [26]:
df['b']>0
Out[26]:
0    False
1     True
2    False
3    False
4    False
5    False
Name: b, dtype: bool
In [34]:
#这里只会保留是true的行
In [29]:
df.loc[1]>0
Out[29]:
a     True
b     True
c     True
d    False
e     True
f    False
Name: 1, dtype: bool
In [ ]:
#这里只会保留是true的列
In [33]:
df.loc[:,(df.loc[1]>0)&(df.loc[3]>0)]
Out[33]:
 
  a c e
0 0.900993 0.802412 2.227220
1 0.258847 0.393389 1.517982
2 0.705676 0.788059 0.581658
3 1.900100 0.040754 0.628421
4 -0.865565 -1.895750 -0.697723
5 -0.789671 -0.210978 -0.448096
In [ ]:
 
 
 
 
 
 
 

注意,用数据库里数据表的角度来看dataframe而不是把它简单地看成一个二维数据组

还有一种选择(逻辑判断)数据的方法: df=df[df['satisfaction_level']<=1][df['salary']!='nme'][df['department']!='sale']

df[df['time']>20],比较运算符可以有:>,<,>=,<=,==.筛选出所有time属性大于20的行(元组)

df[(df['time']>20|(df['distance']<100)],可以搭配逻辑运算符,来筛选行

df[['time','distance']][df['year']>14],在指定多列(多个列用列表表示)里面筛选行 也可用df.loc[df['year']>14,(['time','distance'])]

选择某列等于多个值时(筛选列):df[df['time'].isin([12,13,14])]

模糊筛选:df.loc[df['time'].str.contains('45')] 这里只能用df.loc。另外,可以使用| 来进行多个条件的筛选。这里是匹配开头。 df.loc[(df['区域'.str.contains('华东|北')])& (df['单价'>1500]).sort_values(by='单价')(这里匹配以华东和北开头的字符串)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM