[PYTHON] Agréger les données AWS S3

En termes simples, S3 est le service de stockage cloud d'AWS, qui peut stocker de grandes quantités de données.

・ Qu'est-ce qu'Amazon S3? Http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/Welcome.html

Puisqu'il était nécessaire d'agréger les données sur S3 et de les afficher sous forme de graphique cette fois, je vais vous expliquer le script pour cela.

Environnement de travail: macOS Sierra version 10.12.5 Python 2.7.10

boto Vous devez d'abord utiliser boto pour accéder à AWS à partir de Python. La dernière version est boto3, alors installez boto3.

$ pip install boto3

Après avoir installé boto3 et l'avoir importé dans Python, accédez à S3 comme suit. En outre, spécifiez le nom du compartiment que vous souhaitez récupérer et récupérer les données.

import boto3

s3_resource = boto3.resource('s3')
bucket = s3_resource.Bucket('bucket_name')

Il y a beaucoup de données dans le compartiment, donc s'il y a un objet que vous souhaitez récupérer, spécifiez-le avec un filtre. Si vous avez besoin de tous, obtenez-les avec tous.

obj = bucket.objects.filter(Prefix='filter_word')
obj = bucket.objects.all()

Téléchargez les données de l'objet. Le nom de fichier est le nom lors de l'enregistrement local. L'extension doit être la même que le fichier situé dans S3.

bucket.download_file(Key=obj.key, Filename='file_name')

Vous pouvez maintenant télécharger les données S3. Après cela, ouvrez le fichier et agrégez-le à l'aide d'une liste ou d'un dictionnaire en fonction du format des données.

Graphisme

Ensuite, tracez les données agrégées. Les données agrégées sont enregistrées sous forme de fichier texte au format suivant. Les valeurs numériques à ce moment des noms 1 à 6 sont enregistrées pour chaque heure.

Temps 1
Nom 1:Numéro 1-1
Nom 2:Numéro 1-2
Nom 3:Numéro 1-3
Nom 4:Numéro 1-4
Nom 5:Numéro 1-5
Nom 6:Numéro 1-6
Temps 2
Nom 1:Numéro 2-1
Nom 2:Numéro 2-2
Nom 3:Numéro 2-3
Nom 4:Numéro 2-4
Nom 5:Numéro 2-5
Nom 6:Numéro 2-6
Temps 3
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・

Utilisez Pandas et matplotlib pour tracer cela. Pandas est une bibliothèque qui facilite la gestion des données dans Pyhton. Vous pouvez facilement créer un graphique en utilisant le format de bloc de données. matplotlib est utilisé pour dessiner des graphiques. Les deux seront installés avec pip.

Vous pouvez créer un bloc de données en le substituant directement, mais vous pouvez également le créer à partir d'un dictionnaire, donc créez un dictionnaire, puis convertissez-le au format de bloc de données. Ouvrez un fichier texte de données agrégées, créez un dictionnaire et entrez une liste de noms pour les clés et de nombres pour les valeurs. Après la saisie, créez un graphique au format de trame de données.

import pandas as pd

with open('data.txt')as f:
    line = f.readline()
    while line:
        results = line.rstrip()
        if ':' in results:
            data = results.split(':')
            results_dict[data[0]].append(int(data[1]))
        line=f.readline()

#Transformez le dictionnaire en un bloc de données
my_df = pd.DataFrame.from_dict(results_dict)
#Créer un graphique
my_df.plot(title='graph_title')

Vous venez de créer un graphique. Enfin, utilisez matplotlib pour l'afficher.

import matplotlib.pyplot as plt

plt.show()

Autre

Vous pouvez utiliser une bibliothèque appelée seaborn pour créer des graphiques plus à la mode. Il existe différents graphiques et usages sur la page officielle. https://seaborn.pydata.org/examples/index.html

Recommended Posts

Agréger les données AWS S3
Extraction de données depuis S3
[AWS] Recherchez et acquérez les données nécessaires à partir des fichiers S3 avec S3 Select
Tests faciles d'AWS S3 avec MinIO
Gérez vos données avec AWS RDS
J'ai créé un nouveau compartiment AWS S3
[AWS] Associez Lambda et S3 à boto3
Connectez-vous à s3 avec AWS Lambda Python
Écraser les données dans RDS avec AWS Glue
[AWS] Faites des choses de type SSI avec S3 / Lambda