分享

pandas基础:数据显示格式转换

 hercules028 2022-06-20 发布于四川
excelperfect

标签:pandasmelt()方法

有时,我们可能需要将pandas数据框架从宽(wide)格式转换为长(long)格式,这可以通过使用melt方法轻松完成。本文通过一个简单的示例演示如何使用melt方法。
图片
1

考虑以下示例数据集:一个表,其中包含4个国家前6个月的销售数据。然后,我们的目标是将格式转换为格式,如上图1所示。
import pandas as pd
import numpy as np

np.random.seed(0)

sales = pd.DataFrame({
'country':['Canada','UK','USA','Australia'],
'Jan':np.random.randint(1,100,size=(4)),
'Feb':np.random.randint(1,1000,size=(4)),
'Mar':np.random.randint(1,1000,size=(4)),
'Apr':np.random.randint(1,1000,size=(4)),
'May':np.random.randint(1,1000,size=(4)),
'Jun':np.random.randint(1,1000,size=(4)),
})

print(sales)

图片
2

melt()方法语法
pd.melt(dataframe, id_vars=None, value_vars=None, var_name=None, value_name=’value’, col_level=None, ignore_index=True)

其中,
  • id_vars:列名的列表/元组。这是为了指定要用作标识符变量的列。
  • value_vars:列名的列表/元组。要取消填充的列,留空意味着使用除id_vars之外的所有列。
  • var_name:字符串。“variable”列的列名。
  • value_name:字符串。”value”列的列名。

pandas数据框架从宽格式转换为长格式
使用“country”列作为标识符变量id_vars。在第一行代码中,将value_vars留空,实际上是在说:使用除“country”之外的所有列。因此,它相当于下面的第二行代码。
pd.melt(sales, id_vars = 'country')

##下面的代码是等价的
pd.melt(sales, id_vars = 'country', value_vars = ['Jan','Feb','Mar','Apr','May','Jun'])

图片
3

结果看起来不错。但是,注意到列标题中的一个小问题——“variable”“value”列的描述性不强。我们想把它们分别改为“Month”“Sales”

可以使用df.rename()方法来实现。然而,通过利用melt()方法里的var_namevalue_name参数更容易。
pd.melt(sales, id_vars = 'country',var_name='Month',value_name='Sales')

图片
4

注:本文学习整理自pythoninoffice.com,供有兴趣的朋友学习参考。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多