【pandas05】变形

感谢datawhale开展的每月组队学习,教材ref: 第五章:变形

长宽表的变形

df.pivot()

在这里插入图片描述
datawhale这几个图解画的太优秀了!!爱了爱了

单列pivot操作

图片来自datawhale

多列pivot操作

图片来自datawhale

df.pivot_table()

在这里插入图片描述

df.melt()

在这里插入图片描述
图片来自datawhale

pd.wide_to_long()

在这里插入图片描述
图片来自datawhale

索引的变形

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

其他变形函数

在这里插入图片描述

练一练

Ex1:美国非法药物数据集

现有一份关于美国非法药物的数据集,其中 SubstanceName, DrugReports 分别指药物名称和报告数量:

In [63]: df = pd.read_csv('data/drugs.csv').sort_values([
   ....:      'State','COUNTY','SubstanceName'],ignore_index=True)
   ....: 

In [64]: df.head(3)
Out[64]: 
   YYYY State COUNTY  SubstanceName  DrugReports
0  2011    KY  ADAIR  Buprenorphine            3
1  2012    KY  ADAIR  Buprenorphine            5
2  2013    KY  ADAIR  Buprenorphine            4
  • 将数据转为如下的形式:
df.pivot_table(index = ['State','COUNTY','SubstanceName'],
               columns = 'YYYY',
               values = 'DrugReports',
               aggfunc='sum').reset_index()

在这里插入图片描述

  • 将第1问中的结果恢复为原表。
a.melt(id_vars=['State','COUNTY','SubstanceName'],
                value_vars=a.columns[-8:],
                var_name='YYYY',
                value_name='DrugReports').dropna(subset=['DrugReports'])
  • State 分别统计每年的报告数量总和,其中 State, YYYY 分别为列索引和行索引,要求分别使用 pivot_table 函数与 groupby+unstack 两种不同的策略实现,并体会它们之间的联系。
df.pivot_table(index='YYYY',
             columns='State',
             values='DrugReports',
             aggfunc='sum')

在这里插入图片描述

Ex2:特殊的wide_to_long方法

从功能上看, melt 方法应当属于 wide_to_long 的一种特殊情况,即 stubnames 只有一类。请使用 wide_to_long 生成 melt 一节中的 df_melted 。(提示:对列名增加适当的前缀)

In [65]: df = pd.DataFrame({'Class':[1,2],
   ....:                   'Name':['San Zhang', 'Si Li'],
   ....:                   'Chinese':[80, 90],
   ....:                   'Math':[80, 75]})
   ....: 

In [66]: df
Out[66]: 
   Class       Name  Chinese  Math
0      1  San Zhang       80    80
1      2      Si Li       90    75

啊?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值