首页 > 解决方案 > Pandas DataFrame.hist Seaborn 等价物

问题描述

在探索时,我经常使用 Pandas 的 DataFrame.hist() 方法来快速显示数据框中每个数字列的直方图网格,例如:

import matplotlib.pyplot as plt
import pandas as pd
from sklearn import datasets


data = datasets.load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)

df.hist(bins=50, figsize=(10,7))
plt.show()

它为每列生成一个带有单独图的图形: 它为每列生成一个带有单独图的图形

我尝试了以下方法:

import pandas as pd
import seaborn as sns
from sklearn import datasets


data = datasets.load_iris()
df = pd.DataFrame(data.data, columns=data.feature_names)

for col_id in df.columns:
    sns.distplot(df[col_id])

但这会产生一个带有单个图并且所有列都覆盖的图形: 但这会产生一个带有单个图并且所有列都覆盖的图形

有没有办法使用 Seaborn 生成直方图网格,显示来自 DataFrame 列的数据?

标签: pythonpandasjupyter-notebookseaborn

解决方案


如果您使用melt. Seaborn 通常期望以这种方式组织的数据(长格式)。

g = sns.FacetGrid(df.melt(), col='variable', col_wrap=2)
g.map(plt.hist, 'value')

在此处输入图像描述


推荐阅读