【问题标题】:Python: How to find the number of items in each point on scatterplot and produce list?Python:如何在散点图上查找每个点的项目数并生成列表?
【发布时间】:2021-01-25 17:51:49
【问题描述】:

现在我有一个包含 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

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

【问题讨论】:

标签: python list count scatter items


【解决方案1】:

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

要获得这样的东西:

【讨论】:

  • 非常感谢!只是一个问题,在我的图表中,它看起来像是被分组为 60、120、180、240 和 300 的类别。您知道如何更改分组或获取特定数字吗?
  • 尺寸自动从数据中输出。没有(或者至少我还没有找到)允许覆盖它们的参数。如果答案对您有用,请留下您的投票。我很感激!
【解决方案2】:

如果我理解正确,您的数据框是:

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

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

此行将返回每个唯一值的计数

【讨论】:

  • 我更新了帖子以显示数据集的一部分。有没有办法用它来只显示每对的计数?非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多