📅  最后修改于: 2023-12-03 15:23:14.679000             🧑  作者: Mango
在数据处理中,经常需要将宽格式的数据转换为长格式的数据。在 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 |
这种格式适合进行数据分析,比如可以方便地进行时间序列分析。
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。其中:
运行以上代码,输出 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() 函数可以把宽格式的数据转换为长格式的数据,方便进行数据分析。