📜  数据透视表但保留 nan - Python (1)

📅  最后修改于: 2023-12-03 15:40:02.219000             🧑  作者: Mango

数据透视表但保留 NaN - Python

在数据分析中,数据透视表是一种强大的工具,用于聚合和分析大型数据集。然而,在创建数据透视表时,常常会遇到一些 NaN 值。NaN 值是表示缺失值的特殊值,在数据分析中很常见。本文介绍如何使用 Pandas 库中的 pivot_table() 函数创建数据透视表,并保留 NaN 值。

Pandas 数据透视表

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

可以看到,数据透视表按性别分类,重点关注了年龄、身高、体重和薪水。平均年龄和身高已计算,总体重和总薪水已汇总。

保留 NaN

然而,在实际的数据集中,常常出现缺失值。默认情况下,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 提供了丰富的函数和工具,用于数据分析和处理。