【发布时间】:2021-08-03 15:29:05
【问题描述】:
我想整理一些数据以进行可视化和统计,但我不知道如何进行。
数据分为 3 列(stimA、stimB 和 subjectAnswer)和 10 行(成对数),它们来自成对比较测试,采用 panda 的 dataFrame 格式。示例:
| stimA | stimB | subjectAnswer |
|---|---|---|
| 1 | 2 | 36 |
| 3 | 1 | 55 |
| 5 | 3 | 98 |
| ... | ... | ... |
我的目标是将它们组织为一个矩阵,每一行和每一列对应一个刺激,其中 subjectAnswer 数据分组到矩阵对角线的左侧(在我的示例中,subjectAnswer 36 对应于 stimA 1 和 stimB 2应该去索引 [2][1]),像这样:
| stimA/stimB | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 1 | ... | ||||
| 2 | 36 | ||||
| 3 | 55 | ||||
| 4 | ... | ||||
| 5 | ... | ... | 98 |
我成功地将第一个表转为矩阵,但我无法成功排列我的数据 diag 左侧,这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
session1 = pd.read_csv(filepath, names=['stimA', 'stimB', 'subjectAnswer'])
pivoted = session1.pivot('stimA','stimB','subjectAnswer')
这给出了:
会话 1:
stimA stimB subjectAnswer
0 1 3 6
1 4 3 21
2 4 5 26
3 2 3 10
4 1 2 6
5 1 5 6
6 4 1 6
7 5 2 13
8 3 5 15
9 2 4 26
转向:
stimB 1 2 3 4 5
stimA
1 NaN 6.0 6.0 NaN 6.0
2 NaN NaN 10.0 26.0 NaN
3 NaN NaN NaN NaN 15.0
4 6.0 NaN 21.0 NaN 26.0
5 NaN 13.0 NaN NaN NaN
pivoted 的预期输出:
stimB 1 2 3 4 5
stimA
1 NaN NaN Nan NaN NaN
2 6.0 NaN Nan NaN NaN
3 6.0 10.0 NaN NaN NaN
4 6.0 26.0 21.0 NaN NaN
5 6.0 13.0 15.0 26.0 NaN
非常感谢您的帮助!
【问题讨论】:
-
您能否编辑问题以显示您期望来自
session1数据帧的所需输出?
标签: python pandas numpy statistics visualization