首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我得到的是TypeError: /:'str‘和'int’不支持的操作数类型?

问为什么我得到的是TypeError: /:'str‘和'int’不支持的操作数类型?
EN

Stack Overflow用户
提问于 2019-12-23 02:27:51
回答 1查看 627关注 0票数 2

在下面关于stats的问题中,我尝试在python中使用“双样本独立t-test”。

一家百货公司的分析师想要评估最近的信用卡促销活动。为此,随机选择了500名持卡人。一半的人收到了一则广告,宣传在接下来的三个月里购买的商品利率会降低,另一半人收到的是标准的季节性广告。促销对提高销售量是否有效?下面是我的代码。我在写代码的时候出错了,请帮帮忙。

代码语言:javascript
复制
from scipy import stats

std_promo = cust[(cust['insert'] == 'Standard')]
new_promo = cust[(cust['insert'] == 'New Promotion')]

print(std_promo.head(3))
print(new_promo.head(3))

     id    insert      dollars
0   148  Standard  2232.771979
2   973  Standard  2327.092181
3  1096  Standard  1280.030541

     id         insert      dollars
1   572  New Promotion  1403.807542
4  1541  New Promotion  1513.563200
5  1947  New Promotion  1729.627996

print (std_promo.mean())
print (new_promo.mean())

    id         69003.000000
    dollars     1566.389031
    dtype: float64
    id         64998.244000
    dollars     1637.499983
    dtype: float64
    print (std_promo.std())
    print (new_promo.std())
    id         37753.106923
    dollars      346.673047
    dtype: float64
    id         38508.218870
    dollars      356.703169
    dtype: float64

stats.ttest_ind(a= std_promo, b= new_promo, equal_var= True)
代码语言:javascript
复制
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-76-b40f7d9d7a3e> in <module>
      1 stats.ttest_ind(a= std_promo,
----> 2                 b= new_promo)

~\Anaconda3\lib\site-packages\scipy\stats\stats.py in ttest_ind(a, b, axis, equal_var, nan_policy)
   4163         return Ttest_indResult(np.nan, np.nan)
   4164 
-> 4165     v1 = np.var(a, axis, ddof=1)
   4166     v2 = np.var(b, axis, ddof=1)
   4167     n1 = a.shape[axis]

~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in var(a, axis, dtype, out, ddof, keepdims)
   3365 
   3366     return _methods._var(a, axis=axis, dtype=dtype, out=out, ddof=ddof,
-> 3367                          **kwargs)
   3368 
   3369 

~\Anaconda3\lib\site-packages\numpy\core\_methods.py in _var(a, axis, dtype, out, ddof, keepdims)
    108     if isinstance(arrmean, mu.ndarray):
    109         arrmean = um.true_divide(
--> 110                 arrmean, rcount, out=arrmean, casting='unsafe', subok=False)
    111     else:
    112         arrmean = arrmean.dtype.type(arrmean / rcount)

TypeError: unsupported operand type(s) for /: 'str' and 'int'
EN

回答 1

Stack Overflow用户

发布于 2019-12-23 02:52:19

我认为你需要改变:

代码语言:javascript
复制
stats.ttest_ind(a= std_promo, b= new_promo, equal_var= True)

至

代码语言:javascript
复制
stats.ttest_ind(a= std_promo.dollars, b= new_promo.dollars, equal_var= True)

我创建了一个与您的类似的DF,并运行以下代码,它使用美元运行:

代码语言:javascript
复制
Ttest_indResult(statistic=7.144078895160622, pvalue=9.765848295636031e-05)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59446997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档