2016-08-01 10 views
-1

Ich möchte die Anzahl der Vorkommen von Ländern in einem Datenrahmen zählen, unten ist die Stichprobe und auch die Top-2-Länder nach Vorkommen.Python: Wie überprüft man die Anzahl der Vorkommen und Top (n) -Werte in einem Datenrahmen?

  Date   Location 
0 09/17/1908   Virginia 
1 07/12/1912   New Jersey 
2 08/06/1913    Canada 
3 09/09/1913    England 
4 10/17/1913    Germany 
5 03/05/1915    Belgium 
6 09/03/1915    Germany 
7 07/28/1916   Bulgeria 
8 09/24/1916    England 
9 10/01/1916    England 

Ergebniswert sollte wie unten sein:

Location Count 
England  3 
Germany  2 
+0

Können Sie setzen, was Sie bisher versucht haben? –

+0

Ich habe versucht, df.pivot_table() und df.groupby(), aber leider konnte ich nicht die erwarteten Ergebnisse von einer der Funktionen erhalten. Ich bin neu in Python – Soumyaansh

+0

@Soumyaansh hat meine Antwort für Sie arbeiten? Wenn nicht, lassen Sie mich wissen, welche Ergebnisse Sie erhalten haben. –

Antwort

1
countCollection = df['collection'].value_counts() 

.value_counts() geben Ihnen einen Zähler für die Objekte aus der Sammlung collection in einem Datenrahmen genannt.

Auch, wie Sie erwähnen Sie Python neu sind, um den endgültige Wert zu erhalten:

countCollection["a"] 

wird den Zählwert aus der zurückgegebenen Sammlung von Zählungen, für die Zeile mit der Taste „a“ erhalten.

0

können Sie groupby zusammen mit size verwenden:

counts = df.groupby('Location').size() 

counts ist vom Typ pandas.Series. Sie können es bestellen, indem

counts.sort_values(inplace=True) 

Vergleich zu der Antwort von Nick:

import pandas as pd 
import numpy as np 

# number of items in list 
N = 1e4 

# create a list uniformely samples characters 
l = np.random.choice(list('abcd'), N) 

# create a DataFrame 
df = pd.DataFrame(l, columns=['char']) 

den ipython Magie Befehl timeit für N=1e4

In [1]: %timeit df.char.value_counts() 
1000 loops, best of 3: 1.34 ms per loop 

In [2]: %timeit df.groupby('char').size() 
1000 loops, best of 3: 1.01 ms per loop 

und N=1e6

In [1]: %timeit df.char.value_counts() 
10 loops, best of 3: 64.2 ms per loop 

In [2]: %timeit df.groupby('char').size() 
10 loops, best of 3: 73.2 ms per loop 

Für kleinere Datenrahmen, groupby & size ist schneller als value_counts, aber für größere DateFrames value_counts ist schneller als groupby & size

Verwandte Themen