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