3-10 Pandas的数据规整
生活随笔
收集整理的這篇文章主要介紹了
3-10 Pandas的数据规整
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據分析工具pandas
- 10. Pandas的數據規整
- 10.1 層次化索引
- 10.2 數據連接
- 10.2.1 pd.merge
- 10.2.2 pd.concat
- 10.3 重塑
- 10.3.1 stack
- 10.3.2 unstack
- 10.4 軸向旋轉
Pandas是一個強大的分析結構化數據的工具集,基于NumPy構建,提供了 高級數據結構和 數據操作工具,它是使Python成為強大而高效的數據分析環境的重要因素之一
(1) 一個強大的分析和操作大型結構化數據集所需的工具集
(2) 基礎是NumPy,提供了高性能矩陣的運算
(3) 提供了大量能夠快速便捷地處理數據的函數和方法
(4)應用于數據挖掘,數據分析
(5)提供數據清洗功能
10. Pandas的數據規整
10.1 層次化索引
Pandas的層次化索引簡述,包括層級索引簡介、內外層選取、交換等
#層次化索引 import numpy as np import pandas as pd data = pd.Series(np.random.randn(9),index=[['a','a','a','b','b','c','c','d','d'],[1,2,3,3,1,2,2,2,3]]) #內外層選取 data['b':'c'] data.loc[['b','d']] data.loc[:,2]frame = pd.DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','two'],'d':[0,1,2,0,1,2,3]}) #結果為: # a b c d #0 0 7 one 0 #1 1 6 one 1 #2 2 5 one 2 #3 3 4 two 0 #4 4 3 two 1 #5 5 2 two 2 #6 6 1 two 3 frame #指定列轉換為層次化索引 frame2 = frame.set_index(['c','d']) #結果為: # a b #c d #one 0 0 7 # 1 1 6 # 2 2 5 #two 0 3 4 # 1 4 3 # 2 5 2 # 3 6 1 frame2#指定列轉換為層次化索引,不刪除指定列 #結果為: # a b c d #c d #one 0 0 7 one 0 # 1 1 6 one 1 # 2 2 5 one 2 #two 0 3 4 two 0 # 1 4 3 two 1 # 2 5 2 two 2 # 3 6 1 two 3 frame.set_index(['c','d'],drop=False)#消除層級索引 #結果為: # c d a b #0 one 0 0 7 #1 one 1 1 6 #2 one 2 2 5 #3 two 0 3 4 #4 two 1 4 3 #5 two 2 5 2 #6 two 3 6 1 frame2.reset_index()10.2 數據連接
10.2.1 pd.merge
pd.merge(left,right,how=‘inner’,on=None,left_on=None,right_on=None):根據單個或多個鍵將不同DataFrame的行連接起來,類似數據庫的連接操作。
- left:合并時左邊的DataFrame
- right:合并時右邊的DataFrame
- how:合并的方式默認’inner’,‘outer’,‘left’,‘right’
- on:需要合并的列名,必須兩邊都有的列名,并以left和right中的列名的交集作為連接鍵
- left_on:left DataFrame中用作連接鍵的列
- right_on:right DataFrame中用作連接鍵的列
10.2.2 pd.concat
沿著軸方向將多個對象合并到一起
(1)注意指定軸方向,默認axis=0
(2)join指定合并方式,默認為outer
(3) Series合并時查看行索引有無重復
10.3 重塑
10.3.1 stack
(1) 將列索引旋轉為行索引,完成層級索引
(2)DataFrame -> Series
10.3.2 unstack
(1)將層級索引展開
(2)Series -> DataFrame
(3)默認操作內層索引(即level=-1),可通過設置level指定操作索引的級別
10.4 軸向旋轉
#軸向旋轉 df3 = pd.DataFrame({'date':['2018-11-22','2018-11-22','2018-11-23','2018-11-23','2018-11-24'],'class':['a','b','b','c','c'],'values':[5,3,2,6,1]},columns=['date','class','values']) # date class values #0 2018-11-22 a 5 #1 2018-11-22 b 3 #2 2018-11-23 b 2 #3 2018-11-23 c 6 #4 2018-11-24 c 1 df3#結果為: #class a b c # date # 2018-11-22 5.0 3.0 NaN # 2018-11-23 NaN 2.0 6.0 # 2018-11-24 NaN NaN 1.0 df3.pivot('date','class','values')#結果為: # values #class a b c # date # 2018-11-22 5.0 3.0 NaN # 2018-11-23 NaN 2.0 6.0 # 2018-11-24 NaN NaN 1.0 df3.set_index(['date','class']).unstack('class')總結
以上是生活随笔為你收集整理的3-10 Pandas的数据规整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS 送审浅谈:1.4.1、2.1、2
- 下一篇: R语言中如何编写自己的函数初步入门