2017-06-30 7 views
1

Dataframe-Spalte Klasse besteht aus 2 Werte 0 und 1. Ich möchte zählen, wie viele Zeilen für Klasse 0 und wie viele Zeilen für Klasse 1. Ich habe Code wie folgt geschriebenWie Spaltenwert aus Pandas Dataframe abrufen und Bedingung überprüfen

genuine_count=0 
fraud_count=0 
if credit_card_df['Class'] == 1: 
    fraud_count +=1 
else: 
    genuine_count +=1 
print "Genuine transactions"+genuine_count 
print "Fraud transactions"+fraud_count 

ich erhalte diesen Fehler

ValueError        Traceback (most recent call last) 
<ipython-input-12-2e8ec920b69d> in <module>() 
     1 genuine_count=0 
     2 fraud_count=0 
----> 3 if credit_card_df['Class'] == 1: 
     4  fraud_count +=1 
     5 else: 

C:\Users\JAYASHREE\Anaconda2\lib\site-packages\pandas\core\generic.pyc in __nonzero__(self) 
    890   raise ValueError("The truth value of a {0} is ambiguous. " 
    891       "Use a.empty, a.bool(), a.item(), a.any() or a.all()." 
--> 892       .format(self.__class__.__name__)) 
    893 
    894  __bool__ = __nonzero__ 

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 

Bitte helfen Sie mir resolve.Thanks

Antwort

1

Just do:

fraud_count = (credit_card_df['Class'] == 1).sum() 
genuine_count = (credit_card_df['Class'] == 0).sum() 

print "Genuine transactions {}.".format(genuine_count) 
print "Fraud transactions {}.".format(fraud_count) 

Ich hoffe, das hilft.

2

Zum Glück hat pandas dies bereits für Sie geschrieben:

credit_card_df['Class'].value_counts() 

Alternativ, wenn Sie in Ihrem eigenen Format drucken möchten:

genuine_count, fraud_count = credit_card_df['Class'].value_counts(sort=True) 

print "Genuine transactions"+genuine_count 
print "Fraud transactions"+fraud_count 
+2

denke ich, kann man einfach die Ausgabe mit 'genuine_count entpacken , betrug_count = credit_card_df ['Klasse']. value_counts() ', und dann drucken. Tolle Idee, tho. – Abdou

+2

Das war eigentlich meine erste Option, aber ich war nicht sicher, dass die von 'value_counts()' zurückgegebene Serie immer sortiert würde. Ich denke, wir könnten das explizit machen, denn das ist immer besser als implizit. :) – jack6e

Verwandte Themen