dea*_*ock 1 python dataframe pandas
我有一个数据框(df),如下所示
Column1 Column2 ...
0 1 1
1 Null 1
.
.
Run Code Online (Sandbox Code Playgroud)
我想绘制每列中空值的计数
目前,我正在做
Column1 Column2 ...
0 1 1
1 Null 1
.
.
Run Code Online (Sandbox Code Playgroud)
问题是大约有 180 列,其中大多数有 0 个空值,我想在绘图时忽略这些列。
我尝试了以下似乎不起作用
df.isnull().sum().plot.bar()
plt.show()
Run Code Online (Sandbox Code Playgroud)
Voj*_*tas 12
我想向您提供我在几乎每台笔记本中使用的万无一失的解决方案:
import matplotlib.pyplot as plt
def plot_nas(df: pd.DataFrame):
if df.isnull().sum().sum() != 0:
na_df = (df.isnull().sum() / len(df)) * 100
na_df = na_df.drop(na_df[na_df == 0].index).sort_values(ascending=False)
missing_data = pd.DataFrame({'Missing Ratio %' :na_df})
missing_data.plot(kind = "barh")
plt.show()
else:
print('No NAs found')
plot_nas(df)
Run Code Online (Sandbox Code Playgroud)
您可以按如下方式更改图表的大小:
plot_width, plot_height = (16,18)
plt.rcParams['figure.figsize'] = (plot_width,plot_height)
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您需要每列中的 NaN 计数,即具有 NaN 并获取条形图,则下一个代码可能会有所帮助:
df.isna().sum()[df.isna().sum()>0].plot(kind='bar')
Run Code Online (Sandbox Code Playgroud)