python实现读取类别频数数据画水平条形图
1、数据分组-->频数分布表
环境配置:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
按照你设定合适的间隔,把数据分为各个范围的组,然后统计出在这个范围内的频数有多少,我没有找到合适的函数,我就自己写了一个函数,类似直方图的工作,这是画水平条形图的数据准备。至于为什么要画水平条形图,当类别太多,使用水平条形图比较简洁,个人看法。下面给出代码,就不解释代码含义了。
def data_count(dataa, r1, r2, step):
r = pd.DataFrame(np.random.randn(1, 2))
r.drop(0, inplace=True)
while r1+step <= r2:
num = 0
for j in range(len(dataa)):
if dataa[j] >= r1 and dataa[j] < r1+step:
num = num + 1
f = "%s~%d" % (r1, r1+step)
# r = r.append([[int(r1), num], ]) # 使用单数表示
r = r.append([[f, num], ]) # 使用范围表示
r1 = r1 + step
return r
要注意的数据范围只包含上界不含下界,数据公式这样子${\text{1}} \leqslant data < 5$,只含上界,这样就可以做出不重不漏。
2、频数计算
这是运用data_count函数(上面代码)进行频数计算的演示,首先看一下原数据长什么样,暂时麻烦就不公布了,你们自己按照自己的数据决定。

原数据
测试data_count函数代码:
data_gap1 = data_count(g11[:], 1, 51, 1)
data_gap2 = data_count(g22[:], 1, 51, 1)
很简单啦,就是函数的调用,你们都会的,给大家看一下输出结果,如下图:

输出结果
感觉相当完美,函数也很万能,只要输入最小值最大值和间隔,就能出频数分布表
3、水平条形图
def plot_bar(plot_data, title):
plt.figure(figsize=(10, 15))
y = plot_data.iloc[:, 1].values
tt = list(range(len(y)))
index = plot_data.iloc[:, 0].values
plt.bar(left=0, bottom=list(range(len(y))), width=y, color='blue', height=0.5,
orientation='horizontal') # 水平对应bottom&width, height表示bar的宽度
plt.yticks(tt, index)
plt.ylabel('数据范围')
plt.xlabel('频数')
plt.title(title)
plt.show()
上面中plt.bar(left=0, bottom=list(range(len(y))), width=y, color='blue', height=0.5,orientation='horizontal')这句代码是最重要的,其中left表示直方图的开始的位置(也就是最左边的地方),height是指直方图的高度,当直方图太粗时,可以通过width来定义直方图的宽度,注意多个直方图要用元组,yerr这个参数是防止直方图触顶。orientation='horizontal'指得水平条形图,使用barh方法可以省略这个参数得设定。
有个坑,如果直接用bottom=类别数据,文本格式的类别会乱序,需要像我那样先指定位置,在指定类别,如plt.yticks(tt, index)所作的工作。

水平条形图
python实现读取类别频数数据画水平条形图的更多相关文章
- Python使用Plotly绘图工具,绘制水平条形图
水平条形图与绘制柱状图类似,大家可以先看看我之前写的博客,如何绘制柱状图 水平条形图需要在Bar函数中设置orientation= 'h' 其他的参数与柱状图相同.也可以通过设置barmode = ' ...
- Delphi中使用python脚本读取Excel数据
Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- python使用h5py读取mat文件数据,并保存图像
1 安装h5py sudo apt-get install libhdf5-dev sudo pip install h5py 假设你已经安装好python和numpy模块 2 读取mat文件数据 i ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- Hadoop源代码分析:HDFS读取和写入数据流控制(DataTransferThrottler类别)
DataTransferThrottler类别Datanode读取和写入数据时控制传输数据速率.这个类是线程安全的,它可以由多个线程共享. 用途是构建DataTransferThrottler对象,并 ...
- python读取excel所有数据(cmd界面)
python读取excel所有数据(cmd界面) cmd界面显示excel数据 代码 import xlrd import os from prettytable import PrettyTable ...
- python之读取yaml数据
一.yaml简介 yaml:一种标记语言,专门用来写配置文件. 二.yaml基础语法 区分大小写: 使用缩进表示层级关系: 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元素 ...
- 吴裕雄--天生自然python学习笔记:pandas模块读取 Data Frame 数据
读取行数据 读取一个列数据的语法为: 例如,读取所有学生自然科目的成绩 : import pandas as pd datas = [[65,92,78,83,70], [90,72,76,93,56 ...
- 用python探索和分析网络数据
Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...
随机推荐
- mysql 必知必会总结
以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础. 200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随 ...
- 查看修复HDFS中丢失的块
检测缺失块 hdfs fsck -list-corruptfileblocks hdfs fsck / | egrep -v '^\.+$' | grep -v eplica 查看上面某一个文件的情况 ...
- D3学习笔记一
D3学习笔记一 什么是D3? D3(全称Data Driven Documents)是一个用来做Web数据可视化的JavaScript函数库.D3也称之为D3.js. D3是2011年由Mike Bo ...
- [转]浅谈 .NET Framework 与 .NET Core 的区别与联系
本文转自:http://www.cnblogs.com/huchaoheng/p/6295688.html 2017到了,咱们学点啥啊,要想知道学点啥,先弄清.NET Framework 与 .NET ...
- Fastreport史无前例5折,仅十天快抢!
慧都十年第一弹,与全球顶级报表控件厂商Fastreport携手同欢:仅仅十天,仅仅提供给慧都控件网,Fastreport旗下全部产品,全部5折!立即订购>> 慧都作为中国第一家与其建立合作 ...
- Centos7 linux下 安装 Redis 5.0
网上找了很多文章,发现不全而且有些问题,安装很多次之后,总结一篇可以使用的,记录之. 环境:Centos7+Redis 5.0,如果环境不符合,本篇仅供参考. 1.准备工作 作者习惯软件安装包放在单独 ...
- php 正则验证
PHP 正则验证字符串是否为数字 方法一: php中利用正则表达式验证字符串是否为数字一件非常容易的事情,最主要的是如何写好正则表达式以及掌握正则表达式的写法,在此利用正则表达式的方式来列举一下判 ...
- Toolbar和Drawerlayout的基本使用
参考文章: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2006.html http://www.codeceo.c ...
- 合理使用线程池 ThreadPool.QueueUserWorkItem()
//==>自建线程 new Thread(() => { //线程任务 Console.WriteLine(Thread.CurrentThread.ManagedThreadId); } ...
- radio 实现点击两次 第一次点击选中第二次点击取消
由于项目的需求,要求radio点击两次后为取消状态,不方便修改为checkbox,可以用正面的方法实现. // jquery $('input:radio').click(function(){ // ...