📅  最后修改于: 2023-12-03 15:40:02.219000             🧑  作者: Mango
在数据分析中,数据透视表是一种强大的工具,用于聚合和分析大型数据集。然而,在创建数据透视表时,常常会遇到一些 NaN 值。NaN 值是表示缺失值的特殊值,在数据分析中很常见。本文介绍如何使用 Pandas 库中的 pivot_table() 函数创建数据透视表,并保留 NaN 值。
Pandas 是 Python 中一个强大的数据分析库,其中包含了用于创建数据透视表的函数 pivot_table()。下面是一个示例数据集,用于演示如何创建数据透视表。
import pandas as pd
data = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Gender': ['F', 'M', 'M', 'M', 'F'],
'Age': [18, 24, 23, 36, 29],
'Height': [1.65, 1.75, 1.80, 1.80, 1.70],
'Weight': [45, 70, 80, 75, 55],
'Salary': [2500, 3500, 5000, 4500, 4000]
})
这是一个包含了员工姓名、性别、年龄、身高、体重和薪水的数据集。
使用 pivot_table() 函数创建数据透视表:
pivot = data.pivot_table(
index=['Gender'],
values=['Age', 'Height', 'Weight', 'Salary'],
aggfunc={'Age': 'mean', 'Height': 'mean', 'Weight': 'sum', 'Salary': 'sum'}
)
结果输出:
Age Height Salary Weight
Gender
F 23.50 1.675000 6500 100
M 27.67 1.783333 13000 225
可以看到,数据透视表按性别分类,重点关注了年龄、身高、体重和薪水。平均年龄和身高已计算,总体重和总薪水已汇总。
然而,在实际的数据集中,常常出现缺失值。默认情况下,pivot_table() 函数会将缺失值替换为 0。如果需要保留 NaN 值,需要将 fill_value 参数设置为 np.nan。
import numpy as np
data = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Gender': ['F', 'M', 'M', 'M', 'F'],
'Age': [18, np.nan, 23, 36, np.nan],
'Height': [1.65, 1.75, 1.80, np.nan, 1.70],
'Weight': [45, 70, 80, 75, np.nan],
'Salary': [2500, 3500, 5000, 4500, 4000]
})
pivot = data.pivot_table(
index=['Gender'],
values=['Age', 'Height', 'Weight', 'Salary'],
aggfunc={'Age': 'mean', 'Height': 'mean', 'Weight': 'sum', 'Salary': 'sum'},
fill_value=np.nan
)
print(pivot)
输出结果:
Age Height Salary Weight
Gender
F 18.00 1.675000 6500 45.0
M 29.50 1.766667 13000 225.0
可以看到,仅保留了数据透视表中存在的值,NaN 值被保留在表格中。
通过使用 pivot_table() 函数创建数据透视表,可以轻松地聚合和分析大型数据集。可以设置 fill_value 参数来保留 NaN 值。Pandas 提供了丰富的函数和工具,用于数据分析和处理。