2017-07-19 41 views
1
import matplotlib.pyplot as plt 
import pandas as pd 

data = pd.DataFrame({ 'X': [1, 2, 3], 
         'Y': [4, 5, 6], 
         'A1': [1, None, 3], 
         'A2': [4, 5, 6], 
         'A3': ['Not', 'being', 'used'], 
         'A4': [None, 3, 3, None] }) 

_ = plt.figure() 
_ = plt.hist([ data['A1'][pd.notnull(data['A1'])], 
       data['A2'][pd.notnull(data['A2'])], 
       data['A4'][pd.notnull(data['A4'])] ], 
      label=['A1', 'A2', 'A4']) 
_ = plt.legend() 
_ = plt.show() 

有一些方法可以讓我減少的plt.hist第一個參數,在那裏我一邊喊pd.notnull(data['A1|2|3'])刪除數據集中的None值的重複和冗長?熊貓:從多個列刪除空值少冗長

編輯:看起來好像有重點放在繪圖上,但我只是爲了舉例而使用它 - 我實際上想學習如何更好地處理這些數據幀。

+0

這是你想要的東西:'data.filter(如= 'A')plot.hist()'? – MaxU

+0

使用'data [['A1','A2','A4']]。plot.hist()'會將這些條放置在彼此之上(編輯例子引起此問題),而在上面的示例中使用matplotlib)酒吧是並排的,這在這種情況下是必要的。有沒有辦法使用'data [[''A1','A2','A4']]。plot.hist()'並排擺放酒吧?此外,我想實際知道如何更有效地刪除這些空值以外的情況下,這樣的幫助,將不勝感激。 –

回答

1

您需要DataFrame.hist這似乎忽略None S:

#specify columns for plot 
cols = ['A1','A2','A4'] 
data[cols].plot.hist() 

graph

編輯:

有問題需要同列的單獨工作,所以一個可能的解決方案是list comprehensiondropna

cols = ['A1','A2','A4'] 
a = [data[x].dropna() for x in cols] 
_ = plt.figure() 
_ = plt.hist(a,label=cols) 
_ = plt.legend() 
_ = plt.show() 

graph

+0

請看我對這個問題的評論。 –

1

試試這個:

In [258]: data.filter(like='A').plot.hist() 
Out[258]: <matplotlib.axes._subplots.AxesSubplot at 0x10e280b8> 

結果:

enter image description here

UPDATE:

In [266]: data.filter(like='A').plot.hist(width=0.5) 
Out[266]: <matplotlib.axes._subplots.AxesSubplot at 0x11f7b518> 

結果:

enter image description here

您可能需要閱讀great Pandas visualization docs

+0

請看我對這個問題的評論。 –