📜  在 Pandas 中从宽变长 - Python (1)

📅  最后修改于: 2023-12-03 15:23:14.679000             🧑  作者: Mango

在 Pandas 中从宽变长 - Python

在数据处理中,经常需要将宽格式的数据转换为长格式的数据。在 Pandas 中,我们可以使用 melt() 函数来完成这一操作。

理解宽格式和长格式

在宽格式中,同一行中可能会包含多种信息,例如以下表格:

| 城市 | 2019年1月 | 2019年2月 | 2019年3月 | |------|-----------|-----------|-----------| | 北京 | 1000 | 2000 | 1500 | | 上海 | 800 | 1700 | 1300 |

在上面的表格中,每个城市有三个月的数据,每个月的数据都在同一行中。这种格式适合于直观地查看每个城市的数据,但不太方便进行数据分析。

相比之下,在长格式中,每个城市每个月的数据都在单独的一行中,例如以下表格:

| 城市 | 月份 | 销售额 | |------|------|--------| | 北京 | 1月 | 1000 | | 北京 | 2月 | 2000 | | 北京 | 3月 | 1500 | | 上海 | 1月 | 800 | | 上海 | 2月 | 1700 | | 上海 | 3月 | 1300 |

这种格式适合进行数据分析,比如可以方便地进行时间序列分析。

使用 melt() 函数实现宽变长

Pandas 中的 melt() 函数可以将宽格式的数据转换为长格式。下面是一个使用示例:

import pandas as pd

df_wide = pd.DataFrame({'city': ['北京', '上海'],
                        '2019年1月': [1000, 800],
                        '2019年2月': [2000, 1700],
                        '2019年3月': [1500, 1300]})

df_long = pd.melt(df_wide, id_vars=['city'], var_name='month', value_name='sales')

print(df_long)

在上面的示例中,我们首先创建了一个宽格式的表格 df_wide,然后使用 melt() 函数将其转换为长格式的表格 df_long。其中:

  • id_vars 参数指定了需要保留在长格式中的列,这里是 'city';
  • var_name 参数指定了在长格式中用于存储原来的列名的列名,这里是 'month';
  • value_name 参数指定了在长格式中用于存储原来的值的列名,这里是 'sales'。

运行以上代码,输出 df_long 结果如下:

  city     month  sales
0   北京  2019年1月   1000
1   上海  2019年1月    800
2   北京  2019年2月   2000
3   上海  2019年2月   1700
4   北京  2019年3月   1500
5   上海  2019年3月   1300
总结

在 Pandas 中,使用 melt() 函数可以把宽格式的数据转换为长格式的数据,方便进行数据分析。