[PYTHON] Aggregierte AWS S3-Daten

Einfach ausgedrückt ist S3 der Cloud-Speicherdienst von AWS, in dem große Datenmengen gespeichert werden können.

・ Was ist Amazon S3? Http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/Welcome.html

Da es notwendig war, die Daten in S3 zu aggregieren und diesmal als Grafik anzuzeigen, werde ich das Skript dafür erläutern.

Arbeitsumgebung: macOS Sierra Version 10.12.5 Python 2.7.10

boto Zuerst müssen Sie boto verwenden, um von Python aus auf AWS zuzugreifen. Die neueste Version ist boto3, installieren Sie also boto3.

$ pip install boto3

Greifen Sie nach der Installation von boto3 und dem Import in Python wie folgt auf S3 zu. Geben Sie außerdem den Namen des Buckets an, den Sie abrufen möchten, und rufen Sie die Daten ab.

import boto3

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

Der Bucket enthält viele Daten. Wenn Sie also ein Objekt abrufen möchten, geben Sie es mit dem Filter an. Wenn Sie alle brauchen, besorgen Sie sie sich mit allen.

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

Laden Sie die Daten des Objekts herunter. Dateiname ist der Name beim lokalen Speichern. Die Erweiterung sollte mit der Datei in S3 übereinstimmen.

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

Sie können jetzt die S3-Daten herunterladen. Öffnen Sie danach die Datei und aggregieren Sie sie mithilfe einer Liste oder eines Wörterbuchs entsprechend dem Datenformat.

Grafik

Stellen Sie als Nächstes die aggregierten Daten grafisch dar. Die aggregierten Daten werden als Textdatei im folgenden Format gespeichert. Die zu diesem Zeitpunkt angegebenen Zahlenwerte der Namen 1 bis 6 werden für jede Stunde aufgezeichnet.

Zeit 1
Name 1:Nummer 1-1
Name 2:Nummer 1-2
Name 3:Nummer 1-3
Name 4:Nummer 1-4
Name 5:Nummer 1-5
Name 6:Nummer 1-6
Zeit 2
Name 1:Nummer 2-1
Name 2:Nummer 2-2
Name 3:Nummer 2-3
Name 4:Nummer 2-4
Name 5:Nummer 2-5
Name 6:Nummer 2-6
Zeit 3
・ ・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・ ・

Verwenden Sie Pandas und Matplotlib, um dies grafisch darzustellen. Pandas ist eine Bibliothek, die den Umgang mit Daten in Pyhton vereinfacht. Mit dem Datenrahmenformat können Sie ganz einfach ein Diagramm erstellen. matplotlib wird zum Zeichnen von Grafiken verwendet. Beide werden mit pip installiert.

Sie können einen Datenrahmen erstellen, indem Sie ihn direkt ersetzen. Sie können ihn jedoch auch aus einem Wörterbuch erstellen. Erstellen Sie daher ein Wörterbuch und konvertieren Sie es dann in das Datenrahmenformat. Öffnen Sie eine Textdatei mit aggregierten Daten, erstellen Sie ein Wörterbuch und geben Sie eine Liste mit Namen für Schlüssel und Zahlen für Werte ein. Erstellen Sie nach der Eingabe ein Diagramm im Datenrahmenformat.

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()

#Verwandeln Sie das Wörterbuch in einen Datenrahmen
my_df = pd.DataFrame.from_dict(results_dict)
#Erstellen eines Diagramms
my_df.plot(title='graph_title')

Sie haben jetzt ein Diagramm erstellt. Verwenden Sie zum Schluss matplotlib, um es anzuzeigen.

import matplotlib.pyplot as plt

plt.show()

Andere

Sie können eine Bibliothek namens seaborn verwenden, um modischere Grafiken zu erstellen. Es gibt verschiedene Grafiken und Verwendungen auf der offiziellen Seite. https://seaborn.pydata.org/examples/index.html

Recommended Posts

Aggregierte AWS S3-Daten
Daten aus S3 extrahieren
[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
Einfacher AWS S3-Test mit MinIO
Verwalten Sie Ihre Daten mit AWS RDS
Ich habe einen neuen AWS S3-Eimer hergestellt
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Daten in RDS mit AWS Glue überschreiben
[AWS] Machen Sie SSI-ähnliche Dinge mit S3 / Lambda