Używam pand jako zamiennika bazy danych, ponieważ mam wiele baz danych (Oracle, mssql itp.) I nie jestem w stanie wykonać sekwencji poleceń do odpowiednika SQL.
Mam tabelę załadowaną do DataFrame z niektórymi kolumnami:
YEARMONTH, CLIENTCODE, SIZE, .... etc etc
W SQL, policzenie liczby różnych klientów rocznie byłoby:
SELECT count(distinct CLIENTCODE) FROM table GROUP BY YEARMONTH;
I wynik byłby
201301 5000
201302 13245
Jak mogę to zrobić w pandach?
value_counts
może być odpowiedzią, której szukasz: pandas.pydata.org/pandas-docs/stable/generated/…Odpowiedzi:
Wierzę, że tego właśnie chcesz:
Przykład:
źródło
nunique
? Spróbuj, jak mogę, nie mogę znaleźć sposobu, ponieważ wynikiem tej odpowiedzi jest, aSeries
nieDataFrame
.Oto inna metoda, bardzo prosta, powiedzmy, że twoja nazwa ma nazwę
daat
i nazwa kolumny toYEARMONTH
źródło
DISTINCT
wymagań zawartych w pytaniu! Co więcej, nie obejmuje liczbyNaN
!Co ciekawe, bardzo często
len(unique())
jest kilka razy (3x-15x) szybszy niżnunique()
.źródło
.CLIENTCODE.apply(lambda x: len(x.unique()))
, stądapply
rozmowie z lambda. Na przykładdf.groupby('YEARMONTH')['CLIENTCODE'].apply(lambda x: x.unique().shape[0])
.len(df['column'].unique())
funkcji lambdaTypeError: object of type 'method' has no len()
odChen's
komentarza,3novak's
pracował dla mnie.Przy użyciu
crosstab
zwróci to więcej informacji niżgroupby
nunique
Po niewielkiej modyfikacji zmodyfikuj wynik
źródło
YEARMONTH
icount
. Czy mogę również ustawić liczbę w kolejności malejącej?Ja również używam,
nunique
ale będzie bardzo pomocne, jeśli musisz użyć funkcji agregującej, takiej jak'min', 'max', 'count' or 'mean'
itp.źródło
Dzięki nowej wersji pand łatwo jest uzyskać ramkę danych
źródło
W tym przypadku podejście ma mieć odrębną liczbę w wielu kolumnach. Chodźmy trochę danych:
Teraz wypisz interesujące kolumny i użyj groupby w nieco zmodyfikowanej składni:
Otrzymujemy:
źródło
Wyróżnia kolumnę wraz z agregacjami na innych kolumnach
Aby uzyskać odrębną liczbę wartości dla dowolnej kolumny (
CLIENTCODE
w twoim przypadku), możemy użyćnunique
. Możemy przekazać dane wejściowe jako słownikagg
funkcji wraz z agregacjami w innych kolumnach:źródło