多行的P值正态检验

时间:2018-11-25 18:56:45

标签: python-3.x pandas statistics

我得到了以下简单的代码来计算数组的正态性:

import pandas as pd
df = pd.read_excel("directory\file.xlsx")
import numpy as np
x=df.iloc[:,1:].values.flatten()
import scipy.stats as stats
from scipy.stats import normaltest 
stats.normaltest(x,axis=None)

这很好地为我提供了p值和统计信息。 我现在唯一想要的是:

在文件中添加2列,并带有此 p 值和统计;如果我有多行,请对所有行执行此操作(计算每行的p值和统计信息,并在其中添加2列,其中包含这些值。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果您要按行计算normaltest,则不应flatten中的数据x,而应使用axis=1,例如

df = pd.DataFrame(np.random.random(105).reshape(5,21)) # to generate data
# calculate normaltest row-wise without the first column like you
df['stat'] ,df['p'] = stats.normaltest(df.iloc[:,1:],axis=1)

然后df包含两列“ stat”和“ p”,其中包含您要寻找IIUC的值。

注意:为了能够执行normaltest,您至少需要8个值(根据我的经验),因此在df.iloc[:,1:]中至少需要8列,否则会引发错误。甚至最好每行有20个以上的值。