Exemple d'agrégation d'une grande quantité de données de séries temporelles à l'aide de Python dans un petit environnement de mémoire à une vitesse raisonnable

introduction

Il y avait un problème de lecture des données du cycle de 30 secondes collectées en un an sur plusieurs bases et de calcul de la valeur totale de chaque fois, et je ne pourrais pas du tout le traiter si je le faisais avec la méthode simple, alors je vais noter un peu le contenu que j'ai conçu.

formulaire de données

La date, l'heure et la valeur sont saisies au format CSV pour chaque base.

Date et l'heure valeur
2018-10-01 00:00:00 4
2018-10-01 00:00:30 1
2018-10-01 00:01:00 2
2018-10-01 00:01:30 6
2018-10-01 00:02:00 7
2018-10-01 00:02:30 7
2019-09-31 23:59:30 7

Ces données sont collectées à partir de plus de 100 emplacements. De plus, ce n'était pas en temps réel, mais le contenu devait être agrégé après un certain laps de temps.

Par simple calcul, un emplacement est 1 051 200 et 100 emplacements totalisent 105 120 000 données.

...Milliard(-_-;)

Première chose que j'ai faite

Lisez tous les fichiers à la fois, regroupez-les par date et heure et obtenez la valeur totale!

python


from glob import glob
import pandas as pd

files = glob("data/*.csv")

df = pd.DataFrame()

for file in files:
    df = pd.concat([df, pd.read_csv(file)])

df = df.groupby("Date et l'heure").sum()

df.to_csv("Valeur totale.csv")

... l'utilisation de la RAM utilise régulièrement la zone d'échange et se termine par une erreur lorsqu'elle dépasse 80 Go après une demi-journée.

J'ai essayé la méthode de réduction du nombre de fichiers et de calcul de la valeur totale petit à petit, mais cela ne semble pas fonctionner.

La dernière chose que j'ai faite

J'ai essayé de lire le fichier et de calculer la valeur totale à chaque fois.

python


from glob import glob
import pandas as pd

files = glob("data/*.csv")

df = pd.DataFrame()

for file in files:
    df = pd.concat([df, pd.read_csv(file)])
    df = df.groupby("Date et l'heure").sum().reset_index()

df.to_csv("Valeur totale.csv")

En conséquence, cela n'a pris que quelques minutes sans surcharger la RAM.

C'est peut-être une évidence, et une fois que je comprends, ce n'est rien à faire, mais comme j'ai passé un peu de temps, j'ai pensé que ce serait bien si même une personne qui avait la même difficulté pouvait être réduite.

Au fait, mon travail commence à partir d'ici. Analyse des données, faisons de notre mieux ... (-_-;)

Recommended Posts

Exemple d'agrégation d'une grande quantité de données de séries temporelles à l'aide de Python dans un petit environnement de mémoire à une vitesse raisonnable
Comment créer une grande quantité de données de test dans MySQL? ??
[Version compatible TensorFlow 2.x] Comment entraîner une grande quantité de données à l'aide de TFRecord et DataSet dans TensorFlow (Keras)
Comment développer dans un environnement virtuel Python [Memo]
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Comment envoyer une image visualisée des données créées en Python à Typetalk
Comment lire les données de séries chronologiques dans PyTorch
Comment configurer un environnement Python à l'aide de pyenv
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment tester unitaire une fonction contenant l'heure actuelle à l'aide de Freezegun en Python
Prédire à partir de diverses données en Python à l'aide de l'outil de prédiction de séries chronologiques Facebook Prophet
Comment mélanger une partie de la liste Python (au hasard.shuffle)
Comment créer une instance d'une classe particulière à partir de dict en utilisant __new__ () en python
Comment calculer la somme ou la moyenne des données csv de séries chronologiques en un instant
Comment obtenir une liste d'exceptions intégrées pour python
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Comment déterminer l'existence d'un élément sélénium en Python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment mettre à jour une source de données de classeur packagée Tableau à l'aide de Python
Comment générer un nouveau groupe de journaux dans CloudWatch à l'aide de python dans Lambda
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Comment installer le package python dans un environnement local en tant qu'utilisateur général
Comment tracer les données de lumière visible d'une galaxie à l'aide de la base de données OpenNGC en python
[Mac] Créez un environnement Python 3.x à la vitesse la plus rapide à l'aide de Docker
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Comment bien formater une liste de dictionnaires (ou d'instances) en Python
Obtenez une instance datetime à tout moment de la journée en Python
[Python] [Word] [python-docx] Essayez de créer un modèle de phrase de mot en Python en utilisant python-docx
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
Comment obtenir stacktrace en python
Comment gérer les données de séries chronologiques (mise en œuvre)
Partie 1 J'ai écrit un exemple de la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
J'ai créé un programme en Python qui lit les données FX CSV et crée un grand nombre d'images de graphiques
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Analyse des données en Python Résumé des sources que les débutants devraient d'abord consulter
Une petite histoire qui produit des données de table au format CSV à grande vitesse
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Comment créer un environnement pour utiliser plusieurs versions de Python sur un Mac
Un programme qui envoie une quantité fixe de courrier à un moment spécifié par Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment créer des fichiers volumineux à haute vitesse
Comment effacer un taple dans une liste (Python)
Comment incorporer des variables dans des chaînes python
Résumé de la façon d'importer des fichiers dans Python 3
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Résumé de l'utilisation de MNIST avec Python
Une manière intelligente de chronométrer le traitement avec Python
Comment notifier les canaux Discord en Python