Comparaison de la gestion des trames de données en Python (pandas), R, Pig

Hier j'ai touché Pig avec le titre Grammaire de base par Apache Pig (1), donc aujourd'hui est bien sûr la grammaire de base ( 2) Je me suis demandé si c'était le cas, mais cette zone du lien de référence de l'article d'avant-hier yutakikuchi / 20130107/1357514830) est tout ce que vous avez à faire, donc l'histoire de la grammaire est terminée en une seule fois. C'est le dernier épisode soudain.

Au lieu de cela, aujourd'hui, j'aimerais savoir à quel point la convivialité est différente lorsqu'il s'agit d'une certaine quantité de données énormes lors de l'utilisation des pandas, R et Pig que nous avons traités jusqu'à présent.

Données à vérifier

Considérez un fichier texte formé par un ensemble de lignes comme ceci: Les éléments clés sont la date, la clé primaire, le nom du magasin, l'horodatage, l'horodatage converti et la valeur numérique. Le délimiteur est un délimiteur de tabulation.

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

Cela représente environ 100 millions de lignes et l'ordinateur a des données avec une taille de données de 7,5 gigaoctets. Cette fois, trouvons la moyenne de ces données numériques. Découvrez lequel est le meilleur pour gérer cette tâche avec pandas, R et Pig.

Les performances de l'ordinateur utilisé pour la vérification sont Core i7 (Haswell) et une mémoire de 32 Go.

Python (pandas)

En Python, il existe une bibliothèque pour les opérations de trame de données appelée pandas. Il est préférable de l'utiliser sauf en cas de restrictions spéciales.

$ 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

Les caractéristiques des pandas sont les suivantes.

En d'autres termes, les pandas sont bons si l'ordinateur a suffisamment de performances pour stocker les données à exploiter en mémoire.

R

En parlant d'opérations sur les trames de données, c'est R.

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

Dans le cas de R, les données sont stockées dans la mémoire lors de la lecture de la table comme des pandas, mais lorsqu'il s'agit de plusieurs gigaoctets de données, les performances sont clairement plus lentes que celles des pandas.

De plus, colMeans () est utilisé pour calculer la moyenne, mais la vitesse d'exécution de la fonction statistique était également supérieure à celle des pandas.

Les caractéristiques de R sont résumées ci-dessous.

Pig

Enfin, Apache Pig. Cette fois, nous traiterons le fichier texte avec un seul ordinateur, nous utiliserons donc pig -x local.

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)

Dans le cas de Pig, la mémoire n'est pas allouée même si LOAD et les fonctions suivantes sont entrées. Le shell interactif répond également instantanément.

MapReduce est exécuté uniquement après le dernier vidage times_mean;.

Résumé

Je pense qu'il est préférable d'utiliser des pandas si vous avez la possibilité de traiter des données avec un seul ordinateur, et Pig si les performances de l'ordinateur ne sont pas suffisantes pour vos données.

Recommended Posts

Comparaison de la gestion des trames de données en Python (pandas), R, Pig
Remarques sur la gestion de grandes quantités de données avec python + pandas
Gestion des fichiers JSON en Python
Hashing de données en R et Python
Extraction d'éléments conditionnels à partir du bloc de données: R est% en%, Python est .isin ()
Comparaison des modules de conversion japonais en Python3
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées
L'histoire de la lecture des données HSPICE en Python
Créez un tracé de R semblable à un joyplot avec python
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
Environnement enregistré pour l'analyse des données avec Python
Trouvez l'index des éléments qui correspondent aux conditions dans la trame / série de données pandas
Comparaison de Python (+ Pandas), R, Julia (+ DataFrames) (résumé du contenu de la table, accès par colonne)
Opérations de base sur les blocs de données écrites par des débutants au cours d'une semaine d'apprentissage de Python
Manipulation de json en python
Comment gérer l'hexadécimal en Python3
Résumé des outils nécessaires pour analyser les données en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
Récapitulatif des méthodes Pandas utilisées lors de l'extraction de données [Python]
Ne pas être conscient du contenu des données en python
Liste du code Python utilisé dans l'analyse de Big Data
Utilisons les données ouvertes de "Mamebus" en Python
Comprendre l'état de la perte de données - Python vs R
[Mémo] Correspondance de texte dans le cadre de données pandas à l'aide de Flashtext
Essayez de gratter les données COVID-19 Tokyo avec Python
Gérer les données ambiantes en Python
Modification du style par défaut (CSS) des cadres de données pandas générés par affichage dans Google Colab
Afficher les données UTM-30LX en Python
Comparaison d'objets nuls en Python
Gestion des devis en [bash]
Comparaison du code de moyenne mobile exponentielle (EMA) écrit en Python
python> Gestion des tableaux 2D
Manipulation de python sur mac
[Homologie] Comptez le nombre de trous dans les données avec Python
Comparaison de 4 types de frameworks Web Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Implémentation du tri rapide en Python
Comment obtenir un aperçu de vos données dans Pandas
Traitement des URL relatives en python
Compagnon de science des données en python, comment spécifier des éléments dans les pandas
Analyse de données à l'aide de pandas python
Le pouvoir des pandas: Python
Porté du langage R de "Sazae-san's Janken Data Analysis" vers Python
Livres et sources recommandés de programmation d'analyse de données (Python ou R)
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
Acquisition automatique des données de niveau d'expression génique par python et R
Pratique de l'analyse de données par Python et pandas (Tokyo COVID-19 data edition)
[Blender Python] Organiser les données de propriétés personnalisées dans template_list () de la disposition de l'interface utilisateur
Obtenez des données LeapMotion en Python.
Manipulation des pixels d'image en Python
[Python] Mémo d'opération de pandas DataFrame
Gestion des attributs épars dans une structure arborescente (Python)
Lire les données des tampons de protocole avec Python3
Frappez les données du trésor de Python Pandas
Obtenir des données de Quandl en Python
Application Python: Traitement des données # 3: Format des données
Exécutez la commande shell / Python dans R
Diviser timedelta dans la série Python 2.7