python实现读取类别频数数据画水平条形图案例


Posted in Python onApril 24, 2020

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

要注意的数据范围只包含上界不含下界,数据公式这样子1⩽data<5,只含上界,这样就可以做出不重不漏。

2、频数计算

这是运用data_count函数(上面代码)进行频数计算的演示,首先看一下原数据长什么样,暂时麻烦就不公布了,你们自己按照自己的数据决定。

python实现读取类别频数数据画水平条形图案例

测试data_count函数代码:

data_gap1 = data_count(g11[:], 1, 51, 1)
data_gap2 = data_count(g22[:], 1, 51, 1)

很简单啦,就是函数的调用,你们都会的,给大家看一下输出结果,如下图:

python实现读取类别频数数据画水平条形图案例

输出结果

感觉相当完美,函数也很万能,只要输入最小值最大值和间隔,就能出频数分布表

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实现读取类别频数数据画水平条形图案例

水平条形图

补充知识:在ipython notebook中添加latex公式

1 MathJax 的安装

ipython notebook中数学公式的渲染使用MathJax。一般网络较好的情况下,MathJax可以在线使用,但是如果希望离线使用,需要将其安装到本地磁盘中,常用的方法是在ipython notebook中使用以下命令:

from IPython.external.mathjax import install_mathjax

install_mathjax()

2.生成配置文件

安装完mathjax之后可以正常import latex,但是执行Latex(r'S\sqrt{x^2+y^2}$')后显示的是‘$\sqrt{x^2+y^2}$'这样字符串;

原来还需要生成配置文件,方法是:在命令行中运行 ipython profile create,执行完成会在./ipython/profile_default 目录下生成

一系列的配置文件,其中包括ipython_notebook_config.py文件;有地方看到需要修改该配置文件,取消 c.NotebookApp.enable_mathjax=True;

的注释,大家可以试一下,我自己没有取消这行注释,再打开ipnb文件时公式都能正常渲染,耶~

第一次记录blog,一方面跟大家一起学习,一方面方便以后回顾,毕竟记性差了许多,哈哈~

以上这篇python实现读取类别频数数据画水平条形图案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python代码制作configure文件示例
Jul 28 Python
深入Python解释器理解Python中的字节码
Apr 01 Python
python简单分割文件的方法
Jul 30 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
PyCharm安装第三方库如Requests的图文教程
May 18 Python
Python 监测文件是否更新的方法
Jun 10 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python上下文管理器用法及实例解析
Nov 11 Python
Python3的socket使用方法详解
Feb 18 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
python 实现&quot;神经衰弱&quot;翻牌游戏
Nov 09 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 #Python
Python内存映射文件读写方式
Apr 24 #Python
pandas的resample重采样的使用
Apr 24 #Python
python实现在内存中读写str和二进制数据代码
Apr 24 #Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 #Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 #Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 #Python
You might like
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
python字符串替换示例
2014/04/24 Python
python简单实现矩阵的乘,加,转置和逆运算示例
2019/07/10 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
python开发入门——列表生成式
2020/09/03 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
初婚未育未抱养证明
2014/01/12 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
千手观音观后感
2015/06/03 职场文书
生死抉择观后感
2015/06/09 职场文书
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL