前面我們用pandas做了一些基本的操作,接下來進一步了解數據的操作,
數據清洗一直是數據分析中極為重要的一個環節。
數據合并
在pandas中可以通過merge對數據進行合并操作。
import numpy as npimport pandas as pddata1 = pd.DataFrame({'level':['a','b','c','d'], 'numeber':[1,3,5,7]})data2=pd.DataFrame({'level':['a','b','c','e'], 'numeber':[2,3,6,10]})print(data1)
結果為:
print(data2)
結果為:
print(pd.merge(data1,data2))
結果為:
可以看到data1和data2中用于相同標簽的字段顯示,而其他字段則被舍棄,這相當于SQL中做inner join連接操作。
此外還有outer,ringt,left等連接方式,用關鍵詞how的進行表示。
data3 = pd.DataFrame({'level1':['a','b','c','d'], 'numeber1':[1,3,5,7]})data4=pd.DataFrame({'level2':['a','b','c','e'], 'numeber2':[2,3,6,10]})print(pd.merge(data3,data4,left_on='level1',right_on='level2'))
結果為:
兩個數據框中如果列名不同的情況下,我們可以通過指定letf_on 和right_on兩個參數把數據連接在一起
print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left'))
結果為:
其他詳細參數說明
重疊數據合并
有時候我們會遇到重疊數據需要進行合并處理,此時可以用comebine_first函數。
data3 = pd.DataFrame({'level':['a','b','c','d'], 'numeber1':[1,3,5,np.nan]}) data4=pd.DataFrame({'level':['a','b','c','e'], 'numeber2':[2,np.nan,6,10]}) print(data3.combine_first(data4))
結果為:
可以看到相同標簽下的內容優先顯示data3的內容,如果一個數據框中的某一個數據是缺失的,此時另外一個數據框中的元素就會補上
這里的用法類似于np.where(isnull(a),b,a)
數據重塑和軸向旋轉
這個內容我們在上一篇pandas文章有提到過。數據重塑主要使用reshape函數,旋轉主要使用unstack和stack兩個函數。
data=pd.DataFrame(np.arange(12).reshape(3,4), columns=['a','b','c','d'], index=['wang','li','zhang'])print(data)
結果為:
新聞熱點
疑難解答