[PYTHON] Behandeln Sie 3D-Datenstrukturen mit Pandas

Behandeln Sie 3D-Daten

Die Hauptdatenstruktur in pandas ist die eindimensionale oder Linie Serie. Es gibt pandas.Series.html) und zweidimensionale oder tabellarische DataFrame (http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html). Dies ist das Hauptobjekt in Pandas und wird auch in Python for Data Analysis beschrieben.

Aber es gibt tatsächlich ein anderes Hauptobjekt. Es ist das dritte dreidimensionale [Panel](http: //pandas.pydata), das in Einführung in Datenstrukturen angezeigt wird. .org / pandas-docs / stabile / generierte / pandas.Panel.html).

Diese dreidimensionale Datenstruktur ist beispielsweise nützlich, wenn Sie beliebige Zahlen aus täglichen Tabellendaten extrahieren und statistische Analysen für Zeitreihenprotokolle durchführen möchten.

Erstellen Sie ein Panel-Objekt

Panels können erstellt werden, indem ein dictionary-formatierter DataFrame oder ein dreidimensionales ndarray als Argument verwendet werden. Machen wir es konkret.

import pandas as pd
rng = pd.date_range('1/1/2014',periods=100,freq='D')

#Erstellen Sie einen Datenrahmen mit Zufallszahlen und setzen Sie den Index auf ABCD
df1 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df2 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])
df3 = pd.DataFrame(np.random.randn(100, 4), index = rng, columns = ['A','B','C','D'])

#Erstellen Sie ein Panel-Objekt, indem Sie diese Datenrahmen kombinieren
pf = pd.Panel({'df1':df1,'df2':df2,'df3':df3})

pf
#=>
# <class 'pandas.core.panel.Panel'>
# Dimensions: 3 (items) x 100 (major_axis) x 4 (minor_axis)
# Items axis: df1 to df3
# Major_axis axis: 2014-01-01 00:00:00 to 2014-04-10 00:00:00
# Minor_axis axis: A to D

Das Panel-Objekt wurde folgendermaßen erstellt. Jede Dimension wird als Elementachse, Hauptachse, Nebenachse bezeichnet.

In der Dokumentation (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Panel.html) finden Sie Informationen zu den Methoden dieses Objekts.

Schlüsseloperationen des Panel-Objekts

Zunächst wird es beliebt sein, über den Index zuzugreifen.

pf.ix[0] #Zugriff auf df1
pf.ix[1] #Zugriff auf df2
pf['df1'] #Dies ist auch der Zugriff auf df1

Auf diese Weise können Sie auf jede Tabelle in Panel zugreifen.

#Neue Spalte zur Tabelle hinzufügen
pf['df1']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)
pf['df2']['E'] = pd.DataFrame(np.random.randn(100, 1), index = rng)

#Überprüfen Sie die Datenstruktur
pf.shape
#=> (3, 100, 4)

#df1 Greifen Sie auf 10 Spalten in Spalte E der Tabelle zu
pf.ix['df1',-10:,'E']
#=>
# 2014-04-01   -1.623615
# 2014-04-02    1.878481
# 2014-04-03   -0.890555
# 2014-04-04    0.736037
# 2014-04-05   -1.451665
# 2014-04-06    0.126473
# 2014-04-07    0.997485
# 2014-04-08   -1.252981
# 2014-04-09   -1.136791
# 2014-04-10   -1.873199

Panel kann auch mit to_flame () in gestapelte Datenrahmen konvertiert werden. Für diesen gestapelten Datenrahmen können statistische Funktionen verwendet werden. Außerdem kann dieses Objekt mit to_panel () in das ursprüngliche Panel zurückgesetzt werden.

pf.to_frame().to_panel()
#=>
# <class 'pandas.core.panel.Panel'>
# Dimensions: 3 (items) x 100 (major_axis) x 4 (minor_axis)
# Items axis: df1 to df3
# Major_axis axis: 2014-01-01 00:00:00 to 2014-04-10 00:00:00
# Minor_axis axis: A to D

Verwenden Sie Panel, um Protokolldaten zu analysieren

Angenommen, eine Anwendungsprotokolldatei wird täglich in einem Verzeichnis generiert, z. B. Fluentd. Bei der datumsübergreifenden Analyse dieser Protokolldatei ist es sehr praktisch, die Daten für einen Tag zu tabellieren und eine dreidimensionale Datenstruktur für die Zeitreihenanalyse zu verwenden.

