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 :(得分:1)
您需要Using the HTTP Cookie Manager in JMeter,这似乎省略None
s:
#specify columns for plot
cols = ['A1','A2','A4']
data[cols].plot.hist()
编辑:
有问题需要单独使用列,因此一个可能的解决方案是list comprehension
:
cols = ['A1','A2','A4']
a = [data[x].dropna() for x in cols]
_ = plt.figure()
_ = plt.hist(a,label=cols)
_ = plt.legend()
_ = plt.show()
答案 1 :(得分:1)
试试这个:
In [258]: data.filter(like='A').plot.hist()
Out[258]: <matplotlib.axes._subplots.AxesSubplot at 0x10e280b8>
结果:
<强>更新强>
In [266]: data.filter(like='A').plot.hist(width=0.5)
Out[266]: <matplotlib.axes._subplots.AxesSubplot at 0x11f7b518>
结果: