2017-08-30 3 views
0

J'ai effectué un test t sur le jeu de données Iris Iris data-set. J'ai calculé le rapport entre la longueur et la largeur des sépales et des pétales et créé un nouveau jeu de données appelé IrisLeafRatio.csv.stats.ttest_ind returns Objet NoneType mais je suis capable de l'imprimer

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. 

Le problème est quand je veux imprimer le résultat de la fonction stats.ttest_ind() avec une chaîne que je reçois l'erreur suivante:

unsupported operand type(s) for +: 'NoneType' and 'str' 

On dirait que stats.ttest_ind () renvoie un objet NoneType mais pourquoi suis-je capable de l'imprimer si je n'essaie pas de concaténer avec une chaîne? Deuxièmement parce que c'est un NoneType, je suis incapable d'extraire la valeur p dans une variable séparée.

L'ensemble de données complet que je fait est:

Id,SepalLengthCm,SepalWidthCm,SepalRatio, PetalLengthCm,PetalWidthCm,PetalRatio,Species 
1,5.1,3.5, 1.46, 1.4,0.2, 7.0, Iris-setosa 
2,4.9,3.0, 1.63, 1.4,0.2, 7.0, Iris-setosa 
3,4.7,3.2, 1.47, 1.3,0.2, 6.5, Iris-setosa 
4,4.6,3.1, 1.48, 1.5,0.2, 7.5, Iris-setosa 
5,5.0,3.6, 1.39, 1.4,0.2, 7.0, Iris-setosa 
6,5.4,3.9, 1.38, 1.7,0.4, 4.25, Iris-setosa 
7,4.6,3.4, 1.35, 1.4,0.3, 4.67, Iris-setosa 
8,5.0,3.4, 1.47, 1.5,0.2, 7.5, Iris-setosa 
9,4.4,2.9, 1.52, 1.4,0.2, 7.0, Iris-setosa 
10,4.9,3.1, 1.58, 1.5,0.1, 15.0, Iris-setosa 
11,5.4,3.7, 1.46, 1.5,0.2, 7.5, Iris-setosa 
12,4.8,3.4, 1.41, 1.6,0.2, 8.0, Iris-setosa 
13,4.8,3.0, 1.6, 1.4,0.1, 14.0, Iris-setosa 
14,4.3,3.0, 1.43, 1.1,0.1, 11.0, Iris-setosa 
15,5.8,4.0, 1.45, 1.2,0.2, 6.0, Iris-setosa 
16,5.7,4.4, 1.3, 1.5,0.4, 3.75, Iris-setosa 
17,5.4,3.9, 1.38, 1.3,0.4, 3.25, Iris-setosa 
18,5.1,3.5, 1.46, 1.4,0.3, 4.67, Iris-setosa 
19,5.7,3.8, 1.5, 1.7,0.3, 5.67, Iris-setosa 
20,5.1,3.8, 1.34, 1.5,0.3, 5.0, Iris-setosa 
21,5.4,3.4, 1.59, 1.7,0.2, 8.5, Iris-setosa 
22,5.1,3.7, 1.38, 1.5,0.4, 3.75, Iris-setosa 
23,4.6,3.6, 1.28, 1.0,0.2, 5.0, Iris-setosa 
24,5.1,3.3, 1.55, 1.7,0.5, 3.4, Iris-setosa 
25,4.8,3.4, 1.41, 1.9,0.2, 9.5, Iris-setosa 
26,5.0,3.0, 1.67, 1.6,0.2, 8.0, Iris-setosa 
27,5.0,3.4, 1.47, 1.6,0.4, 4.0, Iris-setosa 
28,5.2,3.5, 1.49, 1.5,0.2, 7.5, Iris-setosa 
29,5.2,3.4, 1.53, 1.4,0.2, 7.0, Iris-setosa 
30,4.7,3.2, 1.47, 1.6,0.2, 8.0, Iris-setosa 
31,4.8,3.1, 1.55, 1.6,0.2, 8.0, Iris-setosa 
32,5.4,3.4, 1.59, 1.5,0.4, 3.75, Iris-setosa 
33,5.2,4.1, 1.27, 1.5,0.1, 15.0, Iris-setosa 
34,5.5,4.2, 1.31, 1.4,0.2, 7.0, Iris-setosa 
35,4.9,3.1, 1.58, 1.5,0.1, 15.0, Iris-setosa 
36,5.0,3.2, 1.56, 1.2,0.2, 6.0, Iris-setosa 
37,5.5,3.5, 1.57, 1.3,0.2, 6.5, Iris-setosa 
38,4.9,3.1, 1.58, 1.5,0.1, 15.0, Iris-setosa 
39,4.4,3.0, 1.47, 1.3,0.2, 6.5, Iris-setosa 
40,5.1,3.4, 1.5, 1.5,0.2, 7.5, Iris-setosa 
41,5.0,3.5, 1.43, 1.3,0.3, 4.33, Iris-setosa 
42,4.5,2.3, 1.96, 1.3,0.3, 4.33, Iris-setosa 
43,4.4,3.2, 1.38, 1.3,0.2, 6.5, Iris-setosa 
44,5.0,3.5, 1.43, 1.6,0.6, 2.67, Iris-setosa 
45,5.1,3.8, 1.34, 1.9,0.4, 4.75, Iris-setosa 
46,4.8,3.0, 1.6, 1.4,0.3, 4.67, Iris-setosa 
47,5.1,3.8, 1.34, 1.6,0.2, 8.0, Iris-setosa 
48,4.6,3.2, 1.44, 1.4,0.2, 7.0, Iris-setosa 
49,5.3,3.7, 1.43, 1.5,0.2, 7.5, Iris-setosa 
50,5.0,3.3, 1.52, 1.4,0.2, 7.0, Iris-setosa 
51,7.0,3.2, 2.19, 4.7,1.4, 3.36, Iris-versicolor 
52,6.4,3.2, 2.0, 4.5,1.5, 3.0, Iris-versicolor 
53,6.9,3.1, 2.23, 4.9,1.5, 3.27, Iris-versicolor 
54,5.5,2.3, 2.39, 4.0,1.3, 3.08, Iris-versicolor 
55,6.5,2.8, 2.32, 4.6,1.5, 3.07, Iris-versicolor 
56,5.7,2.8, 2.04, 4.5,1.3, 3.46, Iris-versicolor 
57,6.3,3.3, 1.91, 4.7,1.6, 2.94, Iris-versicolor 
58,4.9,2.4, 2.04, 3.3,1.0, 3.3, Iris-versicolor 
59,6.6,2.9, 2.28, 4.6,1.3, 3.54, Iris-versicolor 
60,5.2,2.7, 1.93, 3.9,1.4, 2.79, Iris-versicolor 
61,5.0,2.0, 2.5, 3.5,1.0, 3.5, Iris-versicolor 
62,5.9,3.0, 1.97, 4.2,1.5, 2.8, Iris-versicolor 
63,6.0,2.2, 2.73, 4.0,1.0, 4.0, Iris-versicolor 
64,6.1,2.9, 2.1, 4.7,1.4, 3.36, Iris-versicolor 
65,5.6,2.9, 1.93, 3.6,1.3, 2.77, Iris-versicolor 
66,6.7,3.1, 2.16, 4.4,1.4, 3.14, Iris-versicolor 
67,5.6,3.0, 1.87, 4.5,1.5, 3.0, Iris-versicolor 
68,5.8,2.7, 2.15, 4.1,1.0, 4.1, Iris-versicolor 
69,6.2,2.2, 2.82, 4.5,1.5, 3.0, Iris-versicolor 
70,5.6,2.5, 2.24, 3.9,1.1, 3.55, Iris-versicolor 
71,5.9,3.2, 1.84, 4.8,1.8, 2.67, Iris-versicolor 
72,6.1,2.8, 2.18, 4.0,1.3, 3.08, Iris-versicolor 
73,6.3,2.5, 2.52, 4.9,1.5, 3.27, Iris-versicolor 
74,6.1,2.8, 2.18, 4.7,1.2, 3.92, Iris-versicolor 
75,6.4,2.9, 2.21, 4.3,1.3, 3.31, Iris-versicolor 
76,6.6,3.0, 2.2, 4.4,1.4, 3.14, Iris-versicolor 
77,6.8,2.8, 2.43, 4.8,1.4, 3.43, Iris-versicolor 
78,6.7,3.0, 2.23, 5.0,1.7, 2.94, Iris-versicolor 
79,6.0,2.9, 2.07, 4.5,1.5, 3.0, Iris-versicolor 
80,5.7,2.6, 2.19, 3.5,1.0, 3.5, Iris-versicolor 
81,5.5,2.4, 2.29, 3.8,1.1, 3.45, Iris-versicolor 
82,5.5,2.4, 2.29, 3.7,1.0, 3.7, Iris-versicolor 
83,5.8,2.7, 2.15, 3.9,1.2, 3.25, Iris-versicolor 
84,6.0,2.7, 2.22, 5.1,1.6, 3.19, Iris-versicolor 
85,5.4,3.0, 1.8, 4.5,1.5, 3.0, Iris-versicolor 
86,6.0,3.4, 1.76, 4.5,1.6, 2.81, Iris-versicolor 
87,6.7,3.1, 2.16, 4.7,1.5, 3.13, Iris-versicolor 
88,6.3,2.3, 2.74, 4.4,1.3, 3.38, Iris-versicolor 
89,5.6,3.0, 1.87, 4.1,1.3, 3.15, Iris-versicolor 
90,5.5,2.5, 2.2, 4.0,1.3, 3.08, Iris-versicolor 
91,5.5,2.6, 2.12, 4.4,1.2, 3.67, Iris-versicolor 
92,6.1,3.0, 2.03, 4.6,1.4, 3.29, Iris-versicolor 
93,5.8,2.6, 2.23, 4.0,1.2, 3.33, Iris-versicolor 
94,5.0,2.3, 2.17, 3.3,1.0, 3.3, Iris-versicolor 
95,5.6,2.7, 2.07, 4.2,1.3, 3.23, Iris-versicolor 
96,5.7,3.0, 1.9, 4.2,1.2, 3.5, Iris-versicolor 
97,5.7,2.9, 1.97, 4.2,1.3, 3.23, Iris-versicolor 
98,6.2,2.9, 2.14, 4.3,1.3, 3.31, Iris-versicolor 
99,5.1,2.5, 2.04, 3.0,1.1, 2.73, Iris-versicolor 
100,5.7,2.8, 2.04, 4.1,1.3, 3.15, Iris-versicolor 
101,6.3,3.3, 1.91, 6.0,2.5, 2.4, Iris-virginica 
102,5.8,2.7, 2.15, 5.1,1.9, 2.68, Iris-virginica 
103,7.1,3.0, 2.37, 5.9,2.1, 2.81, Iris-virginica 
104,6.3,2.9, 2.17, 5.6,1.8, 3.11, Iris-virginica 
105,6.5,3.0, 2.17, 5.8,2.2, 2.64, Iris-virginica 
106,7.6,3.0, 2.53, 6.6,2.1, 3.14, Iris-virginica 
107,4.9,2.5, 1.96, 4.5,1.7, 2.65, Iris-virginica 
108,7.3,2.9, 2.52, 6.3,1.8, 3.5, Iris-virginica 
109,6.7,2.5, 2.68, 5.8,1.8, 3.22, Iris-virginica 
110,7.2,3.6, 2.0, 6.1,2.5, 2.44, Iris-virginica 
111,6.5,3.2, 2.03, 5.1,2.0, 2.55, Iris-virginica 
112,6.4,2.7, 2.37, 5.3,1.9, 2.79, Iris-virginica 
113,6.8,3.0, 2.27, 5.5,2.1, 2.62, Iris-virginica 
114,5.7,2.5, 2.28, 5.0,2.0, 2.5, Iris-virginica 
115,5.8,2.8, 2.07, 5.1,2.4, 2.12, Iris-virginica 
116,6.4,3.2, 2.0, 5.3,2.3, 2.3, Iris-virginica 
117,6.5,3.0, 2.17, 5.5,1.8, 3.06, Iris-virginica 
118,7.7,3.8, 2.03, 6.7,2.2, 3.05, Iris-virginica 
119,7.7,2.6, 2.96, 6.9,2.3, 3.0, Iris-virginica 
120,6.0,2.2, 2.73, 5.0,1.5, 3.33, Iris-virginica 
121,6.9,3.2, 2.16, 5.7,2.3, 2.48, Iris-virginica 
122,5.6,2.8, 2.0, 4.9,2.0, 2.45, Iris-virginica 
123,7.7,2.8, 2.75, 6.7,2.0, 3.35, Iris-virginica 
124,6.3,2.7, 2.33, 4.9,1.8, 2.72, Iris-virginica 
125,6.7,3.3, 2.03, 5.7,2.1, 2.71, Iris-virginica 
126,7.2,3.2, 2.25, 6.0,1.8, 3.33, Iris-virginica 
127,6.2,2.8, 2.21, 4.8,1.8, 2.67, Iris-virginica 
128,6.1,3.0, 2.03, 4.9,1.8, 2.72, Iris-virginica 
129,6.4,2.8, 2.29, 5.6,2.1, 2.67, Iris-virginica 
130,7.2,3.0, 2.4, 5.8,1.6, 3.62, Iris-virginica 
131,7.4,2.8, 2.64, 6.1,1.9, 3.21, Iris-virginica 
132,7.9,3.8, 2.08, 6.4,2.0, 3.2, Iris-virginica 
133,6.4,2.8, 2.29, 5.6,2.2, 2.55, Iris-virginica 
134,6.3,2.8, 2.25, 5.1,1.5, 3.4, Iris-virginica 
135,6.1,2.6, 2.35, 5.6,1.4, 4.0, Iris-virginica 
136,7.7,3.0, 2.57, 6.1,2.3, 2.65, Iris-virginica 
137,6.3,3.4, 1.85, 5.6,2.4, 2.33, Iris-virginica 
138,6.4,3.1, 2.06, 5.5,1.8, 3.06, Iris-virginica 
139,6.0,3.0, 2.0, 4.8,1.8, 2.67, Iris-virginica 
140,6.9,3.1, 2.23, 5.4,2.1, 2.57, Iris-virginica 
141,6.7,3.1, 2.16, 5.6,2.4, 2.33, Iris-virginica 
142,6.9,3.1, 2.23, 5.1,2.3, 2.22, Iris-virginica 
143,5.8,2.7, 2.15, 5.1,1.9, 2.68, Iris-virginica 
144,6.8,3.2, 2.12, 5.9,2.3, 2.57, Iris-virginica 
145,6.7,3.3, 2.03, 5.7,2.5, 2.28, Iris-virginica 
146,6.7,3.0, 2.23, 5.2,2.3, 2.26, Iris-virginica 
147,6.3,2.5, 2.52, 5.0,1.9, 2.63, Iris-virginica 
148,6.5,3.0, 2.17, 5.2,2.0, 2.6, Iris-virginica 
149,6.2,3.4, 1.82, 5.4,2.3, 2.35, Iris-virginica 
150,5.9,3.0, 1.97, 5.1,1.8, 2.83, Iris-virginica 

Sans concaténer quoi que ce soit, ma sortie est:

______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) 

L'erreur occures dans la ligne:

print (setosa_versicolor_petal) + "Setosa : Versicolor" 

Répondre

0

Cette erreur se produit lorsque vous essayez d'imprimer deux objets de types de données différents. Pour résoudre ce problème, vous pouvez utiliser format, par exemple:

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

Voir How to get Python to gracefully format None and non-existing fields sur la façon de montrer une chaîne en place de None.

Ou bien vous pouvez utiliser !r

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

ce imprimera Aucun comme "Aucun".

Pas sûr de la sortie de scipy.stats.ttest_ind mais vous pouvez essayer d'imprimer les valeurs

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

Malheureusement, cela n'aidera pas. Les deux options entraînent l'erreur: AttributeError: l'objet 'NoneType' n'a pas d'attribut 'format' –

+0

Cela fonctionne-t-il lors de l'impression des valeurs? – user2314737

+0

J'ai trouvé la solution comme décrit dans ma réponse. Merci de votre aide. –

0

J'ai trouvé la solution

Quand j'ASIGN les variables de cette façon:

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

la valeur Z et la valeur P sont affectées à la variable sous la forme d'une chaîne de caractères et peuvent être utilisées dans mon code.