zoukankan      html  css  js  c++  java
  • 使用Python绘制直方图和正态分布曲线

    本文主要介绍两个内容:

    • 如何使用记事本生成包含某一数据集的CSV文件;
    • 如何使用Python绘制给定数据集的直方图和正态分布曲线。

    1. 使用记事本创建CSV文件

    ① 新建一个文本文件,打开后输入数据,格式如下:

    name,age,address
    Mike,20,shanghai

    这里需要注意的是:关键字之间使用英文逗号隔开;第一行为引用字段,第二行为对应值。

    ② 将文本文件另存为CSV文件,如下:

    依次选择【文件】→【另存为】→【文件名:xxx.csv】→【保存类型:所有文件】→【编码:utf-8】→【保存】,图示如下:



     ③ CSV文件中的数据为100个表示长度的数值,如下:

    2539  2536  2534  2542  2545  2538  2539  2542  2547  2535
    2541  2543  2544  2548  2545  2543  2546  2540  2551  2545
    2540  2539  2541  2536  2538  2531  2556  2543  2540  2538
    2537  2544  2533  2546  2540  2549  2534  2542  2550  2537
    2535  2532  2545  2540  2527  2543  2554  2539  2545  2543
    2540  2543  2544  2541  2553  2537  2538  2524  2544  2540
    2536  2542  2539  2546  2538  2535  2531  2534  2540  2536
    2541  2532  2538  2542  2540  2533  2537  2541  2549  2535
    2547  2534  2530  2539  2536  2546  2529  2540  2537  2533
    2540  2535  2541  2537  2547  2539  2542  2547  2538  2539

    2. 绘制数据集的直方图和正态分布曲线

     1 #
     2 # 本文以某一批产品的长度为数据集
     3 # 在此数据集的基础上绘制直方图和正态分布曲线
     4 #
     5 
     6 import pandas as pd  # pandas是一个强大的分析结构化数据的工具集
     7 import numpy as np  # numpy是Python中科学计算的核心库
     8 import matplotlib.pyplot as plt  # matplotlib数据可视化神器
     9 
    10 # 正态分布的概率密度函数
    11 #   x      数据集中的某一具体测量值
    12 #   mu     数据集的平均值,反映测量值分布的集中趋势
    13 #   sigma  数据集的标准差,反映测量值分布的分散程度
    14 def normfun(x, mu, sigma):
    15     pdf = np.exp(-((x - mu) ** 2) / (2 * sigma ** 2)) / (sigma * np.sqrt(2 * np.pi))
    16     return pdf
    17 
    18 if __name__ == '__main__':
    19     
    20     data = pd.read_csv('length.csv') # 载入数据文件
    21     length = data['length'] # 获得长度数据集
    22     mean = length.mean() # 获得数据集的平均值
    23     std = length.std()   # 获得数据集的标准差
    24 
    25     # 设定X轴:前两个数字是X轴的起止范围,第三个数字表示步长
    26     # 步长设定得越小,画出来的正态分布曲线越平滑
    27     x = np.arange(2524, 2556, 0.1)
    28     # 设定Y轴,载入刚才定义的正态分布函数
    29     y = normfun(x, mean, std)
    30     # 绘制数据集的正态分布曲线
    31     plt.plot(x, y)
    32 
    33     # 绘制数据集的直方图
    34     plt.hist(length, bins=12, rwidth=0.9, density=True)
    35     plt.title('Length distribution')
    36     plt.xlabel('Length')
    37     plt.ylabel('Probability')
    38 
    39     # 输出正态分布曲线和直方图
    40     plt.show()

    程序执行结果如下:

  • 相关阅读:
    Linux下编译安装PCRE库
    Keepalived+Nginx实现高可用和双主节点负载均衡
    如何安装nginx第三方模块
    Nginx之http_image_filter_module模块使用
    nginx利用image_filter动态生成缩略图
    Nginx 服务器开启status页面检测服务状态
    nginx实时生成缩略图到硬盘上
    分布式文件系统 FastDFS 5.0.8 & Linux CentOS 6.7 安装配置
    spring中scope作用域(转)
    jQuery的切换函数(hover,toggle)
  • 原文地址:https://www.cnblogs.com/pyhou/p/12535208.html
Copyright © 2011-2022 走看看