Python-Anwendung: Pandas # 3: Dataframe

Was ist Dataframe?

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

Index und Spalte einstellen

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

Fügen Sie eine Zeile hinzu (beachten Sie das Namensattribut)

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

Spalte hinzufügen

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

Datenreferenz

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.

image.png

Referenz mit Namen

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

Referenz nach Nummer

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

Zeile oder Spalte löschen

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

Sortieren

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

Filtern

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

Python-Anwendung: Pandas # 3: Dataframe
Anwendung von Python: Pandas Teil 4: Verketten und Kombinieren von DataFrames
Python-Anwendung: Pandas Teil 1: Basic
Python-Anwendung: Pandas Teil 2: Serie
Python-Handspiel (Pandas / DataFrame-Beginn)
[Python] Operationsnotiz von Pandas DataFrame
Anwendung von Python: Datenbereinigung Teil 2: Datenbereinigung mit DataFrame
Meine Pandas (Python)
Python Pandas Memo
[Python] Was ist Pandas Series und DataFrame?
[Python] Fügen Sie Pandas DataFrame insgesamt Zeilen hinzu
[Python-Pandas] Erstellen Sie einen leeren DataFrame aus einem vorhandenen DataFrame
Python-Pandas: Suchen Sie mit regulären Ausdrücken nach DataFrame
[Python] Erstellen Sie eine Tabelle von Pandas DataFrame zu Postgres
[Python] Sortieren Sie die Tabelle nach sort_values (pandas DataFrame)
Pandas auf python2.6 installieren
Anwendung von Python 3 vars
Python Basic - Pandas, Numpy -
Grundlegende Bedienung von Python Pandas Series und Dataframe (1)
Illustrierter Pandas-Funktionsanwendungsprozess
Lesen Sie CSV mit Python-Pandas
[Python] Liste in Pandas konvertieren [Pandas]
Python-Pandas entfernen den Header-Bereich
[Python] Ändere den Typ mit Pandas
Python-Anwendung: Datenvisualisierung # 2: matplotlib
Python Pandas Studie aktuelle Zusammenfassung
100 Pandas klopfen für Python-Anfänger
Webanwendung mit Python + Flask ② ③
Datenanalyse mit Python-Pandas
Exportieren Sie den Pandas-Datenrahmen nach Excel
Webanwendung mit Python + Flask ④
Die Kraft der Pandas: Python
Konvertieren Sie mit Python für .NET von Pandas DataFrame in System.Data.DataTable
[Python] Laden von CSV-Dateien mit Pandas
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
Pandas / DataFrame-Tipps für den praktischen Gebrauch
[Pandas] Speichern Sie DataFrame als JSON, laden Sie JSON als DataFrame
Anwendung von Python: Datenbereinigung Teil 1: Python-Notation
Python
Hit Schatzdaten von Python Pandas
python / pandas / dataframe / So erhalten Sie die einfachste Zeile / Spalte / Index / Spalte
Python-Anwendung: Datenverarbeitung # 3: Datenformat
Authentifizierung mit Tweepy-User-Authentifizierung und Anwendungsauthentifizierung (Python)
[Python] Verwendung der Pandas-Serie
Python: Anwendung des überwachten Lernens (Rückkehr)
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
Erstellen Sie einen Pandas-Datenrahmen aus einer Zeichenfolge.
[Python] So fügen Sie einer Tabelle Zeilen und Spalten hinzu (pandas DataFrame)
Pandas
[Einführung in die Udemy Python3 + -Anwendung] 56. Abschluss
Erstellen Sie eine neue Anwendung mit Python, Django
Überwachen Sie die Leistung von Python-Anwendungen mit Dynatrace ♪
Konvertieren Sie die Liste mit Python in DataFrame
[Python] Verbinde zwei Tabellen mit Pandas
Python: Negative / Positive Analyse: Textanalyse-Anwendung
[Einführung in Python] Verwenden wir Pandas
Python-Anwendung: Numpy Teil 3: Double Array
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)