DataFrame verfügt über eine zweidimensionale Datenstruktur, die wie ein Bündel mehrerer Serien aussieht. Sie können einen DataFrame generieren, indem Sie eine Serie an pd.DataFrame () übergeben. Die Zeilen werden automatisch in aufsteigender Reihenfolge von 0 nummeriert.
pd.DataFrame([Series, Series, ...])
Sie kann auch generiert werden, indem der Wert in einem Wörterbuchtyp ausgedrückt wird, bei dem es sich um einen Listentyp handelt. Beachten Sie, dass die Listenlänge jedes Elements gleich sein muss.
import pandas as pd
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Ausgabeergebnis
fruits time year
0 apple 1 2001
1 orange 4 2002
2 banana 5 2001
3 strawberry 6 2008
4 kiwifruit 3 2006
import pandas as pd
index = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
data1 = [10, 5, 8, 12, 3]
data2 = [30, 25, 12, 10, 8]
series1 = pd.Series(data1, index=index)
series2 = pd.Series(data2, index=index)
df = pd.DataFrame([series1,series2])
print(df)
#Ausgabeergebnis
apple orange banana strawberry kiwifruit
0 10 5 8 12 3
1 30 25 12 10 8
In DataFrame werden Zeilennamen als Indizes und Spaltennamen als Spalten bezeichnet.
Wenn ein DataFrame erstellt wird, ohne etwas anzugeben Indizes werden Ganzzahlen in aufsteigender Reihenfolge von 0 zugewiesen.
Darüber hinaus wird die Spalte zum Index der Serie, der die Originaldaten und den Schlüssel des Wörterbuchtyps darstellt.
Der Index der DataFrame-Typvariablen df kann festgelegt werden, indem df.index eine Liste mit derselben Länge wie die Anzahl der Zeilen zugewiesen wird. Die Spalten von df können festgelegt werden, indem df.columns eine Liste mit der gleichen Länge wie die Anzahl der Spalten zugewiesen wird.
df.index = ["name1", "name2"]
import pandas as pd
index = ["apple", "orange", "banana", "strawberry", "kiwifruit"]
data1 = [10, 5, 8, 12, 3]
data2 = [30, 25, 12, 10, 8]
series1 = pd.Series(data1, index=index)
series2 = pd.Series(data2, index=index)
df = pd.DataFrame([series1, series2])
#Stellen Sie den df-Index so ein, dass er bei 1 beginnt
df.index=[1,2]
print(df)
#Ausgabeergebnis
apple orange banana strawberry kiwifruit
1 10 5 8 12 3
2 30 25 12 10 8
Wenn Sie eine Datenzeile hinzufügen möchten, verwenden Sie append (). Hier sind DataFrame-Typdaten df und Serientypdaten Serien.
Bereiten Sie zunächst Serientypdaten vor, die dem Index in der Spalte von DataFrame entsprechen. Wenn Sie dann append () schreiben, wie im folgenden Beispielcode gezeigt, wird df eine Datenzeile hinzugefügt.
Wenn Sie eine Serie hinzufügen möchten, deren Index nicht mit dem DataFrame übereinstimmt (Zum Beispiel für DataFrame-Typdaten mit Spalten ["Früchte", "Zeit", "Jahr"] Wenn Sie Serientypdaten mit dem Index ["Früchte", "Uhrzeit", "Jahr", "Datum"] hinzufügen möchten)
Den Daten df vom Typ DataFrame wird eine neue Spalte hinzugefügt, und Elemente, die in dieser Spalte keinen Wert haben, werden als fehlende Werte behandelt. NaN (Non a Number) wird automatisch gefüllt.
Wenn Sie zu diesem Zeitpunkt Serien ohne Namensattribut verketten möchten, tritt ein Fehler auf, sofern nicht ignore_index = True angegeben ist. Das Attribut name ist der Name, der an die Serie selbst angehängt ist (nicht der Spaltenname).
ata = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])
df = df.append(series, ignore_index=True) #Es ist in Ordnung, ohne Namen zu ignorieren.
print(df)
#Ausgabeergebnis
fruits time year date
0 apple 1 2001 NaN
1 orange 4 2002 NaN
2 banana 5 2001 NaN
3 strawberry 6 2008 NaN
4 kiwifruit 3 2006 NaN
5 mango 7 2008 12/1
#Serie ohne Namensattribut
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])
print(series)
#Ausgabeergebnis
fruits mango
year 2008
time 7
date 12/1
dtype: object
#Serie mit Namensattribut
series = pd.Series(["mango", 2008, 7, "12/1"], index=["fruits", "year", "time", "date"])
series.name = 'test'
print(series)
#Ausgabeergebnis
fruits mango
year 2008
time 7
date 12/1
Name: test, dtype: object
Möglicherweise möchten Sie einem vorhandenen DataFrame ein neues Element (eine neue Spalte) hinzufügen.
Wenn die Variable vom Typ DataFrame df ist
df["Neuer Spaltenname"] #Sie können dieser Spalte eine neue Spalte hinzufügen, indem Sie ihr eine Liste oder Serie zuweisen.
Wenn eine Liste zugewiesen wird, wird das erste Element der Liste aus der ersten Zeile von df zugewiesen, und wenn Serie zugewiesen wird, entspricht der Index der Serie dem Index von df.
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
df["price"] = [150, 120, 100, 300, 150]
print(df)
#Ausgabeergebnis
fruits time year price
0 apple 1 2001 150
1 orange 4 2002 120
2 banana 5 2001 100
3 strawberry 6 2008 300
4 kiwifruit 3 2006 150
Auf Daten in DataFrame kann durch Angabe von Zeilen und Spalten verwiesen werden. Die Referenz ändert sich wie in der folgenden Abbildung gezeigt, je nachdem, wie die Zeilen und Spalten angegeben sind.
Es gibt verschiedene Möglichkeiten, darauf zu verweisen Vorerst werden wir uns um loc und iloc kümmern.
loc macht eine Referenz mit Namen iloc macht eine Referenz nach Nummer.
Verwenden Sie loc, um auf Daten vom Typ DataFrame nach Index- oder Spaltennamen zu verweisen.
Wenn die Variable vom Typ DataFrame df ist
df.loc["Liste der Indizes", "Liste der Spalten"] #Sie können den entsprechenden Bereich von DataFrame erhalten.
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Ausgabeergebnis
fruits time year
0 apple 1 2001
1 orange 4 2002
2 banana 5 2001
3 strawberry 6 2008
4 kiwifruit 3 2006
#Liste der Indizes im obigen DataFrame[1, 2]Und eine Liste von Spalten["time","year"]Angegeben.
df = df.loc[[1,2],["time","year"]] #Achten Sie auf doppelte Klammern, da es sich um eine Listenspezifikation handelt
print(df)
#Ausgabeergebnis
time year
1 4 2002
2 5 2001
Verwenden Sie iloc, um auf Daten vom Typ DataFrame nach Index- oder Spaltennummer zu verweisen.
Wenn die Variable vom Typ DataFrame df ist
df.iloc["Liste der Zeilennummern","Liste der Spaltennummern"] #Sie können den entsprechenden Bereich von DataFrames abrufen.
Zahlen beginnen bei 0 für Zeilen und Spalten. Zusätzlich zum Übergeben der Liste ist es auch möglich, sie in Slice-Notation anzugeben.
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df)
#Ausgabeergebnis
fruits time year
0 apple 1 2001
1 orange 4 2002
2 banana 5 2001
3 strawberry 6 2008
4 kiwifruit 3 2006
#Liste der Zeilennummern im obigen DataFrame[1, 3]Und eine Liste mit Spaltennummern[0, 2]Angegeben.
df = df.iloc[[1, 3], [0, 2]]
print(df)
#Ausgabeergebnis
fruits year
1 orange 2002
3 strawberry 2008
Wenn die Variable vom Typ DataFrame df ist, geben Sie in df.drop () einen Index oder eine Spalte an. Sie können die entsprechende Zeile oder Spalte löschen.
Sie können alle Indizes oder Spalten löschen, indem Sie sie in einer Liste übergeben.
Sie können jedoch nicht gleichzeitig Zeilen und Spalten löschen. Wenn Sie eine Spalte löschen möchten, geben Sie im zweiten Argument Achse = 1 an.
axis=1 #Geben Sie dies beim Löschen einer Spalte an.
import pandas as pd
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"time": [1, 4, 5, 6, 3],
"year": [2001, 2002, 2001, 2008, 2006]}
df = pd.DataFrame(data)
# drop()Von df 0 mit,Löschen Sie die erste Zeile
df_1 = df.drop(range(0, 2))
# drop()Spalte von df using"year"Löschen
df_2 = df.drop("year", axis=1)
print(df_1)
print()
print(df_2)
#Ausgabeergebnis
fruits time year
2 banana 5 2001
3 strawberry 6 2008
4 kiwifruit 3 2006
fruits time
0 apple 1
1 orange 4
2 banana 5
3 strawberry 6
4 kiwifruit 3
Wenn die Variable vom Typ DataFrame df ist
df.sort_values(by="Spalte oder Liste der Spalten") #Jetzt können Sie die Daten sortieren.
ascending=True #Dieses Argument sortiert die Spaltenwerte in aufsteigender (kleinster) Reihenfolge.
import pandas as pd
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"time": [1, 4, 5, 6, 3],
"year": [2001, 2002, 2001, 2008, 2006]}
df = pd.DataFrame(data)
print(df)
>>>Ausgabeergebnis
fruits time year
0 apple 1 2001
1 orange 4 2002
2 banana 5 2001
3 strawberry 6 2008
4 kiwifruit 3 2006
#Daten in aufsteigender Reihenfolge sortieren(Geben Sie eine Spalte als Argument an)
df = df.sort_values(by="year", ascending = True)
print(df)
#Ausgabeergebnis
fruits time year
0 apple 1 2001
2 banana 5 2001
1 orange 4 2002
4 kiwifruit 3 2006
3 strawberry 6 2008
#Daten in aufsteigender Reihenfolge sortieren(Geben Sie eine Liste von Spalten als Argument an)
#Ausgabeergebnis
df = df.sort_values(by=["time", "year"] , ascending = True)
print(df)
fruits time year
0 apple 1 2001
4 kiwifruit 3 2006
1 orange 4 2002
2 banana 5 2001
3 strawberry 6 2008
DataFrame ist dasselbe wie Series Durch Angabe einer Bool-Typsequenz können Sie eine Filterung durchführen, um nur True-Sequenzen abzurufen.
Ebenso wie bei Series können Sie mit DataFrame eine Sequenz vom Typ Bool aus einem bedingten Ausdruck abrufen. Mit diesem bedingten Ausdruck können Sie filtern.
Der folgende Code extrahiert beispielsweise nur gerade Datenzeilen.
data = {"fruits": ["apple", "orange", "banana", "strawberry", "kiwifruit"],
"year": [2001, 2002, 2001, 2008, 2006],
"time": [1, 4, 5, 6, 3]}
df = pd.DataFrame(data)
print(df.index % 2 == 0)
print()
print(df[df.index % 2 == 0])
#Ausgabeergebnis
[ True False True False True]
fruits time year
0 apple 1 2001
2 banana 5 2001
4 kiwifruit 3 2006
Wenn die Variable vom Typ DataFrame df ist
df.loc[df["Säule"]Bedingter Ausdruck einschließlich] #Ein DataFrame mit Zeilen, die übereinstimmende Elemente enthalten, wird generiert.
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)
#Mit Filterung, df"apple"5 oder mehr Spalten"kiwifruit"Weisen Sie df einen DataFrame zu, der Zeilen enthält, deren Spalten einen Wert größer oder gleich 5 haben.
df = df.loc[df["apple"]>=5]
df = df.loc[df["kiwifruit"]>=5]
print(df)
#Ausgabe
apple orange banana strawberry kiwifruit
1 6 8 6 3 10
5 8 2 5 4 8
8 6 8 4 8 8
Recommended Posts