如何在Python中创建频率表

  • Post category:Python

创建频率表是Python中统计分析数据非常常用的操作之一。下面我将对如何在Python中创建频率表进行详细讲解,并给出两个示例说明。

什么是频率表?

频率表是指一种数值数据变成分类数据后,每个分类出现的次数的汇总表。常用于对数据分布进行统计分析。例如对于0-10岁儿童身高的数据,可以将身高分为0-100cm、100-110cm、110-120cm、120-130cm等等若干分类,然后计算每个分类中儿童的个数,最终得到每个分类的频数及频率。

如何创建频率表

下面是Python创建频率表的基本步骤:

  1. 将数据按照需要的分类进行分组,并统计每个分类出现的次数;
  2. 计算每个分类频率(出现次数除以总次数),生成频率表。

具体的Python代码如下:

# 导入必要的库
import pandas as pd

# 数据预处理,例如读取csv文件
data = pd.read_csv('filename.csv')

# 按照分类进行分组
grouped_data = data.groupby('category')

# 统计每个分类出现的次数
counted_data = grouped_data.size()

# 计算每个分类频率
frequency_data = counted_data/len(data)

# 生成频率表
frequency_table = pd.DataFrame({'frequency':frequency_data, 'count':counted_data})

# 打印结果
print(frequency_table)

上述代码中,我们使用了pandas库来进行数据的预处理及分组操作。使用groupby函数可以按照需要的分类进行分组,使用size函数可以统计每个分类出现的次数。

示例说明

下面给出两个示例说明。

示例1:统计出现最多的菜品

假设需要统计一家餐厅最受欢迎的菜品,并生成频率表。

# 导入必要的库
import pandas as pd

# 数据预处理
data = pd.read_csv('menu.csv')

# 按照菜品名称进行分组
grouped_data = data.groupby('菜品')

# 统计每个菜品出现的次数
counted_data = grouped_data.size()

# 计算每个菜品的频率
frequency_data = counted_data/len(data)

# 生成频率表并排序
frequency_table = pd.DataFrame({'frequency':frequency_data, 'count':counted_data}).sort_values('count', ascending=False)

# 输出统计结果
print('出现最多的菜品为:', frequency_table.index[0])
print('菜品使用次数为:', frequency_table.iloc[0]['count'])
print('菜品占比为:', round(frequency_table.iloc[0]['frequency']*100, 2), '%')

示例2:统计身高分布

假设需要统计儿童身高分布并生成频率表。

# 导入必要的库
import pandas as pd

# 数据预处理
data = pd.read_csv('height.csv')

# 将身高按照100cm为一组进行分组
bins = pd.cut(data['height'], [0, 100, 200])

# 统计每个组的出现次数
counted_data = pd.value_counts(bins)

# 计算每个组的频率
frequency_data = counted_data/len(data)

# 生成频率表
frequency_table = pd.DataFrame({'frequency':frequency_data, 'count':counted_data})

# 输出统计结果
print(frequency_table)

上述代码中,使用了pd.cut函数将身高按照100cm为一组进行分组。使用pd.value_counts函数来统计每个组出现的次数,最终生成频率表。