[PYTHON] Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen

Zweck

Ich möchte die Wertvariablen mit zwei Kategorievariablen in Pandas kreuztabellieren und den gesamten eindeutigen Wert der Wertvariablen ermitteln.

Der folgende Code, wenn in SQL geschrieben

SELECT date,carrier,count(DISTINCT host) as cnt
FROM apachelog
GROUP BY date,carrier;

Gesamtbild

Zählen Sie den eindeutigen Wert des variablen Hosts für jedes Datum und jede Trägervariable (3 Kategorien: Android, iOS, Andere).

date Android iOS Other
2015/04/01 5000 1300 15
2015/04/02 5200 1230 16
2015/04/03 5300 1100 17
... ... ... ...

Code in python3 (1) Verwenden Sie die Methode pivot_table

Durchschnittswert von Spalte A für jede Zelle der Kreuztabelle (Spalte B x Spalte C)

python


 pd.pivot_table(df,value='A',index='B',columns='C')

Anzahl der Spalten A für jede Zelle in der Kreuztabelle (Spalte B x Spalte C)

python


 pd.pivot_table(df,value='A',index='B',columns='C',aggfunc = 'count')

Summe von Spalte A für jede Zelle der Kreuztabelle (Spalte B x Spalte C)

python


 pd.pivot_table(df,value='A',index='B',columns='C',aggfunc = 'sum')

Was ist also mit der Anzahl der eindeutigen Werte in Spalte A für jede Zelle? Verwenden Sie einen Lambda-Ausdruck. Wie man einen Lambda-Ausdruck schreibt, ist Lambda-Argument 1, Argument 2 ...: Verarbeitung

pivot_unique.py


import pandas as pd

#Behalten Sie die Daten im Pandas-Datenrahmen
df = pd.DataFrame(apachlog)

#Bei der folgenden Methode enthält der Wert den na-Wert.
#Datenrahmen im Voraus.info()Eine Hand, die verwendet werden kann, wenn Sie wissen, dass es kein Na gibt
pv = pd.pivot_table(df, values='host',index = 'date',columns = 'carrier',
 aggfunc = lambda x:len(x.unique()))

#Die folgende Methode ist der Wert ohne den na-Wert.
pv = pd.pivot_table(df, values='host',index = 'date',columns = 'carrier',
 aggfunc = lambda x:x.nunique())

(Bonus) In Datei exportieren

Pandas-Datenrahmen können mit der to_csv-Methode im tsv-Format exportiert werden.

output.py


fout = 'output.tsv'
f = open(fout,'w',encoding = 'utf-8')

pv.to_csv(fout,sep = '\t')
f.close()

Code in python3 (2) Verwenden Sie die groupby-Methode

use_groupby.py


#Erstellen Sie eine Gruppe nach Objekt, indem Sie die x-Achse und die y-Achse angeben
grouped = df.groupby(['date','carrier'])

#Das Gruppieren nach zu einem Datenrahmen führt zu keinen Ergebnissen, sondern erstellt lediglich ein Gruppieren nach-Objekt für den Datenrahmen mit dem Aggregatschlüssel.

#Aggregieren Sie mit der Spalte "Host" für gruppierte Objekte.
#Die zu aggregierende Funktion ist agg(Geben Sie diesen Inhalt mit einem Lambda-Ausdruck an)
#Zählen Sie, dass na auch im eindeutigen Wert enthalten ist
grouped.host.agg(lambda x: len(x.unique()))

#Zähle ohne na
grouped.host.agg(lambda x: x.nunique())

Das aggregierte Ergebnis der groupby-Methode ist eine Tabelle mit "vertikalem Halten" (= langer Typ).

date carrier
2015/04/01 Android 5000
2015/04/01 iOS 1300
2015/04/01 Other 15
2015/04/02 Android 5200
... ... ...

Wenn Sie "vertikales Halten" (langer Typ) auf Kreuztyp (?) (= Breiter Typ) erweitern möchten, verwenden Sie die unten gezeigte *** Unstack-Methode ***, um das obige aggregierte Bild anzuzeigen. Du kannst es haben.

