將不同的資料來源進行合併是資料處理中最常見的操作,包括將兩個不同資料集簡單地拼接,也包括處理有重疊欄位的資料集。series與dataframe都具備這類操作,pandas的函式與方法讓資料合併變得更加快速.
in [1] :import numpy as np
import pandas as pd
為了簡單起見,定義乙個能夠建立dataframe某種形式的函式:
in [2] :def make_df(cols,ind):
data =
return pd.dataframe(data, ind)
合併series與dataframe 與 numpy陣列基本相同。
in [3] :x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
in [4] :np.concatenate([x,y,z]) # np.concatenate((x,y,z)) 元組也可以
out[4] :array([1, 2, 3, 4, 5, 6, 7, 8, 9])
第乙個引數是需要合併的陣列或元組。還有乙個axis引數可以設定合併的座標軸方向。
in [4] :x = [[1,2],[3,4]]
in [5] :np.concatenate([x,x],axis=0) # 預設在行方向合併,也就是增加行
out[5] :array([[1, 2],
[3, 4],
[1, 2],
[3, 4]])
in [6] :np.concatenate([x,x],axis=1) # 在列方向合併,也就是增加列
out[6] :array([[1, 2, 1, 2],
[3, 4, 3, 4]])
pandas有乙個pd.concat()函式與np.concatenate()語法類似,pd.concat() 可以簡單地合併一維的series 或dataframe 物件,與np.concatenate() 合併陣列一樣:
in [7] :ser1 = pd.series(['a','b','c'],index=[1,2,3])
ser2 = pd.series(['d','e','f'],index=[4,5,6])
pd.concat([ser1,ser2],axis=0)
out[7] :
1 a
2 b
3 c
4 d
5 e
6 f
dtype: object
也可以用來合併高維資料,例如下面的dataframe:
in [8] :df1 = make_df('ab', [1, 2])
df2 = make_df('ab', [3, 4])
print(df1); print(df2); print(pd.concat([df1, df2]))
out[8] :
a b
1 a1 b1
2 a2 b2
a b
3 a3 b3
4 a4 b4
a b
1 a1 b1
2 a2 b2
3 a3 b3
4 a4 b4
預設情況下,dataframe 的合併都是逐行進行的,如果需要按列合併,將axis設定為1.
上面合併的dataframe 都是同樣的列名。而在實際工作中,需要合併的資料往往帶有不同的列名,而pd.concat 提供了一些選項來解決這類合併問題。看下面兩個dataframe,它們的列名部分相同,卻又不完全相同:
in [9] :df5 = make_df('abc',[1,2])
df6 = make_df('bcd',[3,4])
pd.concat([df5,df6])
out[9] :
a b c d
1 a1 b1 c1 nan
2 a2 b2 c2 nan
3 nan b3 c3 d3
4 nan b4 c4 d4
預設情況下,某個位置上缺失的資料會用nan 表示。如果不想這樣,可以用join 和join_axes 引數設定合併方式。預設的合併方式是對所有輸入列進行並集合並(join=『outer』),當然也可以用join=『inner』 實現對輸入列的交集合併:
in [10] :pd.concat([df5,df6],join='inner')
out[10] :
b c1 b1 c1
2 b2 c2
3 b3 c3
4 b4 c4
out[11] :
a b1 a1 b1
2 a2 b2
3 a3 b3
4 a4 b4
爬蟲 資料處理 pandas資料處理
使用duplicated 函式檢測重複的行,返回元素為布林型別的series物件,每個元素對應一行,如果該行不是第一次出現,則元素為true keep引數 指定保留哪一重複的行資料 dataframe替換操作 使用df.std 函式可以求得dataframe物件每一列的標準差 資料清洗清洗重複值 清...
pandas 資料處理
pandas中資料可以分為series,dataframe,panel分別表示一維至三維資料。其中在構造時,index表示行名,columns表示列名 構造方式 s pd.series data index index s pd series np random randn 5 index a b ...
pandas資料處理
dataframe.duplicated subset none,keep first 判斷dataframe中的資料是否有重複 必須一行中所有資料都重複才算重複,只能判斷行,不能判斷列 返回series dataframe.drop duplicates subset none,keep firs...