Pandas資料處理之合併資料集

2021-09-24 17:31:57 字數 2496 閱讀 1350

將不同的資料來源進行合併是資料處理中最常見的操作,包括將兩個不同資料集簡單地拼接,也包括處理有重疊欄位的資料集。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...