我有两张数据表。每个表具有相同的尺寸245x10。可以找到原始文件here。我需要计算这两个表的t检验;但是,当我应用numpy函数时,我收到错误。
import scipy.stats as st
import numpy as np
import pandas as pd
df = pd.read_csv('GC Cerbellum final.txt', sep='\t')
df1 = df.ix[:, 1:12]
df2 = df.ix[:, 12:]
st.ttest_ind(df1, df2)
/usr/local/lib/python2.7/dist-packages/numpy/core/fromnumeric.pyc in var(a,axis,dtype,out,ddof,keepdims)2936 2937 return _methods._var(a,axis = axis,dtype = dtype,out = out,ddof = ddof, - > 2938 keepdims = keepdims)
/usr/local/lib/python2.7/dist-packages/numpy/core/_methods.pyc in _var(a,axis,dtype,out,ddof,keepdims) 93如果是实例(arrmean,mu.ndarray): 94 arrmean = um.true_divide( ---> 95 arrmean,rcount,out = arrmean,cast =' unsafe',subok = False) 96其他: 97 arrmean = arrmean.dtype.type(arrmean / rcount)
TypeError:/:' str'不支持的操作数类型和' int'
我检查过,看起来所有数据都是整数,我不知道为什么它会在字符串上失败。也可能是因为缺少值以某种方式用字符串填充,它就会失败。
所以我的问题是如何在python中对缺少值的两个表执行t检验?
答案 0 :(得分:1)
你的文件中有NA,但是pandas不知道如何解释它们。你可以像
一样阅读df = pd.read_csv('GC Cerbellum final.txt', sep='\t', na_values=[' NA'])
和pandas将它们读作浮点列而不是字符串列,并适当地使用NaN。
(顺便说一下,你的切片看起来也不对。)