1. 程式人生 > >如何用python的畫幾組資料量不同的boxplot(箱線圖)

如何用python的畫幾組資料量不同的boxplot(箱線圖)

使用pandas裡的dataframe資料結構存放待顯示的資料。
dataframe和Series的知識不再講解,可以看這個博文
如果希望顯示的各個資料列表中,資料長度不一致,可以先用Series函式轉換為Series資料,再儲存到dataframe中,對應index的value值若不存在則為NaN
正常情況下,若各組資料長度一致,則dataframe長這樣:
0 1
0 1 5
1 2 6
2 3 7
3 4 8
如果長度不一致,長這樣:
0 1
0 1 5
1 2 6
2 3 7
3 NaN 8
後面直接用boxplot就可以
程式碼原型參考了

這篇部落格

# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd


def list_generator(mean, dis, number):  # 封裝一下這個函式,用來後面生成資料
    return np.random.normal(mean, dis * dis, number)  # normal分佈,輸入的引數是均值、標準差以及生成的數量


# 我們生成四組資料用來做實驗,資料量分別為70-100
list1 = list_generator(0.8531
, 0.0956, 70) list2 = list_generator(0.8631, 0.0656, 80) list3 = list_generator(0.8731, 0.1056, 90) list4 = list_generator(0.8831, 0.0756, 100) s1 = pd.Series(np.array(list1)) s2 = pd.Series(np.array(list2)) s3 = pd.Series(np.array(list3)) s4 = pd.Series(np.array(list4)) # 把四個list匯入到pandas的資料結構中,dataframe data = pd.DataFrame({"1"
: s1, "2": s2, "3": s3, "4": s4}) data.boxplot() # 這裡,pandas自己有處理的過程,很方便哦。 plt.ylabel("ylabel") plt.xlabel("xlabel") # 我們設定橫縱座標的標題。 plt.show()