Comparez la vitesse de lecture / écriture et la capacité de csv, pickle, joblib, parquet dans un environnement python

Ce que j'ai fait

Fréquemment utilisé lors de l'enregistrement temporaire de données de tableau 2D en python

  1. pickle.dump
  2. joblib.dump
  3. Convertissez en pyarrow et économisez le parquet
  4. pd.write_csv Nous avons comparé la vitesse de lecture / écriture et la capacité de stockage pour chacun des.

Conclusion

--Pickle protocol = 4 pour le taux de compression et la vitesse ――Si vous répétez la lecture ou l'écriture d'une partie seulement, enregistrez le parquet avec pyarrow

Cela semble bon

Environnement d'essai

CPU: Xeon E5-2630 x 2 chip VRAM: 128GB Windows8 64bit python 3.6

Données utilisées pour la comparaison

Essayé avec des données de fonctionnalités pour l'apprentissage automatique · Pandas.DataFrame 536 lignes 178886 colonnes 0,77 Go ・ Pandas.DataFrame 4803 lignes 178886 colonnes 6,87 Go

Résultat de la comparaison

0,77 Go DataFrame

image.png image.png

6,87 Go DataFrame

image.png image.png

À propos du résultat

pickle En ne regardant que le taux de compression et la vitesse, le protocole de pickle = 3 ou plus est excellent, et surtout protocole = 4 est extrêmement pratique car il prend également en charge l'écriture de 4 Go ou plus. Cependant, dans l'environnement ubuntu python3.6 ou antérieur, il y a un problème avec protocol = 4 ou il ne fonctionne pas comme il est pour la lecture et l'écriture. Comme il fonctionne normalement avec python3.7 ou version ultérieure, pickle semble être bon si l'environnement peut être sécurisé ou si la capacité est petite.

joblib Par rapport à pickle, le taux de compression et la vitesse de lecture / écriture sont un peu à mi-chemin, mais comme il est possible de lire / écrire 4 Go ou plus même dans l'environnement python3.6, cela peut être bon pour ceux qui ne peuvent pas créer de nouveau python pour des raisons de package.

pyarrow => parquet Il est intéressant de pouvoir lire et écrire des lignes et des colonnes spécifiées tout en ayant le même taux de compression et la même vitesse de lecture / écriture que joblib compress = 0. D'autant plus que l'écriture est rapide, cela semble être bon lorsque la lecture et l'écriture sont saisies au hasard.

Impact environnemental

L'influence de l'environnement semble être très grande, et quand j'ai expérimenté sur une autre machine avec un OS différent, la différence n'était que de 20 fois, mais seulement de 4 fois. Il semble préférable de tester dans l'environnement où vous l'utilisez réellement.

Recommended Posts

Comparez la vitesse de lecture / écriture et la capacité de csv, pickle, joblib, parquet dans un environnement python
Lire et écrire des fichiers JSON avec Python
Comparez la vitesse d'ajout et de carte Python
Évaluation de la vitesse de sortie du fichier CSV en Python
Traitement pleine largeur et demi-largeur des données CSV en Python
Vitesse de lecture Python netCDF4 et imbrication d'instructions for
Lire et écrire en virgule flottante simple précision en Python
Lire et écrire des balises NFC avec python en utilisant PaSoRi
Lire et écrire en compressant des variables telles que DataFrame avec joblib au lieu de pickle
Lire et écrire un fichier csv
Construction d'environnement de python et opencv
Créer et lire des paquets de messages en Python
Ecrire le fichier O_SYNC en C et Python
Lire et écrire des fichiers csv avec numpy
Lire Python csv et exporter vers txt
Projet Euler # 1 "Multiple de 3 et 5" en Python
Différentes façons de lire la dernière ligne d'un fichier csv en Python
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
Lire JSON avec Python et générer un CSV
Installation de Python 3 et Flask [Résumé de la construction de l'environnement]
Lire et écrire des fichiers CSV et JSON avec Python
environnement de développement python -utilisation de pyenv et virtualenv-
[Python3] Lecture et écriture avec isoformat datetime avec json
Explication de la distance d'édition et de l'implémentation en Python
Exemple de lecture et d'écriture de CSV avec Python
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
[Python] Lire le csv japonais avec des pandas sans caractères déformés (extraire davantage les colonnes écrites en japonais)
J'ai comparé la vitesse de la référence du python dans la liste et la référence de l'inclusion du dictionnaire faite à partir de la liste dans.
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
CSV en Python
"Régression linéaire" et "Version probabiliste de la régression linéaire" en Python "Régression linéaire de Bayes"
Faire fonctionner mongoDB à partir de python dans l'environnement ubuntu ① Introduction de mongoDB
Expérience de comparaison de la vitesse d'écriture de fichier entre python 2.7.9 et pypy 2.5.0
Différence entre Ruby et Python en termes de variables
Lisez le fichier csv et affichez-le dans le navigateur
[python] Calcul des mois et des années de différence de date / heure
Écrire des tests en Python pour profiler et vérifier la couverture
Lire et écrire des fichiers avec Slackbot ~ Développement de bot avec Python ~
Comment lire un csv contenant uniquement des entiers en Python
Comparez la "relation log et infini" avec Gauche (0.9.4) et Python (3.5.1)
Exemple d'obtention du nom du module et du nom de la classe en Python
Récapitulatif du traitement de la date en Python (datetime et dateutil)
[Python] Chapitre 01-02 À propos de Python (Exécution et installation de l'environnement de développement)
Le traitement parallèle de Python joblib ne fonctionne pas dans l'environnement uWSGI. Comment traiter en parallèle sur uWSGI?