#g = grouped.host.agg(lambda x: len(x.unique()))
g = grouped.host.agg(lambda x: x.nunique()))

g.unstack()

Ausführungsumgebung

Referenz

Recommended Posts

Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen
Finden Sie den Tag nach Datum / Uhrzeit heraus
Aggregieren Sie VIP-Werte von Smash Bra mit Pandas
Berechnen Sie den Gesamtwert mehrerer Spalten mit awk
Finden Sie den Speicherort der mit pip installierten Pakete heraus
Die Kraft der Pandas: Python
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild
Animieren Sie die Alpha- und Beta-Werte der weltweit besten Marktwertaktien mit Pandas + Matplotlib
Finden Sie die Definition des Wertes von errno
Extrahieren Sie den Maximalwert mit Pandas.
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Finden Sie mit PythonControl die Übertragungsfunktion des Systems mit einem Freiheitsgrad.
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Formatieren Sie die CSV-Datei "Nationalfeiertag" des Kabinetts mit Pandas
Finden Sie die numerische Lösung der gewöhnlichen Differentialgleichung zweiter Ordnung mit scipy
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Suchen Sie mit numpy den kleinsten Index, der den kumulativen Summenschwellenwert erfüllt
Ich habe die grundlegende Operation von Pandas im Jupyter Lab geschrieben (Teil 2).
Ermitteln Sie mit NumPy die Trägheitsspindel und das Hauptträgheitsmoment aus dem Trägheitstensor
Finden Sie die allgemeinen Begriffe der Tribonacci-Sequenz in linearer Algebra und Python
Ich habe einen Fehler beim Abrufen der Hierarchie mit MultiIndex von Pandas gemacht
Suchen Sie den Bereich des Summensatzes überlappender Rechtecke
Zeichnen Sie den Nikkei Average Stock Index mit Pandas
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Holen Sie sich die besten n-ten Werte in Pandas
Visualisieren Sie den Grenzwert des mehrschichtigen Perzeptrons
Überprüfen Sie die Existenz der Datei mit Python
Messen Sie die Assoziationsstärke in einer Kreuztabelle
Finden Sie den SHA256-Wert mit R (mit Bonus)
Migemo-Version des Befehls: find,: mfind
Die dritte Nacht der Runde mit für
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Tipps: Vergleich der Größe von drei Werten
Ersetzen Sie Spaltennamen / -werte durch Pandas-Datenrahmen
Die zweite Nacht der Runde mit für
Echtzeitberechnung des Durchschnittswertes mit Corroutine
Finden Sie den Koeffizienten des Polypolys mit dem kleinsten Quadrat
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Zählen Sie die Anzahl der Zeichen mit Echo
Füllen Sie den fehlenden Wert (null) von DataFrame mit den Werten davor und danach mit pyspark
Suchen Sie den Index der Elemente, die den Bedingungen im Pandas-Datenrahmen / der Pandas-Serie entsprechen
Vergleichen Sie die Summe jedes Elements in zwei Listen mit dem in Python angegebenen Wert
Ich habe den gleitenden Durchschnitt des IIR-Filtertyps mit Pandas und Scipy verglichen
Typkonvertierung mehrerer Spalten von Pandas DataFrame mit Astype gleichzeitig
Beachten Sie, dass die Berechnung der durchschnittlichen paarweisen Korrelation mit Pandas sehr einfach war
Ich habe die Pivot-Table-Funktion von Pandas ausprobiert
Die Geschichte des tiefen Lernens mit TPU
So finden Sie den Bereich des Boronoi-Diagramms
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Die Hand von "Millijan" durch Kombinationsoptimierung finden
Finden Sie das Differential zweiter Ordnung mit der automatischen Differenzierung von JAX
Automatischer Betrieb von Chrome mit Python + Selen + Pandas
2016 Todai Mathematik mit Python gelöst
Finden Sie den Stimmungswert mit Python (Rike Koi)
[Hinweis] Exportieren Sie das HTML der Site mit Python.