DataFrames können in Pandas verkettet und kombiniert werden.
Das Verbinden von DataFrames in einer bestimmten Richtung wird als Verkettung bezeichnet. Verkettung von DataFrames mit übereinstimmenden Indizes oder Spalten
axis=0 #Wenn Sie dies angeben, wird die Liste von Anfang an vertikal verkettet.
Wenn Achse = 1 angegeben ist, werden sie auch horizontal verbunden.
#Vertikal verbunden
pandas.concat([Liste der DataFrames], axis=0)
#Horizontal verbunden
pandas.concat([Liste der DataFrames], axis=1)
#Bei horizontaler Verkettung wird nicht unterschieden, auch wenn jeder DataFrame dieselbe Spalte hat
#Beachten Sie, dass die Spalten dupliziert werden, wenn sie verkettet werden.
Wenn Sie in vertikaler Richtung verbinden, verbinden Sie in derselben Spalte Wenn Sie horizontal verketten, verketten Sie mit demselben Index.
Der Punkt ist, dass leere Zeilen und Spalten einmal mit NaN gesetzt werden.
Für mehr Informationen Beim Verketten von DataFrames, deren Indizes und Spalten nicht übereinstimmen Zellen mit NaN in Zeilen und Spalten, die keine gemeinsamen Indizes oder Spalten sind, werden automatisch erstellt.
Auch wenn die Indizes und Spalten nicht übereinstimmen, ist die Verkettungsmethode dieselbe wie bei ihnen.
pandas.concat([Liste der DataFrames], axis=0)
#Stellen Sie eine vertikale Verbindung von oben in der Liste her
# axis=Wenn 1 angegeben ist, werden sie horizontal verbunden.
Da die Verkettung die DataFrames verbindet, ohne sie zu unterscheiden Möglicherweise sind doppelte Etiketten vorhanden.
Zum Beispiel sind in der Verkettung von Beispiel 1 unten "Apfel", "Orange", "Banane" Sie können sehen, dass sie als Beschriftungen dupliziert werden.
In diesem Fall fügen Sie pd.concat () die durch Schlüssel angegebene Bezeichnung hinzu. Sie können doppelte Beschriftungen vermeiden.
concat_df=pd.concat([df_data1,df_data2],axis=1,keys=["X", "Y"]) #Mit Schlüsseln einstellen
Der Datenrahmen nach der Verkettung ist ein Multi-Index, der mehrere Beschriftungen verwendet.
Im Fall von Beispiel 2 können Sie sehen, dass die neuen Spalten "X" und "Y" über den vorhandenen Spalten hinzugefügt wurden. In diesem Fall kann sich df ["X"] auf die Spalte mit der Bezeichnung "X" beziehen. Sie können auf die Spalte "Apfel" in der Spalte "X" verweisen, indem Sie df ["X", "Apfel"] schreiben.
Beschreibt den Join. Das Verbinden wird auch als Zusammenführen bezeichnet. Join gibt eine Spalte mit dem Namen Key an Es ist eine Operation, um die Zeilen mit demselben Wert im Schlüssel zweier Datenbanken horizontal zu verbinden.
Es gibt zwei Hauptverbindungsmethoden: Innenverbindung und Außenverbindung. Verbinden Sie die folgenden zwei DataFrames in der Spalte "Früchte".
Zeilen, die keinen gemeinsamen Wert in der Spalte Schlüssel haben, werden verworfen. Lassen Sie auch andere Zeilen, die dieselbe Spalte haben und deren Werte nicht übereinstimmen Alternativ können Sie angeben, dass es verworfen werden soll. Sie können sehen, dass nur die gemeinsamen "Früchte" -Spaltendaten der beiden DataFrames übrig bleiben.
Einige Zeilen haben keinen gemeinsamen Wert in der Spalte Schlüssel. Elemente, die keinen Wert haben, werden mit NaN gefüllt. Sie können sehen, dass NaN in die Zeilenrichtungsdaten von "Kiwifruit" und "Mango" eingefügt wird.
Versuchen wir, die beiden DataFrames df1 und df2 intern zu kombinieren.
pandas.merge(df1, df2, on= "Schlüsselspalte", how="inner")
In diesem Fall wird df1 nach links verschoben Zeilen mit nicht übereinstimmenden Werten in der Spalte Schlüssel werden verworfen.
Außerdem bleiben andere allgemeine Spalten als die Schlüsselspalte übrig, deren Werte nicht übereinstimmen. Die Spalte, die zum DataFrame auf der linken Seite gehörte, ist _x Die Spalte auf der rechten Seite hat _y als Suffix. Sofern nicht anders angegeben, ist der DataFrame-Index nicht an dem Prozess beteiligt.
Lassen Sie uns zwei DataFrames, df1 und df2, äußerlich verbinden.
pandas.merge(df1, df2, on="Schlüsselspalte", how="outer")
In diesem Fall wird die Zeile, in der df1 nach links verschoben wird und die Werte nicht in der Spalte Schlüssel übereinstimmen Elemente ohne Restwert werden mit NaN gefüllt.
Außerdem bleiben allgemeine Spalten mit nicht übereinstimmenden Werten außer der Schlüsselspalte übrig. Die Spalte, die zum DataFrame auf der linken Seite gehörte, ist _x, Die Spalte auf der rechten Seite hat _y als Suffix. Sofern nicht anders angegeben, ist der DataFrame-Index nicht an dem Prozess beteiligt.
Von den beiden DataFrames Order_df (links), eine mit Bestellinformationen Angenommen, der andere ist customer_df (rechts) mit Kundeninformationen.
In den Bestellinformationen lautet die Spalte mit der ID des einkaufenden Kunden "customer_id". In den Kundeninformationen lautet die Spalte mit der Kunden-ID "ID".
Die Spalten der Spalten, denen Sie entsprechen möchten, stimmen nicht überein.
In diesem Fall geben Sie die Spalte an, die Sie als Schlüssel verwenden möchten Sie können Spalten von DataFrames mit verschiedenen Spalten in der Korrespondenz kombinieren.
pandas.merge(Linke DF,Rechter DF, left_on="Linke DFのカラム", right_on="Rechte DF-Spalte", how="Verbindungsmethode")
Wenn der zum Verbinden von DataFrames verwendete Schlüssel ein Index ist Geben Sie den Index an, anstatt die Spalten des DataFrame anzugeben.
left_index=True #Linker DF-Index
right_index=True #DF-Index rechts
import pandas as pd
#Bestellinformationen
order_df = pd.DataFrame([[1000, 2546, 103],
[1001, 4352, 101],
[1002, 342, 101],
[1003, 1192, 102]],
columns=["id", "item_id", "customer_id"])
#Kundeninformation
customer_df = pd.DataFrame([["Tanaka"],
["Suzuki"],
["Kato"]],
columns=["name"])
customer_df.index = [101, 102, 103] #Ändern Sie hier den Indexwert
# order_df und kunde_Kombinieren Sie df mit der Kunden-ID, um Schlüssel und Bestellung_Ersatz in df
order_df = pd.merge(order_df, customer_df, left_on="customer_id", right_index=True, how="inner")
# right_index=Wahr und Kunde_Verbindet dieselbe Zeile wie id.
print(order_df)
#Ausgabe
id item_id customer_id name
0 1000 2546 103 Kato
1 1001 4352 101 Tanaka
2 1002 342 101 Tanaka
3 1003 1192 102 Suzuki
#Ausgabe(customer_df.ohne Index, wie="outer"Im Falle von)
id item_id customer_id name
0 1000.0 2546.0 103 NaN
1 1001.0 4352.0 101 NaN
2 1002.0 342.0 101 NaN
3 1003.0 1192.0 102 NaN
3 NaN NaN 0 Tanaka
3 NaN NaN 1 Suzuki
3 NaN NaN 2 Kato
Wenn die zu verarbeitende Datenmenge sehr groß ist, sind die Ausgabedaten begrenzt.
df.head() #Gibt einen DataFrame zurück, der nur die ersten 5 Zeilen enthält.
df.tail() #Gibt einen DataFrame zurück, der nur die letzten 5 Zeilen enthält.
Wenn Sie einen ganzzahligen Wert als Argument angeben, können Sie am Anfang oder Ende eine beliebige Anzahl von Zeilen angeben. Sie können einen DataFrame erhalten. Die Methoden head () und tail () können auch mit Variablen vom Typ Serie verwendet werden.
Wenn Sie Series oder DataFrame an die von NumPy bereitgestellte Funktion übergeben Sie können die Berechnungsverarbeitung auf alle Elemente anwenden.
Wenn Sie einen DataFrame an eine Funktion übergeben, die ein NumPy-Array empfängt Der Berechnungsprozess wird gemeinsam für jede Spalte durchgeführt.
Außerdem unterstützt Pandas Sendungen wie NumPy. Verwenden Sie den regulären Ausdruck "+ - * /", um zwischen Pandas und zwischen Pandas und ganzen Zahlen zu berechnen. Kann verarbeitet werden.
Zusammenfassende Statistik: Eine Zusammenfassung statistischer Informationen wie Durchschnitts-, Maximal- und Minimalwerte für jede Spalte.
Wenn die Variable vom Typ DataFrame df ist
df.describe()
#Beinhaltet die Anzahl pro Spalte von df, Mittelwert, Standardabweichung, Minimum, Quadrant, Maximum usw.
#Gibt einen DataFrame zurück.
Beachten Sie, dass die angezeigten Zusammenfassungsstatistiken je nach Datentyp variieren. Zeilen und Elemente können auch unter Verwendung von loc und at zusammen erhalten werden.
Der Name der Zusammenfassungsstatistik wird für den Index des erhaltenen DataFrame verwendet.
import numpy as np
import pandas as pd
np.random.seed(0)
columns = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
#Generieren Sie DataFrame und fügen Sie Spalten hinzu
df = pd.DataFrame()
for column in columns:
df[column] = np.random.choice(range(1, 11), 10)
df.index = range(1, 11)
#Von der zusammenfassenden Statistik von df"mean", "max", "min"Nehmen Sie df heraus_Ersatz in des.
df_des = df.describe().loc[["mean","max","min"]]
# df.describe()Gibt nur einen Datenrahmen zurück, daher müssen Sie ihn mit loc angeben.
print(df_des)
#Ausgabe
apple orange banana strawberry kiwifruit
mean 5.1 6.9 5.6 4.1 5.3
max 10.0 9.0 10.0 9.0 10.0
min 1.0 2.0 1.0 1.0 1.0
Die Operation zum Ermitteln des Unterschieds zwischen Linien ist eine Funktion, die insbesondere bei der Zeitreihenanalyse verwendet wird. Wenn die Variable vom Typ DataFrame df ist
df.diff() #Gibt einen DataFrame zurück, der die Differenz zwischen Zeilen oder Spalten berechnet.
df.diff(periods=Zeilen- oder Spaltenabstand, axis=Achsenrichtung)
# periods=Kann ausgelassen werden
#Wenn das erste Argument positiv ist, wird die Differenz zur vorherigen Zeile berechnet, und wenn es negativ ist, wird die Differenz zur nachfolgenden Zeile berechnet.
#Wenn die Achse 0 ist, ist sie in Zeilenrichtung und wenn sie 1 ist, ist sie in Spaltenrichtung.
import numpy as np
import pandas as pd
np.random.seed(0)
columns = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
#Generieren Sie DataFrame und fügen Sie Spalten hinzu
df = pd.DataFrame()
for column in columns:
df[column] = np.random.choice(range(1, 11), 10)
df.index = range(1, 11)
#Df für jede Zeile von df den DataFrame, der die Differenz zur Zeile nach 2 Zeilen berechnet hat_Ersatz in diff.
df_diff = df.diff(periods="-2",axis=0)
#Oder df_diff = df.diff(-2, axis=0)
#df und df_Überprüfen Sie den Verarbeitungsinhalt, indem Sie die Diff-Daten vergleichen.
print(df)
print()
print(df_diff)
#Ausgabe
apple orange banana strawberry kiwifruit
1 6 8 6 3 10
2 1 7 10 4 10
3 4 9 9 9 1
4 4 9 10 2 5
5 8 2 5 4 8
6 10 7 4 4 4
7 4 8 1 4 3
8 6 8 4 8 8
9 3 9 6 1 3
10 5 2 1 2 1
apple orange banana strawberry kiwifruit
1 2.0 -1.0 -3.0 -6.0 9.0
2 -3.0 -2.0 0.0 2.0 5.0
3 -4.0 7.0 4.0 5.0 -7.0
4 -6.0 2.0 6.0 -2.0 1.0
5 4.0 -6.0 4.0 0.0 5.0
6 4.0 -1.0 0.0 -4.0 -4.0
7 1.0 -1.0 -5.0 3.0 0.0
8 1.0 6.0 3.0 6.0 7.0
9 NaN NaN NaN NaN NaN
10 NaN NaN NaN NaN NaN
Für Datenbanken und DataFrames Aggregieren von Zeilen mit demselben Wert für eine bestimmte Spalte Dies wird als Gruppierung bezeichnet.
Wenn die Variable vom Typ DataFrame df ist
df.groupby("Säule") # 指定したSäule(列)でグループ化を行います。
Zu diesem Zeitpunkt wird ein GroupBy-Objekt zurückgegeben. Sie können die gruppierten Ergebnisse nicht direkt anzeigen.
Sie können die folgenden Vorgänge für das GroupBy-Objekt ausführen.
mean() #Finden Sie den Durchschnittswert für jede Gruppe
sum () #Führen Sie Operationen wie das Finden der Summe aus
Recommended Posts