【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
示例,如下图
【pandas】第五章 变形_Pandas

1. pivot 长表2宽表

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

注意:上面三个参数可以是列表,且要求原dataframe满足唯一性(行索引,列名组成的元组唯一,否则value不知填啥)
教程示例:

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

【pandas】第五章 变形_Python开发_02

2. pivot_table 长表2宽表

pivot缺点:需满足唯一性,因此有pivot_table来实现聚合(函数)

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

教程示例
【pandas】第五章 变形_Python开发_03

3. melt 宽表2长表

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

【pandas】第五章 变形_Pandas_04

【pandas】第五章 变形_Pandas_05

4. wide_to_long

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

【pandas】第五章 变形_Python开发_06

二、索引的变形

1. stack与unstack

unstack 的作用是把行索引转为列索引
stack 的作用就是把列索引的层压入行索引

使用方法:
df.unstack(2) :2为第二层,默认为最内层
df.stack([1,2]) :将第1,2层的列索引变为行索引

三、其他变形函数

1. crosstab

可用pivot_table代替

2. explode

explode 参数能够对某一列的元素进行纵向的展开

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

【pandas】第五章 变形_Python开发_07

3. get_dummies

对某一列做one-hot