2016-03-01 63 views
-1

這是我的數據框:Python的Matplotlib箱線

{'Parameter': {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'A', 6: 'A', 7: 'A'}, 
'Site': {0: 'S1', 
    1: 'S2', 
    2: 'S1', 
    3: 'S2', 
    4: 'S1', 
    5: 'S2', 
    6: 'S1', 
    7: 'S2'}, 
'Value': {0: 2.3399999999999999, 
    1: 2.6699999999999999, 
    2: 2.5600000000000001, 
    3: 2.8900000000000001, 
    4: 3.4500000000000002, 
    5: 4.4500000000000002, 
    6: 3.6699999999999999, 
    7: 4.5599999999999996}} 

我想通過網站來繪製箱線圖的參數。什麼是最簡單的方法呢?另外的問題是,如果我將有超過1個參數,什麼是最簡單的方式來繪製boxplot使用matplotlib的參數?謝謝

+0

目前尚不清楚你想要做什麼。對於「參數」和「站點」的每個組合,您都有多個「值」。你如何看待你將這些數據點結合起來? – Suever

+0

試圖根據每個參數的網站繪製價值框圖。 – Felix

+0

但在你的例子中,你有*四個*值爲站點「S1」和參數「A」,你是否只想要酒吧是所有這些值的平均值? – Suever

回答

2

你會想要使用DataFrame.boxplot方法和組按「參數」和「網站」列。

import matplotlib.pyplot as plt 
from pandas import DataFrame 

df = DataFrame({'Parameter': ['A',]*8, 
       'Site': ['S1', 'S2', 'S1', 'S2', 'S1', 'S2', 'S1', 'S2'], 
       'Value': [2.34, 2.67, 2.56, 2.89, 3.45, 4.45, 3.67, 4.56]}) 

df.boxplot(by=['Parameter', 'Site']) 
plt.show() 

enter image description here

如果你想展現您的數據的特定列,您可以使用關鍵字column參數boxplot

# Plot single value 
df.boxplot(column='Value', by=['Parameter', 'Site']) 

# Plot Multiple values 
df.boxplot(column=['Value', 'OtherValue'], by=['Parameter', 'Site']) 
+0

謝謝,這是與數據幀。因爲在原始表格中,我有幾個Value列,我只在特定列中感興趣?感謝你的幫助。 – Felix

+0

@Felix我已更新我的問題,以包括您可能只想繪製特定列的情況。 – Suever

+0

獲取奇怪的錯誤:ValueError:需要超過0個值才能解包。使用Python 2.7和Pandas 0.17.1 – Felix