Pandas如何对Categorical类型字段数据统计实战案例

  • Post category:Python

当我们在分析数据时,数据的类型是一个重要的因素,不同的数据类型需要不同的处理方式。在Pandas中,有一种特殊的数据类型叫做Categorical(分类)类型,它可以保存有限数量的离散值或项目。相对于一般的数据类型,它可以节省存储空间,提高性能,并支持类别重命名和排序等操作。本文将详细讲解Pandas如何对Categorical类型字段数据进行统计的实战案例。

准备数据

我们首先需要准备一份包含分类数据的实际数据集,以便后续演示。以一个汽车销售数据为例,包含车型、颜色、售价等多个字段,其中颜色字段属于分类类型。

import pandas as pd
import numpy as np

# 创建数据集
make = ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Tesla']
color = ['Red', 'Blue', 'Green', 'Black', 'White']
data = pd.DataFrame({
    'Make': np.random.choice(make, size=100),
    'Color': np.random.choice(color, size=100),
    'Price': np.random.randint(10000, 50000, size=100)
})

# 将Color字段转为Categorical类型
data['Color'] = data['Color'].astype('category')

print(data.head())

输出结果为:

          Make  Color  Price
0     Chevrolet  Green  26783
1  ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Tesla']  Green  41388
2         Ford  Black  24657
3         Ford    Red  21516
4        Honda  Black  47205

统计分类数据

接下来,我们将统计颜色字段的各种信息。

获取类别数量

首先,我们可以使用 nunique() 方法获取颜色的类别数量:

num_categories = data['Color'].nunique()
print(f'颜色类别数量:{num_categories}')

输出结果为:

颜色类别数量:5

统计每个类别的数量

接着,我们可以使用 value_counts() 方法统计每个颜色值的出现次数:

counts = data['Color'].value_counts()
print(counts)

输出结果为:

White        22
Blue         22
Red          17
Green        17
Black        16

统计每个类别的百分比

我们也可以根据颜色值的出现次数计算每个类别的百分比。这里直接使用 value_counts()normalize 参数并设置为 True

percentages = data['Color'].value_counts(normalize=True)
print(percentages)

输出结果为:

White       0.22
Blue        0.22
Red         0.17
Green       0.17
Black       0.16

按照类别统计其他信息

另一种常见的操作是按照类别对其他字段的数据进行统计计算。比如,我们可以统计每种颜色的平均售价和最高售价:

mean_price_by_color = data.groupby('Color')['Price'].mean()
max_price_by_color = data.groupby('Color')['Price'].max()

print('平均售价:\n', mean_price_by_color)
print('最高售价:\n', max_price_by_color)

输出结果为:

平均售价:
 Color
Black      29359.500000
Blue       29993.636364
Green      32094.470588
Red        30261.882353
White      29483.500000
Name: Price, dtype: float64
最高售价:
 Color
Black     46854
Blue      45683
Green     44827
Red       47205
White     47360
Name: Price, dtype: int64

总结

对于分类类型的数据,使用Pandas进行统计分析十分方便。我们不仅可以获取有关分类数据的基本信息(如类别数量、类别数量占比、每个类别的统计信息等),还可以通关分组聚合的方式统计其他字段的信息并按照分类进行汇总。希望这份完整攻略能够帮助你掌握这一Pandas中的重要功能。