使用Pandas的技巧就是熟悉Pandas的函數庫,在資料處理過程中盡量使用Pandas方法。
Pandas支援類似SQL的語句,适合對二維表格資料進行處理。
apply()批量資料處理
import pandas as pd
In [4]: data = [{'A': i, 'B': 2*i} for i in range(1, 8, 2)]
In [5]: data
Out[5]: [{'A': 1, 'B': 2}, {'A': 3, 'B': 6}, {'A': 5, 'B': 10}, {'A': 7, 'B': 14}]
In [6]: data = pd.DataFrame(data) # 建立DataFrame對象
In [7]: data
Out[7]:
A B
0 1 2
1 3 6
2 5 10
3 7 14
# 取出某一列
In [8]: data['B']
Out[8]:
0 2
1 6
2 10
3 14
Name: B, dtype: int64
# 單列批處理
# 可以自定義函數
def function():
pass
data['B'].apply(function)
In [9]: data['B'].apply(lambda x: x/2)
Out[9]:
0 1.0
1 3.0
2 5.0
3 7.0
Name: B, dtype: float64
# 按行批處理
In [10]: data.apply(lambda row:row['A'] + row['B'], axis=1)
Out[10]:
0 3
1 9
2 15
3 21
dtype: int64
# 全體批處理
In [11]: data.apply(lambda x: x/2)
Out[11]:
A B
0 0.5 1.0
1 1.5 3.0
2 2.5 5.0
3 3.5 7.0
條件篩選及缺失值處理
In [20]: data = [{'A': i, 'B': 2*i} for i in range(1, 8, 2)]
In [21]: data = pd.DataFrame(data) # 建立DataFrame對象
In [22]: data
Out[22]:
A B
0 1 2
1 3 6
2 5 10
3 7 14
# 首先判斷True或False,然後選出值為True的資料
In [23]: data[data['A']>4]
Out[23]:
A B
2 5 10
3 7 14
In [25]: data[(data['A']>4) & (data['B']<12)]
Out[25]:
A B
2 5 10
In [12]: data.where(data>5)
Out[12]:
A B
0 NaN NaN
1 NaN 6.0
2 NaN 10.0
3 7.0 14.0
# 直接删除含有缺失值的資料行
In [13]: data.where(data>5).dropna()
Out[13]:
A B
3 7.0 14.0
# 對缺失值進行指派填充
In [14]: data.where(data>5).fillna({'A':1, 'B':2})
Out[14]:
A B
0 1.0 2.0
1 1.0 6.0
2 1.0 10.0
3 7.0 14.0
拼接DataFrame
# 建立包含3個DataFrame的清單
In [15]: data = [data for i in range(3)]
# 豎向拼接
In [17]: pd.concat(data)
Out[17]:
A B
0 1 2
1 3 6
2 5 10
3 7 14
0 1 2
1 3 6
2 5 10
3 7 14
0 1 2
1 3 6
2 5 10
3 7 14
# 橫向拼接
In [18]: pd.concat(data, axis=1)
Out[18]:
A B A B A B
0 1 2 1 2 1 2
1 3 6 3 6 3 6
2 5 10 5 10 5 10
3 7 14 7 14 7 14