stats.ttest_ind统计返回无法打印的对象

2024-06-28 20:43:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Iris数据集Iris data-set进行了t检验。我计算了萼片和花瓣的长宽比,并创建了一个名为IrisLeafRatio.csv. 在

import scipy.stats as stats

# First, we'll import pandas, a data processing and CSV file I/O library
import pandas as pd
# We'll also import seaborn, a Python graphing library
import warnings # current version of seaborn generates a bunch of warnings that we'll ignore
warnings.filterwarnings("ignore")
import seaborn as sns
import matplotlib.pyplot as plt
import numpy
sns.set(style="dark", color_codes=True)

iris_ratio = pd.read_csv("IrisLeafRatio.csv") # the iris dataset is now a Pandas DataFrame

iris_setosa_sepal_ratio = numpy.asarray(iris_ratio["SepalRatio"][0:50])
iris_versicolor_sepal_ratio = numpy.asarray(iris_ratio["SepalRatio"][50:100])
iris_virginica_sepal_ratio = numpy.asarray(iris_ratio["SepalRatio"][100:150])

setosa_versicolor_sepal = stats.ttest_ind(iris_setosa_sepal_ratio, iris_versicolor_sepal_ratio)
setosa_virginica_sepal = stats.ttest_ind(iris_setosa_sepal_ratio, iris_virginica_sepal_ratio)
versicolor_virginica_sepal = stats.ttest_ind(iris_versicolor_sepal_ratio, iris_virginica_sepal_ratio)

print ("______kelkbladeren________")
print ("Setosa : Versicolor")
print (setosa_versicolor_sepal)
print ("Setosa : Virginica")
print (setosa_virginica_sepal)
print ("Versicolor : Virginica")
print (versicolor_virginica_sepal)

iris_setosa_petal_ratio = numpy.asarray(iris_ratio["PetalRatio"][0:50])
iris_versicolor_petal_ratio = numpy.asarray(iris_ratio["PetalRatio"][50:100])
iris_virginica_petal_ratio = numpy.asarray(iris_ratio["PetalRatio"][100:150])

setosa_versicolor_petal = stats.ttest_ind(iris_setosa_petal_ratio, iris_versicolor_petal_ratio)
setosa_virginica_petal = stats.ttest_ind(iris_setosa_petal_ratio, iris_virginica_petal_ratio)
versicolor_virginica_petal = stats.ttest_ind(iris_versicolor_petal_ratio, iris_virginica_petal_ratio)

print ("\n_____bloembladeren_________")
print ("Setosa : Versicolor")
print (setosa_versicolor_petal) + "Setosa : Versicolor"
print ("Setosa : Virginica")
print (setosa_virginica_petal)
print ("Versicolor : Virginica")
print (versicolor_virginica_petal)

# Returns:  
# statistic : float or array
# The calculated t-statistic.
# pvalue : float or array
# The two-tailed p-value.

问题是当我想打印stats.ttest_ind统计()函数与字符串一起收到以下错误:

^{pr2}$

看起来像那样stats.ttest_ind统计()返回一个NoneType对象,但是如果不尝试用字符串连接,为什么我可以打印它? 其次,因为它是一个非类型,所以我无法将p值提取到一个单独的变量中。在

我制作的完整数据集是:

^{3}$

在不连接任何内容的情况下,我的输出是:

______kelkbladeren________
Setosa : Versicolor
Ttest_indResult(statistic=-18.800548677777353, pvalue=2.8240078085535015e-34)
Setosa : Virginica
Ttest_indResult(statistic=-19.473337102574838, pvalue=1.8505071407928178e-35)
Versicolor : Virginica
Ttest_indResult(statistic=-1.4692886838299219, pvalue=0.14495744237234628)

_____bloembladeren_________
Setosa : Versicolor
Ttest_indResult(statistic=8.6379129492322715, pvalue=1.0844901752453786e-13)
Setosa : Virginica
Ttest_indResult(statistic=9.6474890569153793, pvalue=7.0491944878035697e-16)
Versicolor : Virginica
Ttest_indResult(statistic=6.3788055904508321, pvalue=5.910030892093215e-09)

错误发生在行中:

print (setosa_versicolor_petal) + "Setosa : Versicolor"

Tags: importirisstatsprintratioindsetosasepal
2条回答

我找到了解决办法

当我以这种方式分配变量时:

setosa_versicolor_sepal = ('%6.3f %6.25f' % stats.ttest_ind(iris_setosa_sepal_ratio, iris_versicolor_sepal_ratio))

Z值和p值以字符串的形式分配给变量,可以在我的代码中使用。在

当您尝试打印两个不同数据类型的对象时,会发生此错误。 要修复它,可以使用format,例如:

print("{}  Setosa : Versicolor").format(setosa_versicolor_petal)

请参阅How to get Python to gracefully format None and non-existing fields,了解如何用字符串代替None。在

或者您可以使用!r

^{pr2}$

这将把None打印为“None”。在

不确定scipy.stats.ttest_ind的输出,但可以尝试打印这些值

print("Statistic: {} P-value: {} Setosa : Versicolor").format(setosa_versicolor_petal.statistic, setosa_versicolor_petal.pvalue)

相关问题 更多 >