pandas 如何在python中绘制给定两个不同列值的散点图?

zqdjd7g9  于 2023-02-02  发布在  Python
关注(0)|答案(2)|浏览(150)

我有这样一个数据框

import pandas as pd

sample_df = pd.DataFrame({'ID': [25,25,25,18,18,18],
                          'AGE': [11,11,12,11,12,13],
                          'RECORD':[1,2,2,1,1,2]})

| 识别号|年龄|记录|
| - ------|- ------|- ------|
| 二十五|十一|1个|
| 二十五|十一|第二章|
| 二十五|十二|第二章|
| 十八|十一|1个|
| 十八|十二|1个|
| 十八|十三|第二章|
我想绘制的配置文件数量与年龄给定此 Dataframe 。我的期望是有一个图,为每个年龄,例如年龄11,应该有3个配置文件。或年龄12,应该有2个配置文件。我尝试使用df.查询,但我结束了混乱。你能帮助我吗?

预期输出应如下所示。每个IDx 1c 0d1x不需要图例

ezykj2lf

ezykj2lf1#

使用seaborn,但首先转换 Dataframe :

import seaborn as sns
import matplotlib.pyplot as plt

df1 = (sample_df.value_counts(['ID', 'AGE']).to_frame('PROFILE')
                .reset_index().astype(str))

sns.scatterplot(data=df1, x='AGE', y='PROFILE', hue='ID')
# OR
sns.catplot(data=df1.sort_values('PROFILE', ascending=True), x='AGE', y='PROFILE', hue='ID')

plt.show()

8nuwlpux

8nuwlpux2#

您可以指定列名,列名的值将用于根据 colormap 为标记点着色:

sample_df.groupby(['AGE', 'ID']).count().reset_index()\
    .plot.scatter(x='AGE', y='RECORD', c='ID', colormap='viridis')

相关问题