【问题标题】:Error: Unsupported operand type(s) for -: 'str' and 'str'错误:不支持的操作数类型 -:'str' 和 'str'
【发布时间】:2021-06-18 10:33:23
【问题描述】:

我想尝试使用 Python 进行相关的双尾 t 检验。不幸的是,我不断收到错误,我不知道如何解决它。

这是我的数据。

我有两个不同的 CSV - 文件:

第一:可穿戴

right
0.960, 
1.079, 
1.019, 
1.028, 
1.086, 
1.042, 
0.860, 
1.062, 
1.020, 
1.028, 
1.088, 
1.076, 
0.988, 
1.032, 
1.139, 
1.058, 
1.015, 
1.014, 
1.203, 
1.085, 
0.948, 
1.019, 
1.125, 
1.037, 
1.012, 
1.008,  
1.036, 
1.028, 
0.970, 
1.072, 
1.076, 
0.969, 
0.995, 
1.059, 
0.995

第二个:维康

right
1.010, 
1.076, 
1.057, 
1.026, 
1.036, 
0.858, 
0.984, 
1.024, 
0.966, 
1.102, 
1.079, 
1.046, 
0.936, 
0.991, 
1.217, 
1.177, 
1.010, 
1.054, 
1.324, 
1.144,
0.881, 
1.087, 
0.970, 
0.970, 
1.077, 
1.080, 
0.940, 
0.906, 
0.955, 
1.139, 
1.082, 
1.011, 
1.130, 
0.949, 
0.938

我的任务是进行依赖 t 检验。 我是这样尝试的:

vicon_right = pd.read_csv("vicon_right.csv")
tragbar_right = pd.read_csv("wearable_right.csv")
tteste=stats.ttest_rel(tragbar_right['right'],vicon_right['right'])

然后我得到错误:

TypeError: 不支持的操作数类型 -: 'str' 和 'str'

有人可以帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 您的数据从未被解析成数字。
  • 而且您在寻求帮助时还应该包含完整的 TraceBack。这样可以更轻松地关注错误的来源
  • @rdas 你的意思是错误来自那个?我怎样才能做到这一点?
  • Traceback (most recent call last): File "<ipython-input-7-6e90a821a06d>", line 43, in <module> tteste=stats.ttest_rel(wearable_right['right'],vicon_right['right']) File "C:\Users\nadin\Anaconda3\lib\site-packages\scipy\stats\stats.py", line 4661, in ttest_rel d = (a - b).astype(np.float64) TypeError: unsupported operand type(s) for -: 'str' and 'str'

标签: python csv typeerror


【解决方案1】:

问题在于您的数据集结构不正确。进行以下更改:

  • 在列标题right 之后放置,
  • 确保每个, 后面都有一个空格,因为空格表示熊猫要移动到下一行。否则,它将创建一个包含 NaN 值的列。

如果您正确执行此操作,则这些值将自动被读取为 float64 类型,您无需对其进行转换。您得到的错误是因为库进行了一些数字比较,如果输入是字符串,这显然不会发生。

请参阅下面的结构正确的 Vicon.csv 示例。

right, 
1.010, 
1.076, 
1.057, 
1.026, 
1.036, 
0.858, 
0.984, 
1.024, 
0.966, 
1.102, 
1.079, 
1.046, 
0.936, 
0.991, 
1.217, 
1.177, 
1.010, 
1.054, 
1.324, 
1.144, 
0.881, 
1.087, 
0.970, 
0.970, 
1.077, 
1.080, 
0.940, 
0.906, 
0.955, 
1.139, 
1.082, 
1.011, 
1.130, 
0.949, 
0.938, 

而当我们打印出来的时候,我们可以看到数据类型是float64。原来用vicon_data['right']这个命令打印出来,会看到数据类型是object

0     1.010
1     1.076
2     1.057
3     1.026
4     1.036
5     0.858
6     0.984
7     1.024
8     0.966
9     1.102
10    1.079
11    1.046
12    0.936
13    0.991
14    1.217
15    1.177
16    1.010
17    1.054
18    1.324
19    1.144
20    0.881
21    1.087
22    0.970
23    0.970
24    1.077
25    1.080
26    0.940
27    0.906
28    0.955
29    1.139
30    1.082
31    1.011
32    1.130
33    0.949
34    0.938
Name: right, dtype: float64

【讨论】:

  • 这非常有用。我会试试看。谢谢
猜你喜欢
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2018-12-06
  • 1970-01-01
  • 2013-08-18
相关资源
最近更新 更多