当前位置: 首页 >数据库 > 统计类别数量并且使用pyplot画出柱状图

统计类别数量并且使用pyplot画出柱状图

从数据库中读取数据,具体操作为:

# -*- coding: utf-8 -*-from numpy import *import numpy as npimport pandas as pdfrom sqlalchemy import create_engineengine = create_engine('mysql+pymysql://root:123456@127.0.0.1:3306/db_websiterecommend?charset=utf8')sql = pd.read_sql('t_url_classify', engine, chunksize = 110000)output='C:\\Users\\lenovo\\Desktop\\count_.xls''''z用create_engine建立连接,连接地址的意思依次为“数据库格式(mysql)+程序名(pymysql)+账号密码@地址端口/数据库名(test)”,最后指定编码为utf8;all_gzdata是表名,engine是连接数据的引擎,chunksize指定每次读取1万条记录。这时候sql是一个容器,未真正读取数据。'''counts = [ i['classify'].value_counts() for i in sql] #逐块统计counts = pd.concat(counts).groupby(level=0).sum() #合并统计结果,把相同的统计项合并(即按index分组并求和)counts = counts.reset_index() #重新设置index,将原来的index作为counts的一列。counts.columns = ['type', 'num']counts=pd.DataFrame(counts)print(counts)import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseprint(counts.type)print(counts.num)#plt.style.use('mystyle')x=np.arange(counts.type.size)plt.bar(x,counts.num,color='red')ax=plt.gca()ax.set_xticklabels(counts.type)plt.show()

然后对于统计出来的数据是列表的,所以要进行整合成两个类别,所以就要将其转换成pandas,然后进行赋给其值列名,然后才方便后面的操作

否则不进行上面的操作的话,就得出以下的结果,这样子的话就达不到目的:

统计类别数量并且使用pyplot画出柱状图 _ JavaClub全栈架构师技术笔记

 

画图的代码为:

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseprint(counts.type)print(counts.num)#plt.style.use('mystyle')x=np.arange(counts.type.size)plt.bar(x,counts.num,color='red')ax=plt.gca()ax.set_xticklabels(counts.type)plt.show()
使用plt.bar()去画图
首先是数据是dataframe格式的。
也就是两个变量,即两列
例如:
type num
0 优秀作品 11120
1 创新与合作 823
2 教学资源 24914
3 新闻动态 3177
4 竞赛与评奖 14114
5 竞赛组织 9645
6 视频教学 98
7 项目与招聘 4734
接下来:使用bar()绘制图形:
由于plot只接受数值类型,所以我们首先要:
输入:x = np.arange(data.category.size)
就是转换为其有多少个数据
画出来的图为:
统计类别数量并且使用pyplot画出柱状图 _ JavaClub全栈架构师技术笔记
接下来要设置x轴标识为类别:
ax=plt.gca()ax.set_xticklabels(counts.type)

 

然后画出来的图为:
统计类别数量并且使用pyplot画出柱状图 _ JavaClub全栈架构师技术笔记
注意:
统计类别数量并且使用pyplot画出柱状图 _ JavaClub全栈架构师技术笔记

 

红色部分不能定义为index,否则输不出来,因为其默认就是有index
或者对于使用D.plot()的方式的话,就是可以这样子:
counts.plot(kind='bar',color='red')ax=plt.gca()ax.set_xticklabels(counts.type)plt.show()

 保存图片:

 plt.savefig("bar.jpg"

 

作者:你若精彩,蝴蝶自来
来源链接:https://www.cnblogs.com/caicaihong/p/5887845.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117518.html

标签:group by
分享给朋友:

“统计类别数量并且使用pyplot画出柱状图” 的相关文章

会mysql不一定会sql 2022年06月07日 04:41:06
MYSQL查询某字段为空的数据 2022年06月08日 21:35:13
mysql 查询数据结果计算百分比 2022年06月11日 10:01:40
MySql 查询两张表的数据差别 2022年06月11日 20:14:35
Mysql 查询区分大小写的两种方法 2022年06月11日 20:53:24
Mysql查询用户最后一次登陆时间 2022年06月12日 13:54:22
mysql查询前几条记录 2022年06月13日 21:46:10
MySQL 查询结果替换 2022年06月15日 10:48:11
MySQL基本查询 2022年06月15日 12:06:53