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

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

# -*- coding: utf-8 -*-
from numpy import *
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
engine = create_engine(‘mysql+pymysql://root:[email protected]: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 plt
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘]
plt.rcParams[‘axes.unicode_minus‘]=False
print(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()

画图的代码为:

import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘]
plt.rcParams[‘axes.unicode_minus‘]=False
print(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()

参考链接为http://jingyan.baidu.com/article/425e69e6e28aacbe15fc1694.html

使用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)

就是转换为其有多少个数据

画出来的图为:

接下来要设置x轴标识为类别:

ax=plt.gca()
ax.set_xticklabels(counts.type)

然后画出来的图为:

注意:

红色部分不能定义为index,否则输不出来,因为其默认就是有index

或者对于使用D.plot()的方式的话,就是可以这样子:

counts.plot(kind=‘bar‘,color=‘red‘)
ax=plt.gca()
ax.set_xticklabels(counts.type)
plt.show()

时间: 2024-08-03 11:16:48

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

如何在论文中画出漂亮的插图?

知乎用户的回答(1259票)]: 强烈推荐 Python 的绘图模块 matplotlib: python plotting .画出来的图真的是高端大气上档次,低调奢华有内涵~ 适用于从 2D 到 3D,从标量到矢量的各种绘图.能够保存成从 eps, pdf 到 svg, png, jpg 的多种格式.并且 Matplotlib 的绘图函数基本上都与 Matlab 的绘图函数名字都差不多,迁移的学习成本比较低.开源免费.如图所示(题目描述中的图在最后): (以下图片均引用自 Thumbnail

python—networkx:在一张图中画出多个子图

通过plt.subplot能够在一张图中画出多个子图 #coding: utf-8 #!/usr/bin/env python """ Draw a graph with matplotlib. You must have matplotlib for this to work. """ __author__ = """Aric Hagberg ([email protected])"""

列名作为分类值时如何画出统计图

一般来说,在报表中设计的统计图要用到两个变量值,一个是分类值,一般是统计中的横轴,还有一个就是系列值,相应的就是统计图中的纵轴.绝大多数情况下,分类值与系列值都是来源于表中的数据,也就是说,统计图是基于数据库表中的记录来设计器的,例如下面这个统计图: 一般会来自于这样的数据: 但是,有时会遇到下面这样的数据: 显然,如果还需要做出前面的统计图,那么分类值和系列值就需要使用数据库中的列名也就是字段名了.说实话,小编以前看到这种数据除了摇头,也就是想办法重新设计一张数据表,把所有列名存入一个字段,然

matlplotlib根据函数画出图形(二)

matplotlib基础知识 matpltlib中的基本图表包括的元素 1.x轴和y轴:水平和垂直的轴线 2.x轴和y轴的刻度:刻度标识坐标值的分隔,包括最小刻度和最大刻度 3.x轴和y轴刻度:表示特定坐标轴的值 4.绘图区域:实际绘图的区域 绘制单一曲线的图 代码如下 import matplotlib.pyplot as plt%matplotlib inlineimport numpy as np x = np.linspace(0,2*np.pi,50) #,定义自变量的取值,并返回把范

采用霍夫曼编码(Huffman)画出字符串各字符编码的过程并求出各字符编码 --多媒体技术与应用

题目:有一个字符串:cabcedeacacdeddaaaba,问题: (1)采用霍夫曼编码画出编码的过程,并写出各字符的编码 (2)根据求得的编码,求得各编码需要的总位数 (3)求出整个字符串总编码长度,并计算出字符串位数在编码前与编码后的比值 解答: (1)各字符出现频率统计如下表所示. |符号 |出现次数 |出现频率| |--|--|--| | a |7|0.35| |b|2|0.1| |c|4|0.2| |d|4|0.2| |e|3|0.15| 编码过程如下图所示: 各字符编码如下表所示:

Python matplotlib 基础练习:画出正弦曲线等

初学者,练习以下片段: 代码1:用 一元一次函数 画直线 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-2, 2, 50) print(x) y = 2*x + 1 plt.plot(x, y) ax = plt.gca() ax.spines['bottom'].set_position(('data',0)) ax.spines['left'].set_position(('data',0)) plt.

Python3 Tkinter基础 Canvas bind 绑定左键 鼠标左键点击时,在当前位置画出一个椭圆形

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: from tkinter import * root=Tk() w=Canvas(root,width=200,height=200,background='white') w.pack() def paint(event): #event.x 鼠标左键的横坐标

在资源里面画出你的界面

在资源里面画出你的界面.在添加类.然后在视图里定义这个类的指针,DIALOG的指针,还有就是区域对象, 如下Cwindows *tw;  CRect m_cle;CDialogEx *ph;在CPP文件构造函数里初始化ZeroMemory(&m_cle,sizeof(m_cle));tw = new Cwindows(this);:在重写OnCreate(LPCREATESTRUCT lpCreateStruct)函数在里面加上 { if (CView::OnCreate(lpCreateStr

全面总结:MATLAB如何画出漂亮的图

在绘图命令中应该如何确定横坐标和纵坐标的标度尺寸(自己定范围) 如何在一个坐标中绘制多条曲线,并用不同的颜色区别. 希望得到答案,谢谢!!!!!!!!!!! help plot help axis axis ('xlabel','ylabel') a1=plot(); hlod on a2=plot(); legend([a1 a2],'图1名',‘图2名') hold off 还可以更多 x1=-pi:pi/12:pi; x2=-pi:pi/12:pi; y1=sin(x1); y2=cos(