Python: 如何求散点图和产品列表中每个点的项目数?

Python: How to find the number of items in each point on scatterplot and produce list?

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

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

SubjectID 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

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

如果我没理解错的话,你的数据框是:

SubjectID TraumaSum Symptoms
1         1         5
2         3         4
...

所以你只需要: dataset.groupby(by=['PTSD_SUM', 'PTSD_Symptom_SUM']).count()

这一行将为您return计算每个唯一值

您可以使用每对 '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")

要获得这样的东西: