当我们在分析数据时,数据的类型是一个重要的因素,不同的数据类型需要不同的处理方式。在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中的重要功能。