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

程序執行結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM