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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
老生常谈Python基础之字符编码
Jun 14 Python
python如何在列表、字典中筛选数据
Mar 19 Python
详解django.contirb.auth-认证
Jul 16 Python
Django框架模板文件使用及模板文件加载顺序分析
May 23 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
django框架cookie和session用法实例详解
Dec 10 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
Pytorch 实现变量类型转换
May 17 Python
Django+Celery实现定时任务的示例
Jun 23 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 一个比较完善的简单文件上传
2010/03/25 PHP
php 数组使用详解 推荐
2011/06/02 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
vue iview实现动态新增和删除
2020/06/17 Javascript
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
python装饰器实例大详解
2017/10/25 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
详解Python中的type和object
2018/08/15 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
python中bytes和str类型的区别
2019/10/21 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
oracle重置序列从0开始递增1
2022/02/28 Oracle
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript