webentwicklung-frage-antwort-db.com.de

Einmalige Werte in einer Spalte in einem Pandas-Datenrahmen wie in Qlik zählen?

Wenn ich so einen Tisch habe: 

df = pd.DataFrame({
         'hID': [101, 102, 103, 101, 102, 104, 105, 101],
         'dID': [10, 11, 12, 10, 11, 10, 12, 10],
         'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
         'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})

Ich kann count(distinct hID) in Qlik tun, um die Anzahl der eindeutigen hID von 5 zu ermitteln. Wie mache ich das in Python mit einem Pandas-Datenrahmen? Oder vielleicht ein numpy Array? Wenn ich count(hID) machen sollte, bekomme ich in Qlik 8. Was ist der gleiche Weg, um dies in Pandas zu tun?

21
Alhpa Delta

Zählen Sie die Distict-Werte und verwenden Sie nunique:

df['hID'].nunique()
5

Zählen Sie nur Nicht-Null-Werte, verwenden Sie count

df['hID'].count()
8

Zählen Sie die Gesamtwerte einschließlich der Nullwerte, verwenden Sie das size-Attribut: 

df['hID'].size
8

Bearbeiten, um eine Bedingung hinzuzufügen

Verwenden Sie die boolesche Indizierung:

df.loc[df['mID']=='A','hID'].agg(['nunique','count','size'])

ODER mit query:

df.query('mID == "A"')['hID'].agg(['nunique','count','size'])

Ausgabe:

nunique    5
count      5
size       5
Name: hID, dtype: int64
35
Scott Boston

Wenn ich davon ausgehe, dass Daten der Name Ihres Datenrahmens ist, können Sie Folgendes tun:

data['race'].value_counts()

dies zeigt Ihnen das bestimmte Element und die Anzahl der Vorkommen.

10
oumar

Oder holen Sie sich die Anzahl der eindeutigen Werte für jede Spalte:

df.nunique()

dID    3
hID    5
mID    3
uID    5
dtype: int64

Neu in pandas 0.20.0pd.DataFrame.agg

df.agg(['count', 'size', 'nunique'])

         dID  hID  mID  uID
count      8    8    8    8
size       8    8    8    8
nunique    3    5    3    5

Sie konnten immer eine agg innerhalb einer groupby ausführen. Ich habe am Ende stack verwendet, weil mir die Präsentation besser gefällt.

df.groupby('mID').agg(['count', 'size', 'nunique']).stack()


             dID  hID  uID
mID                       
A   count      5    5    5
    size       5    5    5
    nunique    3    5    5
B   count      2    2    2
    size       2    2    2
    nunique    2    2    2
C   count      1    1    1
    size       1    1    1
    nunique    1    1    1
6
piRSquared

Sie können nunique in Pandas verwenden:

df.hID.nunique()
# 5
2
Psidom

sie können die eindeutige Eigenschaft verwenden, indem Sie die Funktion len verwenden

len (df ['hID']. unique ()) 5

0
Manu Siddhartha