Der Artikel des anderen Tages Ich werde das Programm neu schreiben und anwenden, um die Dateiliste des Verzeichnisses zu erhalten, das als Beispiel herauskam.

import sys
import os
import pandas as pd

def list_files(path):
    dic = {}
    for root, dirs, files in os.walk(path):
        for filename in files:
            fullname = os.path.join(root, filename)
            if filename.startswith("fluent") \
               and filename.endswith(".log"):
                try:
                    print("Reading: %(filename)s" % locals())
                    df = pd.read_table(
                        os.path.join(path, filename), header=None)
                    dic[filename] = df
                except pd.parser.CParserError:
                    print("Skip: %(filename)s" % locals())
    return pd.Panel(dic)

Das von dieser Methode zurückgegebene Panel-Objekt ist eine dreidimensionale Datenstruktur, die mehrere Protokolldateien sammelt, sodass Sie statistische Funktionen zum Analysieren von Zeitreihendaten verwenden können.

Zusammenfassung

Pandas können Panel verwenden, um mit 3D-Datenstrukturen zu arbeiten. Durch Hinzufügen einer weiteren Dimension zusätzlich zur Zeilen- und Spaltendatenstruktur ist dies für die Zeitreihendatenanalyse hilfreich.

Recommended Posts

Behandeln Sie 3D-Datenstrukturen mit Pandas
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Betreiben Sie LibreOffice mit Python
Umgang mit Sounds in Python
Datenverarbeitungstipps mit Pandas
Einfallsreichtum beim speichersparenden Umgang mit Daten mit Pandas
Arbeiten mit LibreOffice in Python: Importieren
Vielseitige Datenerfassung mit Pandas + Matplotlib
Python-Datenstruktur mit Chemoinfomatik gelernt
Arbeiten mit DICOM-Bildern in Python
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Laden Sie csv mit doppelten Spalten in Pandas
Ali Buch in Python: Abschnitt 2-4, Datenstruktur
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
RDS-Daten über die Schrittplattform werden an Pandas gesendet
Beispiel für eine effiziente Datenverarbeitung mit PANDAS
Best Practices für den Umgang mit Daten mit Pandas
Bequeme Zeitreihenaggregation mit TimeGrouper von Pandas
Visualisieren Sie Korona-Infektionsdaten in Tokio mit matplotlib
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Löschen Sie Daten in einem Muster mit Redis Cluster
Lesen Sie Tabellendaten in einer PDF-Datei mit Python
Pandas Daten lesen
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
Visualisieren Sie Daten interaktiv mit TreasureData, Pandas und Jupyter.
Versuchen Sie, mit Mongo in Python auf dem Mac zu arbeiten
Entfernen Sie Zeilen mit doppelten Indizes in pandas DataFrame
Behandeln Sie Ganzzahltypen mit fehlenden Werten in Pandas
[Einführung für Anfänger] Umgang mit MySQL mit Python
Speichern Sie Pandas-Daten mit Cloud Pak for Data (Watson Studio) im Excel-Format in Datenbeständen.
Trainieren Sie MNIST-Daten mit PyTorch mithilfe eines neuronalen Netzwerks
Holen Sie sich Amazon RDS (PostgreSQL) -Daten mithilfe von SQL mit Pandas
Spezifischer Beispielcode für die Arbeit mit SQLite3 in Python
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
Seien Sie vorsichtig beim Lesen von Daten mit Pandas (geben Sie dtype an)
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Füllen Sie Ausreißer mit NaN basierend auf Quadranten in Pandas
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Verarbeiten Sie CSV-Daten mit Python (Zählverarbeitung mit Pandas)
Sortieren Sie die Postdaten in umgekehrter Reihenfolge mit Djangos ListView
[Memo] Textabgleich im Pandas-Datenrahmen mit Flashtext
Konvertieren Sie numerische Variablen mit Pandas in kategoriale Variablen, indem Sie einen Schwellenwert festlegen
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Datenanalyse mit Python 2
Lerne Pandas in 10 Minuten
Datensätze mit Pandas verarbeiten (1)
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datensätze mit Pandas verarbeiten (2)
Zusammenführen von Datensätzen mit Pandas
Abtastung in unausgeglichenen Daten
Pandas lernen mit Chemoinfomatik
Daten mit TensorFlow lesen
UnicodeDecodeError in pandas read_csv
2D-Plot in Matplotlib