📅  最后修改于: 2023-12-03 15:19:16.412000             🧑  作者: Mango
Pandas是Python中广泛使用的数据分析库,提供了丰富的数据操作函数和工具。其中Pandas.melt()
函数是一种数据转换函数,可以将宽格式数据(wide-form data)转换为长格式数据(long-form data)。在这个过程中,数据的行标签和某些列标签会被保留,而其他列标签会被展开成行数据的值。
Pandas.melt()
函数的一般用法如下:
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
参数说明:
frame
: 数据源,必填。可以是Pandas中的DataFrame或Series,也可以是其他类似数据结构。id_vars
: 保留的列标签,选填。默认为None
。如果指定了该参数,那么相应的列标签会被保留在转换后的数据中,而不会被展开成行数据的值。可以传入单个列标签的字符串、列标签列表或者列标签元组。value_vars
: 要展开的列标签,选填。默认为None
,表示展开所有未被保留的列标签。可以传入单个列标签的字符串、列标签列表或者列标签元组。var_name
: 展开列标签后存放在值列中的列标签,选填。默认为None
,表示使用原列标签名作为值列的名称。value_name
: 值列的名称,选填。默认为value
。col_level
: 如果数据源是一个多层级索引的DataFrame,则指定需要转换的层级,选填。默认为None
。下面是一个简单的例子,以说明Pandas.melt()
的用法:
import pandas as pd
# 创建数据源
df = pd.DataFrame({
'country': ['China', 'Japan', 'India'],
'2016': [1376048943, 126994511, 1339180127],
'2017': [1380036000, 126785797, 1352617328],
'2018': [1386395000, 126529100, 1366417756]
})
# 转换数据
result = pd.melt(df, id_vars=['country'], var_name='year', value_name='population')
# 输出结果
print(result)
输出:
country year population
0 China 2016 1376048943
1 Japan 2016 126994511
2 India 2016 1339180127
3 China 2017 1380036000
4 Japan 2017 126785797
5 India 2017 1352617328
6 China 2018 1386395000
7 Japan 2018 126529100
8 India 2018 1366417756
在这个例子中,我们创建了一个DataFrame,其中每行表示一个国家在某一年的人口数量。这是一个典型的宽格式数据。我们使用Pandas.melt()
将其转换为长格式数据,其中每行表示一个国家在某一年的人口数量,共有三个列:国家、年份和人口数量。
我们在调用Pandas.melt()
时指定了frame
参数为df
,即数据源。id_vars
参数指定了要保留的列标签为['country']
,它们不会被展开成行数据的值。var_name
参数指定了展开后的列标签要放在值列中,并命名为'year'
。value_name
参数指定了生成的值列要命名为'population'
。
这样,在这些参数的配合下,我们成功地将宽格式数据转换为了长格式数据。
Pandas.melt()
函数是Pandas中非常实用的数据转换函数,可以将宽格式数据转换为长格式数据。通过使用它,我们可以很方便地进行数据分析和可视化处理。