gpt4 book ai didi

python - 如何为 Dataframe 中的所有列绘制 Seaborn Distplots 矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:04 26 4
gpt4 key购买 nike

假设我有一个包含 9 列的数据框。我希望能够实现与 df.hist() 相同的效果,但使用 sns.distplot()。

换句话说,我希望能够在 3 行和 3 列的可视化中为数据框中的每一列绘制 sns.distplot(),其中每个子图代表每列的唯一 sns.distplot()对于数据框中的总列数。

我对数据框的轴和列使用 for 循环进行了一些试验,但我只能获得指定列的结果。我不确定如何表示适用于行和列的代码。

我也研究了 sns.FacetGrid,但我不确定如何使用 FacetGrid 解决这个问题。

我发现 df.hist() 函数正是我想要的,但我希望能够使用与 df.hist() 输出相同的表示形式的所有列的 sns.distplot 来完成它。

如果有助于放置数据框的上下文,我实际上是在阅读 Google Colab 的加利福尼亚住房数据集的训练和测试集,其中包含除 ocean_proximity 之外的所有列。如果你想用那个数据集帮助我解决这个问题,请从 Kaggle 获取它并删除 ocean_proximity 列。

我的 9 列方法:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.read_csv('housing.csv')
df.drop('ocean_proximity', axis=1, inplace=True)
fig, axes = plt.subplots(ncols=len(df.columns), figsize=(30,15))
for ax, col in zip(axes, df.columns):
sns.distplot(df[col], ax=ax)
plt.tight_layout()
plt.show()

最佳答案

您可以使用像这样的子图使用 matplotlib 创建多个图形

import matplotlib.pyplot as plt
# Define the number of rows and columns you want
n_rows=3
n_cols=3
# Create the subplots
fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols)

您可以查看 subplots用作创建形状为 [n_rows, n_cols] 的矩阵(二维数组),并使用矩阵元素的坐标来选择绘制位置。

然后,您使用 ax 参数在不同的子图中绘制每一列,以给出矩阵元素的坐标。使用 ax=axes[i,j] 将指定要打印的子图:

for i, column in enumerate(df.columns):
sns.distplot(df[column],ax=axes[i//n_cols,i%n_cols])

来自 BenCaldwell 的评论“i//ncols 给出了地板除法,当你从左到右然后从上到下工作时,它是行。i%ncols 会给你整数余数,当你从左到从上到下。”

如果您想绘制离散数据集而不是使用 distplot 来估计数据背后的数据分布,您可以使用新的 histplot功能。

关于python - 如何为 Dataframe 中的所有列绘制 Seaborn Distplots 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com