Python绘制频率分布直方图的示例


Posted in Python onJuly 08, 2019

项目中在前期经常要看下数据的分布情况,这对于探究数据规律非常有用。概率分布表示样本数据的模样,长的好不好看如果有图像展示出来就非常完美了,使用Python绘制频率分布直方图非常简洁,因为用的频次非常高,这里记录下来。还是Python大法好,代码简洁不拖沓~

如果数据取值的范围跨度不大,可以使用等宽区间来展示直方图,这也是最常见的一种;如果数据取值范围比较野,也可以自定义区间端点,绘制图像,下面分两种情况展示

1. 区间长度相同绘制直方图

#-*- encoding=utf-8 -*-
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc')


# 按照固定区间长度绘制频率分布直方图
# bins_interval 区间的长度
# margin    设定的左边和右边空留的大小
def probability_distribution(data, bins_interval=1, margin=1):
  bins = range(min(data), max(data) + bins_interval - 1, bins_interval)
  print(len(bins))
  for i in range(0, len(bins)):
    print(bins[i])
  plt.xlim(min(data) - margin, max(data) + margin)
  plt.title("probability-distribution")
  plt.xlabel('Interval')
  plt.ylabel('Probability')
  plt.hist(x=data, bins=bins, histtype='bar', color=['r'])
  plt.show()

2. 区间长度不同绘制直方图

#-*- encoding=utf-8 -*-
import datetime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
zhfont1 = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\simsun.ttc'

# 自己给定区间,小于区间左端点和大于区间右端点的统一做处理,对于数据分布不均很的情况处理较友好
# bins   自己设定的区间数值列表
# margin  设定的左边和右边空留的大小
# label   右上方显示的图例文字
"""e
  import numpy as np
  data = np.random.normal(0, 1, 1000)
  bins = np.arange(-5, 5, 0.1)
  probability_distribution_extend(data=data, bins=bins)
"""
def probability_distribution_extend(data, bins, margin=1, label='Distribution'):
  bins = sorted(bins)
  length = len(bins)
  intervals = np.zeros(length+1)
  for value in data:
    i = 0
    while i < length and value >= bins[i]:
      i += 1
    intervals[i] += 1
  intervals = intervals / float(len(data))
  plt.xlim(min(bins) - margin, max(bins) + margin)
  bins.insert(0, -999)
  plt.title("probability-distribution")
  plt.xlabel('Interval')
  plt.ylabel('Probability')
  plt.bar(bins, intervals, color=['r'], label=label)
  plt.legend()
  plt.show()

Case示例

if __name__ == '__main__':
  data = [1,4,6,7,8,9,11,11,12,12,13,13,16,17,18,22,25]
  probability_distribution(data=data, bins_interval=5,margin=0)

效果如下图

Python绘制频率分布直方图的示例

以上这篇Python绘制频率分布直方图的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
详细解析Python当中的数据类型和变量
Apr 25 Python
Python中几种导入模块的方式总结
Apr 27 Python
python基础教程项目五之虚拟茶话会
Apr 02 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
python实现多进程通信实例分析
Sep 01 Python
django rest framework使用django-filter用法
Jul 15 Python
python 实现学生信息管理系统的示例
Nov 28 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 #Python
简单了解python关系(比较)运算符
Jul 08 #Python
Win10下Python3.7.3安装教程图解
Jul 08 #Python
python3.7简单的爬虫实例详解
Jul 08 #Python
在python中画正态分布图像的实例
Jul 08 #Python
python实现beta分布概率密度函数的方法
Jul 08 #Python
python中pip的使用和修改下载源的方法
Jul 08 #Python
You might like
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
Node.js文件操作详解
2014/08/16 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
vuex的简单使用教程
2018/02/02 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Python处理Excel文件实例代码
2017/06/20 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
竞选班长演讲稿
2013/12/30 职场文书
小学生安全保证书
2014/02/01 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
Redis可视化客户端小结
2021/06/10 Redis
Spring Bean是如何初始化的详解
2022/03/22 Java/Android