Python Pandas ist nicht für die Stapelverarbeitung geeignet

Was ist Pandas?

Pandas ist eine Bibliothek, die verschiedene Daten verarbeiten kann und sich auf eine tabellarische Datenstruktur namens DataFrame konzentriert. Es ist eine Tabelle in der Datenbank. Wenn Sie also mit SQL vertraut sind, können Sie sofort loslegen. Vertraut mit denen, die Daten mit Python analysieren.

Wie haben Sie es eingeführt?

Es gibt viele Hörensageninformationen, aber ich denke, sie wurden dem Entwicklungsteam auf diese Weise vorgestellt.

――Die Hybridisierung von lokal und Cloud schreitet voran, und der Datenbankspeicher wird immer verteilter. --Datenflussverwaltung wird zu einem Problem, und Luigi wird eingeführt, um Datenflüsse in Python zu erstellen.

Hauptsächlich süchtig nach: Schrei:

Problem mit fehlendem Wert

Da der fehlende Wert NaN als Float behandelt wird, wird die gesamte Spalte in den Float umgewandelt, sobald der fehlende Wert in der int-Spalte gemischt wird. Wenn die Typinformationen beschädigt sind, handelt es sich in der Regel um ein Problem, insbesondere wenn sie an die Datenbank gesendet werden.

>>> s = pd.Series([0, 1, 2])
>>> s[2]
2
>>> s[1] = np.nan
>>> s[2]
2.0

http://pandas.pydata.org/pandas-docs/stable/missing_data.html

Referenzproblem

Mit nur einer kleinen Indexoperation können Sie in eine ungewisse Situation gezwungen werden, ob es sich um Ansicht oder Kopie handelt (!?)

def do_something(df):
   foo = df[['bar', 'baz']]  # Is foo a view? A copy? Nobody knows!
   # ... many lines here ...
   foo['quux'] = value       # We don't know whether this will modify df or not!
   return foo

http://pandas.pydata.org/pandas-docs/stable/indexing.html#why-does-assignment-fail-when-using-chained-indexing

In diesem Fall kann die Qualität nicht garantiert werden, unabhängig davon, wie viele Tests durchgeführt werden. Die Warnung kann zum Zeitpunkt der Ausführung ausgegeben werden, aber der einzige verdächtige Teil besteht darin, die Kopiermethode explizit aufzurufen.

Plötzlicher Tod

Wenn Sie sich das Protokoll einer bestimmten Charge ansehen, besteht eine Wahrscheinlichkeit von 1%, dass diese stirbt. Es gibt viele speicherbezogene Elemente, und Core-Dumps multiplizieren sich. Es friert auch ein.

*** glibc detected *** /usr/local/anaconda/bin/python: free(): invalid pointer:
Fatal Python error: GC object already tracked

People People People > Plötzlicher Tod <  ̄Y^Y^Y^Y ̄

Da es sich um eine Python 2.7 & Pandas 0.17-Umgebung handelt, kann sie durch Aktualisierung gelöst werden ....

Was in Zukunft zu tun ist: Denken:

In zukünftigen Neuentwicklungen ist es eine Politik, Pandas nicht so oft wie möglich zusammen mit Luigi zu verwenden. Immerhin war Pandas für die Analyse gedacht, und es war überhaupt nicht gut, es in Chargen zu verwenden ...

Selbst für analytische Zwecke habe ich persönlich das Gefühl, dass das Referenzproblem schwerwiegend ist. Daher werde ich Spark verwenden, wenn ich in Zukunft einen DataFrame möchte. Beachten Sie, dass die Kompilierungsprüfung für die wesentlichen Schemaoperationen nicht funktioniert, obwohl sie in statisch typisiertem Scala geschrieben werden kann. Bibliothek mit Katzen rahmenlosもありますが、あくまでproof-of-conceptです。

Übrigens hat Luigi für jede Aufgabe die gleiche Qualität und geht von einem Ausgabedaten aus, sodass er je nach dem zusammenzustellenden Datenfluss möglicherweise nicht geeignet ist. Und Luigis Entwickler Spotify scheint auf Google Cloud Dataflow zu migrieren und Scalas Wrapper Library Scio zu entwickeln.

Scio - A Scala API for Google Cloud Dataflow & Apache Beam

Recommended Posts

Python Pandas ist nicht für die Stapelverarbeitung geeignet
Python-Runde ist nicht streng rund
100 Pandas klopfen für Python-Anfänger
[Python] Iterative Verarbeitung (für, während)
Qiita API Python Wrapper für die Stapelverarbeitung zum Abrufen von Qiita-Posts
Pandas Grundlagen für Anfänger ⑧ Ziffernverarbeitung
Persönliche Notizen für die Python-Bildverarbeitung
Python für Anweisung ~ Was ist iterierbar ~
Wofür ist der Python-Unterstrich (_)?
Windows Subsystem für Linux wird nicht angezeigt
[Python] Was ist Pandas Series und DataFrame?
Python Hinweis: Wenn easy_install nicht verwendet werden kann
[Python] Namensfehler: name'urlparse 'ist nicht definiert
[Python] [Pandas] Wie wird pd.DataFrame (). T implementiert?
Inject wird für DDD in Python empfohlen
Warum Python für maschinelles Lernen ausgewählt wird
Vorlage zum Schreiben von Batch-Skripten in Python
[Python] Ein Skript, das für die Excel / CSV-Verarbeitung nützlich ist
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
5 Gründe, warum die Verarbeitung für diejenigen nützlich ist, die mit Python beginnen möchten
Python-Pandas: Suchen Sie mit regulären Ausdrücken nach DataFrame
Bachstelze ist das beste CMS für Python! (Vielleicht)
Python-Protokoll wird nicht mit Docker-Compose ausgegeben
Bildverarbeitung? Die Geschichte, Python für zu starten
Bildverarbeitung mit Python Environment Setup für Windows
scipy.sparse ist nicht für den Betrieb innerer Produkte optimiert
2016-10-30 sonst für Python3> für:
Python [für mich]
Python ist einfach
Meine Pandas (Python)
Python-Bildverarbeitung
Python-Dateiverarbeitung
Python-Convenience-Batch
Was ist Python?
Python ist eine Instanz
Python Pandas Memo
Was ist Python?
Schlüsseleingabe, die nicht auf Schlüsseleingabe in Python wartet
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
Heutiger Python-Fehler: HTTPError: 404 Client-Fehler: Nicht gefunden für URL:
Zusammenfassung der Vorverarbeitungsmethoden für Python-Anfänger (Pandas-Datenrahmen)
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Electron ist die beste Lösung für die plattformübergreifende Entwicklung von Python
[Python] Pandas Code, der wahrscheinlich wiederverwendet wird
Python> Überprüfen Sie NoneType oder nicht> wenn a == None:> wenn a None ist:
Verarbeiten Sie CSV-Daten mit Python (Zählverarbeitung mit Pandas)
Python-Memo mit Perl - Wörterbuchtyp (Groß- / Kleinschreibung ungültig)
[Python-Anfänger] Variablen und Umfang innerhalb der Funktion (wenn die Verarbeitung innerhalb der Funktion außerhalb der Funktion reflektiert wird und wenn sie nicht reflektiert wird)