2017-07-19 45 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

请看我对这个问题的评论。 –