我很难理解大熊猫和/或numpy是如何处理NaN值的。我正在提取熊猫数据帧的子集以便计算t-stats,例如我想知道x1值为A的组与x1值为B的组相比x2的平均值是否存在显着差异(道歉为不使这是一个工作示例,但我不知道如何重新在我的数据框弹出NaN值,原来的数据被读取使用read_csv,用CSV表示与NA
遗漏值):NaN的治疗
import numpy as np
import pandas as pd
import scipy.stats as st
A = data[data['x1']=='A']['x2']
B = data[data['x1']=='B'].x2
A
2 3
3 1
5 2
6 3
10 3
12 2
15 2
16 0
21 0
24 1
25 1
28 NaN
31 0
32 3
...
677 0
681 NaN
682 3
683 1
686 2
Name: praxiserf, Length: 335, dtype: float64
也就是说,我有两个pandas.core.series.Series
对象,然后我想对...进行t检验。然而,使用
st.ttest_ind(A, B)
回报:
(array(nan), nan)
我想这已经做的事实,ttest_ind
接受数组作为输入,并似乎有转换系列时我NaN值是一个问题数组。如果我尝试计算原始一系列手段,我得到:
A.mean(), B.mean()
1.5802, 1.2
然而,当我尝试打开串联成一个数组,我得到:
A_array = np.asarray(A)
A_array
array([ 3., 1., 2., 3., 3., 2., 2., 0., 0., 1., 1.,
nan, 0., 3., ..., 1., nan, 0., 3. ])
也就是说,NaN
变成nan
和采取的手段不工作了:
A.mean()
nan
应该如何缺失的值,以确保我仍然可以做的计算与系列/阵列可以治疗吗?
谢谢,这个工作很完美,只有'n'''''''似乎只有在'A'和'B'具有相同大小时才能工作,所以我只用了一行'st.ttest_ind(A [np (A)],B [np.isfinite(B)])' –