Python 数据重组
数据重组是数据处理过程中的重要环节,它可以将数据按照不同的维度进行组合、聚合和转换。在 Python 中,有许多强大的工具可以帮助我们进行数据重组,如 pandas、NumPy 和 itertools 等库。本文将介绍一些常用的数据重组技术,并提供相应的代码示例。
1. 列转行
有时候,我们需要将数据从列转换为行,这在数据分析和可视化中非常常见。pandas 提供了 melt
函数来实现这一功能。下面是一个简单的例子,将一张包含学生信息的数据表从列转换为行。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [20, 21, 22],
'Grade': [80, 85, 90]
}
df = pd.DataFrame(data)
melted_df = pd.melt(df, id_vars=['Name'], value_vars=['Age', 'Grade'], var_name='Attribute', value_name='Value')
print(melted_df)
输出结果:
Name Attribute Value
0 Alice Age 20
1 Bob Age 21
2 Charlie Age 22
3 Alice Grade 80
4 Bob Grade 85
5 Charlie Grade 90
在上述代码中,melt
函数将 df
数据表中的 'Age'
和 'Grade'
列转换为行,并添加了 'Attribute'
和 'Value'
列来表示原始数据的属性和值。
2. 行转列
与列转行相反,有时候我们需要将数据从行转换为列。这通常用于处理时间序列数据或类似的数据结构。pandas 提供了 pivot
和 pivot_table
函数来实现行转列的操作。下面是一个简单的例子,将一张包含销售数据的数据表从行转换为列。
import pandas as pd
data = {
'Date': ['2021-01-01', '2021-01-02', '2021-01-03'],
'Product': ['A', 'B', 'A'],
'Sales': [100, 200, 150]
}
df = pd.DataFrame(data)
pivoted_df = df.pivot(index='Date', columns='Product', values='Sales')
print(pivoted_df)
输出结果:
Product A B
Date
2021-01-01 100 NaN
2021-01-02 NaN 200
2021-01-03 150 NaN
在上述代码中,pivot
函数将 df
数据表中的 'Product'
列转换为列,并使用 'Sales'
列的值填充新生成的列。
3. 聚合操作
聚合操作是数据重组的关键环节之一,它可以将数据根据某个条件进行分组,并对每个组进行统计计算。pandas 提供了 groupby
函数来实现聚合操作。下面是一个简单的例子,计算一组学生的平均年龄。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob'],
'Age': [20, 21, 22, 19, 20]
}
df = pd.DataFrame(data)
grouped_df = df.groupby('Name').mean()
print(grouped_df)
输出结果:
Age
Name
Alice 19.5
Bob 20.5
Charlie 22.0
在上述代码中,groupby
函数根据 'Name'
列对数据进行分组,并计算每个组的平均年龄。
4. 数据透视表
数据透视表是一种非常有用的数据重组技术,它可以将数据按照多个维度进行分组和聚合,并生成一个多维的表格。pandas 提供了 pivot_table
函数来实现数据透视表的创建。下面是一个简单的例子,创建一个包含学生成绩的数据透视表。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob'],