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
我有两个问题想解决:
- 我能够创建一个散点图,但我无法从该图中看出每个数据点中有多少参与者。有什么简单的方法可以查看每个数据点中的受试者数量吗?
我使用这段代码创建了散点图:
plt.scatter(PTSD['PTSD_Symptom_SUM'], PTSD['PTSD_Trauma_SUM'])
plt.title('Trauma Sum vs. Symptoms')
plt.xlabel('Symptoms')
plt.ylabel('Trauma Sum')
- 我没能成功地列出支持每对项目(症状和外伤数)的人数。我能够 运行 此代码来计算每个类别中的人数:
:
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")
要获得这样的东西:
现在我有一个包含 1206 名参与者的数据集,他们每个人都认可了一定数量的创伤经历和与创伤相关的一些症状。
这是我的数据框的一部分(完整数据框长 1206 行):
SubjectID | PTSD_Symptom_Sum | PTSD_Trauma_Sum |
---|---|---|
1223 | 3 | 5 |
1224 | 4 | 2 |
1225 | 2 | 6 |
1226 | 0 | 3 |
我有两个问题想解决:
- 我能够创建一个散点图,但我无法从该图中看出每个数据点中有多少参与者。有什么简单的方法可以查看每个数据点中的受试者数量吗?
我使用这段代码创建了散点图:
plt.scatter(PTSD['PTSD_Symptom_SUM'], PTSD['PTSD_Trauma_SUM'])
plt.title('Trauma Sum vs. Symptoms')
plt.xlabel('Symptoms')
plt.ylabel('Trauma Sum')
- 我没能成功地列出支持每对项目(症状和外伤数)的人数。我能够 运行 此代码来计算每个类别中的人数: :
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")
要获得这样的东西: