Vergleich der Datenrahmenbehandlung in Python (Pandas), R, Pig

Gestern habe ich Pig mit dem Titel Grundlegende Grammatik von Apache Pig (1) berührt, daher ist heute natürlich die grundlegende Grammatik ( 2) Ich habe mich gefragt, ob es das ist, aber dieser Bereich des Referenzlinks von [dem Artikel vom vorgestern] [http://qiita.com/ynakayama/items/8f334b3314561c5d48af) yutakikuchi / 20130107/1357514830) ist alles, was Sie tun müssen, damit die Grammatikgeschichte auf einmal vorbei ist. Dies ist die plötzliche letzte Episode.

Stattdessen möchte ich heute herausfinden, wie unterschiedlich die Benutzerfreundlichkeit ist, wenn mit einer bestimmten Menge großer Datenmengen gearbeitet wird, wenn die Pandas, R und Pig verwendet werden, mit denen wir uns bisher befasst haben.

Zu überprüfende Daten

Stellen Sie sich eine Textdatei vor, die aus folgenden Zeilen besteht: Die Schlüsselelemente sind Datum, Primärschlüssel, Geschäftsname, Zeitstempel, konvertierter Zeitstempel und numerischer Wert. Das Trennzeichen ist ein Tabulatortrennzeichen.

20140205 XXXXXXAABBCC    Shop7 1391568621      2014-02-05 11:50:21 +0900       0

Dies sind ungefähr 100 Millionen Zeilen, und der Computer verfügt über Daten mit einer Datengröße von 7,5 Gigabyte. Lassen Sie uns diesmal den Durchschnitt für diese numerischen Daten ermitteln. Finden Sie heraus, welches für Pandas, R und Pig am besten geeignet ist.

Die Leistung des zur Überprüfung verwendeten Computers beträgt Core i7 (Haswell) und 32 GB Arbeitsspeicher.

Python (pandas)

In Python gibt es eine Bibliothek für Datenrahmenoperationen namens Pandas. Es ist am besten, dies zu verwenden, es sei denn, es gibt besondere Einschränkungen.

$ pip install pandas
$ ipython

In [1]: import pandas as pd
In [2]: df = pd.read_table('sample.txt', header=None)
In [3]: df.ix[:,5].mean()
Out[3]: 305.4479883399822

Die Merkmale von Pandas sind wie folgt.

Mit anderen Worten, Pandas sind gut, wenn der Computer über genügend Leistung verfügt, um die zu betreibenden Daten im Speicher zu speichern.

R

Apropos Datenrahmenoperationen, es ist R.

df <- read.table("sample.txt", sep="\t")
colMeans(df[6])
#=>     V6
#  305.448

Im Fall von R werden die Daten beim Lesen gespeichert, wie bei Pandas. Wenn es sich jedoch um mehrere Gigabyte Daten handelt, ist die Leistung deutlich langsamer als bei Pandas.

Außerdem wird colMeans () verwendet, um den Durchschnitt zu berechnen, aber die Ausführungsgeschwindigkeit der statistischen Funktion war der von Pandas überlegen.

Die Merkmale von R sind unten zusammengefasst.

Pig

Endlich Apache Pig. Dieses Mal werden wir die Textdatei mit einem einzigen Computer verarbeiten, also werden wir pig -x local verwenden.

df = LOAD 'sample.txt' USING PigStorage('\t') AS (date: chararray, key: chararray, shop: chararray, unixtime: int, humantime: chararray, times: int);

grouped = group df all; 
times_mean = foreach grouped generate AVG(df.times);

dump times_mean;

#=> (305.4479883399822)

Im Fall von Pig wird kein Speicher zugewiesen, selbst wenn LOAD und nachfolgende Funktionen eingegeben werden. Die interaktive Shell reagiert ebenfalls sofort.

MapReduce wird erst nach dem letzten Dump ausgeführt times_mean;

Zusammenfassung

Ich denke, es ist besser, Pandas zu verwenden, wenn Sie Daten mit einem einzigen Computer verarbeiten können, und Pig, wenn die Leistung des Computers für Ihre Daten nicht ausreicht.

Recommended Posts

Vergleich der Datenrahmenbehandlung in Python (Pandas), R, Pig
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
Umgang mit JSON-Dateien in Python
Hashing von Daten in R und Python
Bedingte Elementextraktion aus dem Datenrahmen: R ist% in%, Python ist .isin ()
Vergleich japanischer Konvertierungsmodule in Python3
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Die Geschichte des Lesens von HSPICE-Daten in Python
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
R- und Python-Schreibvergleich (euklidische Methode der gegenseitigen Teilung)
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Suchen Sie den Index der Elemente, die den Bedingungen im Pandas-Datenrahmen / der Pandas-Serie entsprechen
Vergleich von Python (+ Pandas), R, Julia (+ DataFrames) (Zusammenfassung des Tabelleninhalts, Zugriff nach Spalte)
Grundlegende Datenrahmenoperationen, die von Anfängern in einer Woche Python-Lernen geschrieben wurden
Umgang mit Json in Python
Umgang mit Hexadezimal in Python3
Zusammenfassung der Tools, die zum Analysieren von Daten in Python benötigt werden
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Zusammenfassung der beim Extrahieren von Daten verwendeten Pandas-Methoden [Python]
Den Inhalt der Daten in Python nicht kennen
Liste des Python-Codes, der bei der Big-Data-Analyse verwendet wird
Verwenden wir die offenen Daten von "Mamebus" in Python
Verstehen Sie den Status des Datenverlusts - Python vs. R.
[Memo] Textabgleich im Pandas-Datenrahmen mit Flashtext
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Behandeln Sie Umgebungsdaten in Python
Der Standardstil (CSS) von Pandas-Datenrahmen, die von der Anzeige in Google Colab ausgegeben werden, wurde geändert
Zeigen Sie UTM-30LX-Daten in Python an
Nullobjektvergleich in Python
Umgang mit Zitaten in [bash]
Vergleich des in Python geschriebenen EMA-Codes (Exponential Moving Average)
Python> Umgang mit 2D-Arrays
Umgang mit Python auf Mac
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Vergleich von 4 Arten von Python-Webframeworks
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Implementierung der schnellen Sortierung in Python
So erhalten Sie einen Überblick über Ihre Daten in Pandas
Relative URL-Verarbeitung in Python
Data Science-Begleiter in Python, wie man Elemente in Pandas spezifiziert
Datenanalyse mit Python-Pandas
Die Kraft der Pandas: Python
Portiert von der R-Sprache von "Sazae-sans Janken Data Analysis" nach Python
Empfohlene Bücher und Quellen für die Datenanalyseprogrammierung (Python oder R)
Eine einfache Datenanalyse von Bitcoin, die von CoinMetrics in Python bereitgestellt wird
Automatische Erfassung von Genexpressionsdaten durch Python und R.
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
[Blender Python] Ordnen Sie benutzerdefinierte Eigenschaftsdaten in template_list () des UI-Layouts an
Holen Sie sich LeapMotion-Daten in Python.
Bildpixel-Manipulation in Python
[Python] Operationsnotiz von Pandas DataFrame
Umgang mit spärlichen Attributen in einer Baumstruktur (Python)
Lesen Sie die Protokollpufferdaten mit Python3
Hit Schatzdaten von Python Pandas
Python-Anwendung: Datenverarbeitung # 3: Datenformat
Führen Sie den Shell-Befehl / Python in R aus
Zeitdelta in Python 2.7-Serie teilen