python-3.x - 多行的 P 值正态检验
问题描述
我得到了以下简单的代码来计算数组的正态性:
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 值和一个统计数据。我现在唯一想要的是:
使用此p值和统计信息在文件中添加 2 列,如果我有多行,请为所有行执行此操作(计算每行的 p 值和统计信息,并在其中添加 2 列与这些值)。
有人可以帮忙吗?
解决方案
如果要按行计算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 个值(根据我的经验),因此您至少需要 8 列,df.iloc[:,1:]
否则会引发错误。甚至,每行有 20 多个值会更好。
推荐阅读
- html - 从汤对象中提取包含所需字符串的行
- python - 如何检查函数将返回什么值
- python - 使用字符串添加新列包含 python
- javascript - 使用 for 循环创建具有唯一 ID 的每个对象
- python - 如何在 Django 3.2 中通过 ForeignKey 获取对象
- android - 检测安卓设备重启
- python - 如何修复 Python 循环导入错误(顶级)?
- java - XPath 查找具有某些属性值的子项
- parallel-processing - 优化 PBS 队列系统中的模拟
- postgresql - 不支持的功能:7 错误:从 Mysql 5.5 迁移到 Postgresql 10 后,FOR UPDATE 不能应用于外连接的可空端