使用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) 编辑 收藏 举报