首页 > 解决方案 > Python:如何在散点图上查找每个点的项目数并生成列表?

问题描述

现在我有一个包含 1206 名参与者的数据集,他们每个人都认可了一定数量的创伤经历和与创伤相关的一些症状。

这是我的数据框的一部分(完整的数据框长 1206 行):

主题ID PTSD_Symptom_Sum PTSD_Trauma_Sum
1223 3 5
1224 4 2
1225 2 6
1226 0 3

我有两个问题要解决:

  1. 我能够创建一个散点图,但我无法从该图中看出每个数据点中有多少参与者。有什么简单的方法可以查看每个数据点中的主题数量吗?

我使用此代码创建散点图:

plt.scatter(PTSD['PTSD_Symptom_SUM'], PTSD['PTSD_Trauma_SUM'])
plt.title('Trauma Sum vs. Symptoms')
plt.xlabel('Symptoms')
plt.ylabel('Trauma Sum')

创伤总和的散点图(按症状数量)

  1. 我无法成功地列出支持每对项目的人数(症状和创伤编号)。我能够运行此代码来创建每个类别中人数的计数::
count_sum= PTSD['PTSD_SUM'].value_counts()
count_symptom_sum= PTSD['PTSD_symptom_SUM'].value_counts()

print(count_sum)
print(count_symptom_sum)

产生这个输出:

0    379
1    371
2    248
3    130
4     47
5     17
6     11
8      2
7      1
Name: PTSD_SUM, dtype: int64
0    437
1    418
2    247
3     74
4     23
5      4
6      3
Name: PTSD_symptom_SUM, dtype: int64

是否可以更改代码以计算支持每对项目的人数(症状编号和创伤编号)?如果没有,是否有任何功能可以让我这样做?

标签: pythonlistcountscatteritems

解决方案


您可以创建一个包含每对计数的新数据集'PTSD_SUM', 'PTSD_Symptom_SUM'

counts = PTSD.groupby(by=['PTSD_symptom_SUM', 'PTSD_SUM']).size().to_frame('size').reset_index()

然后像这样使用Seaborn

import seaborn as sns
sns.scatterplot(data=counts, x="PTSD_symptom_SUM", y="PTSD_SUM", hue="size", size="size")

要获得这样的东西:

在此处输入图像描述


推荐阅读