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
数据集中的值?
编辑:似乎强调了绘图,但我只是为了举例而使用它 - 我实际上想学习如何更好地处理这些数据框。
最佳答案
您需要 DataFrame.hist
这似乎省略了 None
s:
#specify columns for plot
cols = ['A1','A2','A4']
data[cols].plot.hist()
编辑:
存在需要单独处理列的问题,因此一种可能的解决方案是 list comprehension
与 dropna
:
cols = ['A1','A2','A4']
a = [data[x].dropna() for x in cols]
_ = plt.figure()
_ = plt.hist(a,label=cols)
_ = plt.legend()
_ = plt.show()
关于python - Pandas:更详细地从多列中删除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45189698/