大家好,在数据处理与分析中,经常遇到数据需要进行格式转换的情况,例如将数据从宽表格式转换为长表格式,或将数据重新分组汇总。Pandas提供了丰富的reshape操作,尤其是melt
和pivot
这两个函数,使得DataFrame可以在宽表与长表之间高效转换。通过合理使用melt
和pivot
,可以在数据清洗、特征工程等环节中极大地提升工作效率。
1. melt操作:宽表转换为长表
1.1 melt的基本语法
在Pandas中,melt
和pivot
函数用于重塑DataFrame的结构,melt
用于将宽表格式转换为长表格式,通常用于将多列数据合并到一列中,pivot
用于将长表格式转换为宽表格式,通常用于将唯一值展开为多列。
melt
函数的基本语法如下:
pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value')
frame
:要转换的DataFrame。
id_vars
:不需要被转换的列,这些列将在转换后的DataFrame中保持不变。
value_vars
:需要被转换的列,默认会转换除id_vars
以外的所有列。
var_name
:在转换后的DataFrame中,新列的列名,表示变量名。
value_name
:在转换后的DataFrame中,新列的列名,表示变量值。
1.2 将宽表转换为长表
以下是一个包含学生成绩的宽表数据,希望将其转换为长表格式,以便分析各科成绩。
import pandas as pd
# 创建示例数据
data = {
'姓名': ['Alice', 'Bob', 'Charlie'],
'数学': [85, 90, 95],
'英语': [78, 82, 88],
'物理': [92, 87, 94]
}
df = pd.DataFrame(data)
print("原始数据:\n", df)
原始数据如下:
姓名 数学 英语 物理
0 Alice 85 78 92
1 Bob 90 82 87
2 Charlie 95