【pandas】第五章 變形

阿芒Aris發表於2020-12-29

【pandas】第五章 變形

Datawhale的pandas學習的開源地址:Joyful Pandas
https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch1.html

歡迎大家關注瞭解Datawhale :)


一、長寬表的變形

長寬表定義:針對某一特徵A(A可取a1、a2),注意區分對應值即可
 長表=列名為A,值為a1、a2
 寬表=列名為a1,值為B;列名為a2,值為B
示例,如下圖
在這裡插入圖片描述

1. pivot 長表2寬表

使用方法:df.pivot(index=‘行索引’, columns=‘列名’, values=‘列下的值’)

注意:上面三個引數可以是列表,且要求原dataframe滿足唯一性(行索引,列名組成的元組唯一,否則value不知填啥)
教程示例:

df.pivot(index='Name', columns='Subject', values='Grade')

在這裡插入圖片描述

2. pivot_table 長表2寬表

pivot缺點:需滿足唯一性,因此有pivot_table來實現聚合(函式)

使用方法:df.pivot_table(index=‘行索引’, columns=‘列名’, values=‘列下的值’,aggfunc=‘函式’,margins=True)

教程示例
在這裡插入圖片描述

3. melt 寬表2長表

使用方法:
df.melt(id_vars = 索引列名,value_vars = 需要列變行的列名,var_name = 列變行形成的列名,value_name = 列變行的取值的列名)

在這裡插入圖片描述

在這裡插入圖片描述

4. wide_to_long

使用方法:
pd.wide_to_long(df, stubnames=[‘Grade’, ‘rank’],
i = [‘Class’, ‘Name’],
j = ‘Examination’,
sep = ‘_’,
suffix = ‘.+’)

在這裡插入圖片描述

二、索引的變形

1. stack與unstack

unstack 的作用是把行索引轉為列索引
stack 的作用就是把列索引的層壓入行索引

使用方法:
df.unstack(2) :2為第二層,預設為最內層
df.stack([1,2]) :將第1,2層的列索引變為行索引

三、其他變形函式

1. crosstab

可用pivot_table代替

2. explode

explode 引數能夠對某一列的元素進行縱向的展開

使用方法:df.explode(‘列名’)

在這裡插入圖片描述

3. get_dummies

對某一列做one-hot

相關文章