[PYTHON] Eine Geschichte über das Problem, 3 Millionen ID-Daten in einer Schleife zu verarbeiten

■ Zweck

Für jede der 3 Millionen IDs werden Daten im Wert von einem Monat erstellt Der Inhalt der Daten besteht aus einer erklärenden Variablen und einer objektiven Variablen. Mit anderen Worten, die Tabelle enthält drei Spalten: ID, erklärende Variable x und Zielvariable y. Die Anzahl der Datensätze beträgt 3 Millionen x 30 Tage - 90 Millionen

Zu diesem Zeitpunkt wurde für jede der 3 Millionen IDs eine einfache Regression der erklärenden Variablen und objektiven Variablen für 30 Tage durchgeführt. Ich möchte den Korrelationskoeffizienten, die Steigung und den p-Wert für jede ID als Ausgabe speichern.

■ Richtlinien

Regressiert in einer for-Schleife 3 Millionen IDs und speichert die Ergebnisse als Liste Schließlich werden die Listen zu einem Datenrahmen zusammengefasst. Die Geschwindigkeit dieser Technik finden Sie hier

■ Umgebung

--EC2-Instanz (ubuntu: r5d.4xlarge)

■ Herausforderungen

Es braucht Zeit, um einfach die Datensätze abzufragen, die jeder ID aus dem Datenrahmen entsprechen (ca. 13 Sekunden pro ID).

code1.py


for id in id_list:
    tmp_x = df[df.id == id].x
    tmp_y = df[df.id == id].y

■ Lösung

code2.py


df.index = df.id
for id in id_list:
	tmp_x = df.loc[id].x
	tmp_y = df.loc[id].y

code3.py


import dask.dataframe as dd
import multiprocessing

df.index = df.id
#In der aktuellen Umgebung CPU_count = 32
ddf = dd.from_pandas(df, npartitions=multiprocessing.cpu_count())
for id in id_list:
	tmp_x = ddf.loc[id].x.compute()
	tmp_y = ddf.loc[id].y.compute()

■ Fazit

Es ist noch spät. Damit würde es zwei Monate dauern, bis alle Daten verarbeitet sind. ..

■ Zukunftspläne

Derzeit werden 30 Datensätze für jede ID gespeichert. Durch Speichern von Daten im Wert von 30 Tagen in einer Zelle als Liste wird jedoch ein Datensatz für jede ID erstellt. Auf diese Weise besteht die Möglichkeit, dass die Verarbeitungsgeschwindigkeit verbessert werden kann, da die Einschlussverarbeitung für die Schleifenverarbeitung verwendet werden kann. (Wie lange dauert es jedoch, von 30 Datensätzen in einen Datensatz zu konvertieren? Ich möchte, dass Sie es mit pivot_table sagen.)

Recommended Posts

Eine Geschichte über das Problem, 3 Millionen ID-Daten in einer Schleife zu verarbeiten
Eine Geschichte, die Schwierigkeiten hatte, 3 Millionen ID-Daten in einer Schleife zu verarbeiten
Geschichte rund um die Datenanalyse durch maschinelles Lernen
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Eine Geschichte über den Umgang mit dem CORS-Problem
Eine Geschichte über das Clustering von Zeitreihendaten des Austauschs
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Eine erfrischende Geschichte über Slice in Python
Eine Geschichte über den Versuch, einen Chot zu automatisieren, wenn Sie selbst kochen
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Eine launische Geschichte über Slice in Python
Eine Geschichte, die von Azure Pipelines abhängig ist
Die Geschichte der Verwendung von Python reduziert
Eine Geschichte über alles von der Datenerfassung über die KI-Entwicklung bis hin zur Veröffentlichung von Webanwendungen in Python (3. KI-Entwicklung)
Eine Geschichte darüber, wie man in GAE / P über verstümmelte Charaktere nachdenken möchte
Eine Geschichte, die es aufgegeben hat, JavaScripthon unter Windows auszuführen.
Die Geschichte, den Versuch aufzugeben, mit Heroku eine Verbindung zu MySQL herzustellen
Eine Geschichte über einen Anfänger, der sich bemüht, CentOS 8 einzurichten (Verfahrensnotiz)
Eine Geschichte über einen magischen Umbau, der Lubuntu in ein Chromebook bringt
Eine Geschichte über maschinelles Lernen mit Kyasuket
Eine Geschichte über Python Pop und Append
[Anmerkung] Eine Geschichte darüber, dass es nicht möglich ist, den Proxy mit pip zu durchbrechen
Ändern Sie den Datenrahmen der Pandas-Kaufdaten (ID x Produkt) in ein Wörterbuch
Freigeben einer virtuellen Umgebung [Informationen zu den Anforderungen.txt]
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Erstellen Sie einen Datensatz, indem Sie zufällig MNIST-Daten auswählen
Eine Geschichte über den Betrieb einer GCP-Instanz von Discord
Eine Geschichte, die von Go's globalen Variablen und ihrem Umfang abhängig ist
Eine Geschichte über den Umgang mit Binärdaten in Python
Macht süchtig, wenn Kintone ein Datenspeicher ist
Die Geschichte, Artikel-verknüpfte Anzeigen auf Jubatus anzeigen zu wollen
Datenanalyse in Python: Ein Hinweis zu line_profiler
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Eine Geschichte über das Ausführen von Python auf PHP auf Heroku
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen
Ein cooles Diagramm zur Datenanalyse von Wiire!
Eine Geschichte über die Verbesserung des Programms zum teilweisen Füllen von binärisierten 3D-Bilddaten
Eine Geschichte darüber, wie Windows 10-Benutzer eine Umgebung für die Verwendung von OpenCV3 mit Python 3.5 erstellt haben
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen