首页 > 解决方案 > 使用 pandas 在 2 个变量之间绘制图表

问题描述

我需要在我的数据集的各种属性之间绘制一个图表,根据我目前的知识,我所知道的只是直方图,因此我只能采用一个变量。

我试过这个简单的代码:

sn.catplot(x="CDR", y="Age", hue="M/F", data=df);
plt.title('Distribution of Age by CDR rate')

这是我得到的错误

CDR 是临床痴呆分级。
我确实有 R 语言的代码,他们首先将它们全部分组,然后绘制图表,但我发现更复杂,所以我决定采用这种方式。

这是我需要的图表类型。

我对这个错误一无所知。我尝试了 df.CDR、df.age、df.M/F,但由于名称“M/F”而出现错误。

'DataFrame' 对象没有属性 'M'

我尝试在数据集中更改名称,但这会产生更多错误。

如果需要 R 代码

帮助!!!! df.head()

标签: pythonrpandas

解决方案


在 Python 中,使用 seaborn.violinplot

https://seaborn.pydata.org/generated/seaborn.violinplot.html

下面的完整示例(来自 seaborn doc):

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

sns.set_theme(style="whitegrid")

tips = sns.load_dataset("tips")

df = pd.DataFrame([[0.0, 0.0, 0.0, 0.2, 0.2, 0.2, 0.2], [87, 88, 89, 60, 55, 58, 59],
                   ["M", "M", "F", "F", "F", "F", "M"]]).T
df.columns = ["CDR", "Age", "M/F"]

df = df.astype({"CDR": "float64", "Age": "int64"}) # Update type

sns.violinplot(x="CDR", y="Age", hue="M/F", data=df)
plt.show()

推荐阅读