Ich versuche, die Anzahl der verschiedenen Werte in jeder Spalte mit Pandas zu finden. Das habe ich getan.Anzahl der verschiedenen Elemente in DataFrame in jeder Spalte finden
import pandas as pd
df = pd.read_csv('train.csv')
# print(df)
a = pd.unique(df.values.ravel())
print(a)
Es zählt einzigartige Elemente in dem Datenrahmen, unabhängig von Zeilen/Spalten, aber ich brauche für jede Spalte mit einer Leistung, wie unten formatiert zu zählen.
policyID 0
statecode 0
county 0
eq_site_limit 0
hu_site_limit 454
fl_site_limit 647
fr_site_limit 0
tiv_2011 0
tiv_2012 0
eq_site_deductible 0
hu_site_deductible 0
fl_site_deductible 0
fr_site_deductible 0
point_latitude 0
point_longitude 0
line 0
construction 0
point_granularity 0
Was wäre der effizienteste Weg, dies zu tun, da diese Methode, um Dateien angewandt werden, die eine Größe von mehr als 1,5 GB hat?
Basierend auf den Antworten ist df.apply(lambda x: len(x.unique()))
der schnellste.
In[23]: %timeit df.apply(pd.Series.nunique)
1 loops, best of 3: 1.45 s per loop
In[24]: %timeit df.apply(lambda x: len(x.unique()))
1 loops, best of 3: 335 ms per loop
In[25]: %timeit df.T.apply(lambda x: x.nunique(), axis=1)
1 loops, best of 3: 1.45 s per loop
Ähnlich denke ich 'df.apply (pd.Series.nunique)' würde auch funktionieren (und die Notwendigkeit zu transponieren, wenn das ein Problem ist) . –
@ajcr ja, das ist eigentlich besser, zunächst dachte ich, dass die Transponierung notwendig war, um die Spalten als die Indexwerte zu erhalten – EdChum
Wie man nur die Gesamtzahl der einzigartigen Vorkommen zählt? –