2017-06-15 6 views
1

une dernière question pour aujourd'hui :) J'ai créé un tableau croisé à partir d'un df. ce tableau croisé est apparemment un objet de série. au lieu d'imprimer le tableau croisé entier, dans le besoin une valeur agrégée indiquant la précision de cette grille. par exemple. tous corrects prédit des valeurs par rapport à la quantité totale de données:pandas python obtenir la précision de la série

(31 + 48)/(31 + 43 + 33 + 48) = 0.509

Prediction ZV 
-1   -1 31 
      1 43 
1   -1 33 
      1 48 

I trouvé des échantillons, mais aucun d'entre eux avaient un tableau croisé en entrée ... merci! E!

+0

Êtes-vous que '31 + 48'? – jezrael

+0

@jezrael oui :) prédiction est 1 et le résultat est également 1 – Ele

Répondre

1

Vous devez d'abord filtre toutes les valeurs où les valeurs d'index dans les niveaux sont les mêmes, puis diviser par la somme:

print (s[s.index.get_level_values('Prediction') == s.index.get_level_values('ZV')]) 
Prediction ZV 
-1   -1 31 
1   1 48 
Name: val, dtype: int64 


s1 = s[s.index.get_level_values('Prediction')==s.index.get_level_values('ZV')].sum()/s.sum() 
print (s1) 
0.5096774193548387 
+1

Je modifie la réponse, mais je ne suis pas sûr de comprendre. – jezrael

+1

merci! C'est ce dont j'avais besoin !!! – Ele

+0

Désolé, maintenant je pense que c'est une faute de frappe. Belle journée! – jezrael