目录
数据集:
名字:附件1
字段:股票代码、所属行业
条数:4163条

1 MySQL频数频率表
1.1. 分类计数
按所属行业分类计数 [SELECT 分组字段, 操作 FROM 表名 GROUP BY 分组字段]
SELECT a.`所属行业`,count(a.`所属行业`) FROM `附件1` AS a GROUP BY a.`所属行业`;

1.2 分类计数+汇总
按所属行业分类计数,并计算总值。
+with rollup 后会再统计一行整数,但没有名字。
coalesce()函数,原是用于空值处理;这里似乎只是增加命名。
SELECT
COALESCE(a.`所属行业`,'总计'),
COUNT(a.`所属行业`)
FROM
`附件1` AS a
GROUP BY
a.`所属行业` WITH ROLLUP;

1.3 分类计数+汇总+百分比+降序
-- 分类汇总+总数+百分比+升序
-- SELECT count(*) FROM `附件1` --统计表格总行数,输出4163
SELECT
COALESCE(a.`所属行业`,'总计') AS '行业',
COUNT(a.`所属行业`) AS '频数',
COUNT(a.`所属行业`)/(SELECT count(*) FROM `附件1`)*100 AS '百分比%'
FROM
`附件1` AS a
GROUP BY
a.`所属行业` with ROLLUP
ORDER BY
COUNT(a.`所属行业`);

2. Python中频数频率表
2.1 频数频率表
#[Python]导入数据
df1 = pd.read_excel('附件1.xlsx','Sheet1')
#仅频数
F = df1['所属行业'].value_counts()
F = pd.DataFrame(F)
#增加百分比列
F['百分比%'] = F.iloc[:,0]/df1.shape[0]*100
#增加汇总行
F.loc['总计'] = [sum(F['所属行业']), sum(F['百分比%'])]

2.2 频数图
#由于要绘制频数图,删去“总计”列
F = F.drop(index='总计')
import matplotlib.pyplot as plt #导入包
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#绘图条形图
plt.bar(F.index, F['所属行业'])
plt.title('所属行业频数')
plt.ylabel('频数')
plt.xticks(rotation=300) #标签倾斜300度
#为每个条形图添加数值标签
for x,y in enumerate(F['所属行业']):
plt.text(x,y+0.1,"%s"%round(y,0),ha='center') #round(y,1)是将y值四舍五入到一个小数位
plt.show()

2.3 绘制饼图
#绘制饼图
import matplotlib.pyplot as plt #导入绘图包
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#绘制饼图
plt.pie(F['百分比%'],labels=F.index,autopct='%3.2f%%') #显示3位整数两位小数
plt.title('所属行业') #加标题
plt.show()

本文介绍了如何使用MySQL和Python进行频数频率表的统计分析,包括分类计数、计数汇总、百分比计算以及图表可视化。在MySQL中,通过SQL查询实现了按所属行业的分类计数、汇总以及百分比计算。在Python中,利用pandas库进行数据处理,生成频数频率表并绘制了条形图和饼图,直观展示数据分布情况。
3万+

被折叠的 条评论
为什么被折叠?



