simple_life

导航

使用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()

程序执行结果如下:

 

posted on 2020-03-20 22:01  simple_life  阅读(24283)  评论(0编辑  收藏  举报