天天看點

Pandas使用技巧-apply,條件篩選apply()批量資料處理條件篩選及缺失值處理拼接DataFrame

使用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