數據分析之Pandas-02多層次化索引和拼接

01-Pandas層次化索引

創建多層索引

1.隱式構造
Series也可以創建多層索引

df = DataFrame(np.random.rand(4,2),
               index=[['a','a','b','b'],[1,2,1,2]],
              columns=['data1','data2'])
df

2.顯示構造(Multilndex)
- pd.MultiIndex.from_arrays
- pd.MultiIndex.from_tuples
- pd.MultiIndex.from_product

多層索引

除了行索引index,列索引columns也能用同樣的方法創建多層索引

多層索引對象的索引與切片操作

Series的操作:

【重要】對於Series來說,直接中括號[]與使用.loc()完全一樣,因此,推薦使用中括號索引和切片

DataFrame的操作:

  1. 可以直接使用列名稱來進行列索引.
  2. 使用行索引需要用ix(),loc()等函數
    【極其重要】推薦使用loc()函數.
  3. 注意在對行索引的時候,若一級行索引還有多個,對二級行索引會遇到問題!也就是說,無法直接對二級索引進行索引,必須讓二級索引變成一級索引後才能對其進行索引!

索引的堆(unstack)

【小技巧】使用unstack()的時候,level等於哪一個,哪一個就消失,出現在列裏

聚合操作

【注意】
需要指定level
【小技巧】和unstack()相反,聚合的時候,level等於哪一個,哪一個就保留

02-Pandas拼接操作

級聯

使用pd.concat()級聯

簡單級聯:

df1 = make_df('AB',[1,2])
df2 = make_df('AB',[3,4])
display(df1,df2,pd.concat([df1,df2]))

不匹配級聯:

不匹配指的是級聯的維度的索引不一致。例如縱向級聯時列索引不一致,橫向級聯時行索引不一致

使用pd.appnd() 級聯:

由於在後面級聯的使用非常普遍,因此有一個函數append專門用於在後面添加

合併

使用pd.merge()合併
1. 一對一合併
1. 多對一合併
1. 多對多合併
1. key的規範化
- 使用on=顯式指定哪一列爲key
- 使用left_on和right_on指定左右兩邊的列作爲key
1. 內合併和外合併
- 內合併:只保留兩者都有的key(默認模式)
- 外合併 how=’outer’:補NaN
- 左合併、右合併:how=’left’,how=’right’
1. 列的衝突解決
- 當列衝突時,即有多個列名稱相同時,需要使用on=來指定哪一個列作爲key

發佈了48 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章