Bisher war die Datenmanipulation mit Pandas in Python eine Haltung, bei der Sie nur googeln sollten, um herauszufinden, wie Sie sie bei Bedarf verwenden können. Wenn Sie jedoch Datenanalyse und maschinelles Lernen studieren, können Sie Jupyter Notebook zum Schlürfen von Daten verwenden. Ich habe das Gefühl, dass ich nicht sprechen kann, wenn ich es nicht bedienen kann, also beginne ich mich neu zu organisieren und zu lernen, wie man Pandas von Grund auf benutzt. Dieser Artikel ist die Studiennotiz.
Der Inhalt dieses Artikels wird in der Jupyter Notebook-Umgebung getestet, die gemäß dem folgenden Link erstellt wurde. Einfache Installation und Inbetriebnahme von Jupyter Notebook mit Docker (unterstützt auch nbextensions und Scala) --Qiita
In dieser Umgebung können Sie mit einem Browser auf Port 8888 zugreifen und Jupyter Notebook verwenden. Sie können eine neue Notiz öffnen, indem Sie oben rechts auf Neu> Python 3 klicken.
Ein Pandas DataFrame ist ein Bild von Tabellendaten mit Zeilen und Spalten. Zeilen können beginnend mit 0 nummeriert werden, aber es scheint, dass sie Zeichenfolgen sein können. Die Spalten haben die Namen der Spalten.
Während DataFrame tabellarisch ist, gibt es auch ein Nur-Spalten-Objekt namens Serie.
Die folgenden Artikel waren für den Inhalt von DataFrame und Series sehr hilfreich. Meine pandas.Series- und DataFrame-Bilder waren falsch - Qiita
import pandas as pd
#Wenn es einen Header gibt
df = pd.read_csv("data.csv")
#Die Kopfzeile wird zum Spaltennamen
#Wenn es keinen Header gibt
df = pd.read_csv("data.csv", header=None)
#Zahlen, die mit 0 beginnen, werden zu Spaltennamen
#Wenn Sie einen Spaltennamen ohne Überschrift angeben möchten
df = pd.read_csv("data.csv", names=["id", "target", "data1", "data2", "data3"])
Ab diesem Artikel werden CSV-Dateien mit entsprechenden Zufallszahlen erstellt https://github.com/suzuki-navi/sample-data/blob/master/sample-data-1.csv Ich benutze.
(GitHub formatiert und zeigt auch CSV-Dateien an)
DataFrame-Objekte können einfach auf dem Jupyter-Notizbuch überprüft werden.
Wenn Sie nur einen Teil der Daten sehen möchten
#Erste 5 Zeilen
df.head()
#Erste 3 Zeilen
df.head(3)
# or
df[:3]
#Letzte 5 Zeilen
df.tail()
#Letzte 3 Zeilen
df.tail(3)
#Extrahieren Sie nur die 11. bis 20. Zeile
# (Der Index von 0 ist 10 bis 19)
df[10:20]
#Auszug aus der 11. Zeile bis zum Ende
# (Der Index ab 0 liegt hinter 10)
df[10:]
#Überprüfen Sie nur Zeile 11
# (10 für Indizes ab 0)
df.loc[10]
#Extrahieren Sie nur bestimmte Spalten
df[["target", "data1"]]
#Extrahieren Sie nur bestimmte Spalten
#Werden Sie eine Serie anstelle eines DataFrame
df["data1"]
# df[["data1"]]Anders als
#Extrahieren Sie nur bestimmte Spalten in einem bestimmten Zeilenbereich
df[["target", "data1"]][10:20]
# or
df[10:20][["target", "data1"]]
Selbst wenn Sie nur einige Zeilen extrahieren, bleibt der an die Zeilen angehängte Index erhalten.
df.shape
# => (300, 5)
df.columns
# => Index(['id', 'target', 'data1', 'data2', 'data3'], dtype='object')
df.dtypes
# => id int64
# target int64
# data1 float64
# data2 float64
# data3 float64
# dtype: object
Sie können Operationen an Spalten ausführen.
df [" data1 "]
ist Serie, aber wenn Sie es wie df [" data1 "] / 100
schreiben, führt es die Operation / 100
für jedes Element der Serie aus und erhält das Ergebnis in Serie. Ich kann es schaffen
Sie können auch Operationen zwischen Spalten ausführen.
df["data1"] + df["data2"]
# df["data1"] >=Generieren Sie einen DataFrame, der nur aus Zeilen besteht, in denen 0 True ist
#Der Zeilenindex wird beibehalten, sodass er zu einer diskreten Zahl wird
df[df["data1"] >= 0]
#Sie können auch wie SQL abfragen
df.query('data1 >= 30 and target == 1')
#Wenn Sie eine Zeichenfolge in die Abfrage einfügen möchten""Umgeben mit
df.query('target == "1"')
df["target"].unique()
# => array([3, 2, 1])
df.describe()
Im Folgenden wird ein DataFrame mit Zeilen zurückgegeben, die nach der Spalte "data1" sortiert sind.
#Daten1 Spalte aufsteigende Reihenfolge
df.sort_values("data1")
#absteigende Reihenfolge der Spalte data1
df.sort_values("data1", ascending=False)
#Nach mehreren Spalten sortieren
df.sort_values(["target", "data1"], ascending=False)
Wie kann ich die erste Sortierung "Ziel" absteigend und die zweite Sortierung "Daten1" aufsteigend machen?
Im folgenden Beispiel wird am rechten Ende eine neue Wertespalte hinzugefügt, die für eine vorhandene Spalte berechnet wurde.
df["data_sum"] = df["data1"] + df["data2"] + df["data3"]
das ist alles.
Recommended Posts