[MySQL | Python] MySQL频数表、Python频数表

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

目录

1 MySQL频数频率表

 1.1. 分类计数

 1.2 分类计数+汇总

 1.3 分类计数+汇总+百分比+降序

2. Python中频数频率表

 2.1 频数频率表

 2.2 频数图

 2.3 绘制饼图


数据集:

名字:附件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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禾木页

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值