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抽象基类用法实例分析
Jun 04 Python
发布你的Python模块详解
Sep 15 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python使用pyserial进行串口通信的实例
Jul 02 Python
python和c语言的主要区别总结
Jul 07 Python
python实现猜拳小游戏
Apr 05 Python
Python 使用多属性来进行排序
Sep 01 Python
opencv3/C++图像像素操作详解
Dec 10 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
python 实现数据库中数据添加、查询与更新的示例代码
Dec 07 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
document.write的几点使用心得
2014/05/14 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
js实现聊天对话框
2020/02/08 Javascript
在vue中实现清除echarts上次保留的数据(亲测有效)
2020/09/09 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python制作简单的网页爬虫
2015/11/22 Python
Python重新加载模块的实现方法
2018/10/16 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
掌上明珠Java程序员面试总结
2016/02/23 面试题
网吧收银员岗位职责
2013/12/14 职场文书
社区消防工作实施方案
2014/03/21 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
JavaScript实现简单图片切换
2021/04/29 Javascript
图神经网络GNN算法
2022/05/11 Python