Pandas ist eine Python-Erweiterung, die Funktionen zur Unterstützung der Datenanalyse bietet. Die vorläufige Datenanalyse ist wichtig für die Erstellung von KI, kann jedoch mit Pandas (+ Jupyter Notebook) sehr bequem analysiert werden. Es wird auch zur Eingabe von Frameworks für künstliche Intelligenz verwendet. Daher ist es wichtig zu wissen, wie es beim Studium der künstlichen Intelligenz verwendet wird.
Hier ist eine Zusammenfassung dessen, was Sie mit Pandas tun können.
Mit pip können Sie Pandas einfach mit dem folgenden Befehl installieren.
# pip install pandas
Sie können Pandas mit der folgenden "Magie" verwenden. Es scheint, dass die Abkürzung oft "pd" ist.
import pandas as pd
Der folgende Code wird unter der Annahme geschrieben, dass die obige "Magie" ausgeführt wurde. Außerdem wird häufig NumPy verwendet, sodass NumPy auch unter der Annahme beschrieben wird, dass es als Abkürzung "np" importiert wird.
Die Datenanalyse wird mit Pandas durchgeführt. In Pandas gibt es jedoch einen Typ zum Speichern der zu analysierenden Daten. Dies ist der Serientyp und der DataFrame-Typ.
Wenn NumPy-Array "wie Python-Listentyp" ist, ist der Serientyp "wie Python-Wörterbuchtyp (Diktat-Typ)". "ist. Sie können Ihre Daten wie einen Wörterbuchschlüssel kennzeichnen und viele andere Dinge tun. Darüber hinaus entspricht es den Daten für eine Spalte oder den Daten für einen Datensatz (eine Zeile) im unten eingeführten DataFrame-Typ.
Sie können einen Serientyp hauptsächlich aus einem Listentyp und einem Wörterbuchtyp erstellen.
Sie können einen Serientyp aus einem Wörterbuchtyp (Diktattyp) mit * Series () * von Pandas erstellen. Der Wörterbuchtypschlüssel wird zur Serienbezeichnung, und das Wörterbuchtypelement wird zu den Serientypdaten.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
Sie können einen Serientyp aus einem Listentyp oder einem NumPy-Array mit Pandas '* Series () * erstellen. Bei der Erstellung mit dem Listentyp werden die Beschriftungen fortlaufend von "0" nummeriert. Sie können die Beschriftung jedoch separat angeben.
record = [100, 75, 120]
record_np = np.array(record)
labels = ["akiyama", "satou", "tanaka"]
#Etiketten sind Seriennummern von "0"
# SR = 0 100
# 1 75
# 2 120
# dtype: int64
SR = pd.Series(record)
SR = pd.Series(record_np)
#Geben Sie die Bezeichnung mit "Index" an.
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(record, index=labels)
SR = pd.Series(record_np, index=labels)
Mit dem Serientyp können Sie verschiedene Vorgänge ausführen.
Für den Serientyp kann nur die Beschriftung mit Index und nur die Daten mit Werten angezeigt werden.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
# SR.index = Index(['akiyama', 'satou', 'tanaka'], dtype='object')
SR.index
# SR.values ist ein NumPy-Array
# SR.values = [100 75 120]
SR.values
Serientypen können nach Namen benannt werden. Sie können das Label auch mit index.name benennen.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
SR = pd.Series(Science)
# SR = Students
# akiyama 100
# satou 75
# tanaka 120
# Name: Science, dtype: int64
SR.name = 'Science'
SR.index.name = 'Students'
Wenn Sie dem Serientyp ein neues Etikett hinzufügen möchten, fügen Sie es wie folgt hinzu.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
#Wenn Sie den Serientyp mithilfe des Listentyps der Beschriftung neu erstellen, können Sie den Serientyp mit der neuen Beschriftung abrufen.
#Zu diesem Zeitpunkt werden Beschriftungen, die nicht zum ursprünglichen Serientyp gehören, nicht vererbt.
# SR_new = akiyama 100.0
# satou 75.0
# nico NaN
# mochidan NaN
# dtype: float64
labels = ["akiyama", "satou", "nico", "mochidan"]
SR_new = pd.Series(SR, index=labels)
Der Serientyp kann über den Index oder den Markennamen auf Daten zugreifen.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
# tmp = 75
tmp = SR[1]
tmp = SR["satou"]
#Kann mit Slice- oder Listentyp angegeben werden
#In diesem Fall wird der Serientyp zurückgegeben
# tmp2 = akiyama 100
# satou 75
# dtype: int64
tmp2 = SR[0:2]
tmp2 = SR[["akiyama", "satou"]]
Sie können Pandas '* isnull () * oder * notnull () * verwenden, um festzustellen, ob Ihre Daten null sind.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
SR = pd.Series(Science)
SR["satou"] = np.nan
# SR["satou"]Ist ein fehlender Wert(null)
#Fehlende Werte ändern den Datentyp in float64
# SR = akiyama 100.0
# satou NaN
# tanaka 120.0
# dtype: float64
SR
# akiyama False
# satou True
# tanaka False
# dtype: bool
pd.isnull(SR)
# akiyama True
# satou False
# tanaka True
# dtype: bool
pd.notnull(SR)
Sie können die Daten beurteilen, die die Bedingungen erfüllen, und die Daten anzeigen / ändern, die die Bedingungen erfüllen.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
#Beurteilung von Daten über 80
#Das Bewertungsergebnis wird als Serientyp erfasst
# is_Excellent = akiyama True
# satou False
# tanaka True
# dtype: bool
is_Excellent = SR > 80
#Nur Daten über 80 werden als Serientyp erfasst
# Excellent = akiyama 100
# tanaka 120
# dtype: int64
Excellent = SR[SR > 80]
Excellent = SR[is_Excellent]
#Aktualisieren Sie Daten, die die Bedingungen erfüllen, indem Sie einen Wert zuweisen
# SR = akiyama 80
# satou 75
# tanaka 80
# dtype: int64
SR[SR > 80] = 80
Sie können den Serientyp mit den angegebenen Daten abrufen, indem Sie * drop () * des Serientyps verwenden.
Science = {"akiyama": 100, "satou": 75, "tanaka": 120}
# SR = akiyama 100
# satou 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
#Geben Sie den Beschriftungsnamen der zu löschenden Zeile an
# SR_new = akiyama 100
# tanaka 120
# dtype: int64
SR_new = SR.drop("satou")
Sie können nach Label mit * sort_index () * vom Serientyp und nach Daten mit * sort_values () * sortieren.
Science = {"satou": 100, "akiyama": 75, "tanaka": 120}
# SR = satou 100
# akiyama 75
# tanaka 120
# dtype: int64
SR = pd.Series(Science)
#Nach Etikett in aufsteigender Reihenfolge sortieren
# SR_index = akiyama 75
# satou 100
# tanaka 120
# dtype: int64
SR_index = SR.sort_index()
#Wenn das Argument "inplace" auf "True" gesetzt ist, wird der Serientyp selbst aktualisiert.
SR.sort_index(inplace = True)
#Wenn das Argument "aufsteigend" auf "Falsch" gesetzt ist, erfolgt die Sortierung in absteigender Reihenfolge.
SR.sort_index(inplace = True, ascending=False)
#Nach Daten in aufsteigender Reihenfolge sortieren
# SR_values = akiyama 75
# satou 100
# tanaka 120
# dtype: int64
SR_values = SR.sort_values()
#Wenn das Argument "inplace" auf "True" gesetzt ist, wird der Serientyp selbst aktualisiert.
SR.sort_values(inplace = True)
#Wenn das Argument "aufsteigend" auf "Falsch" gesetzt ist, erfolgt die Sortierung in absteigender Reihenfolge.
SR.sort_values(inplace = True, ascending=False)
Der DataFrame-Typ ist "wie eine Tabelle". Die zu analysierenden Daten können das CSV-Format, das Excel-Format oder Daten in HTML sein, bieten jedoch eine Funktion zum Lesen und Betreiben dieser Daten als Tabelle.
Sie können Daten in verschiedenen Formaten als DataFrame-Typ lesen.
Sie können einen DataFrame-Typ aus einer CSV-Datei mit Pandas '* read_csv () * oder * read_table () * erstellen. Als Beispiel existiert die folgende CSV-Datei.
test.csv
No,Name,Score
Students,Science,Math
akiyama,100,100
satou,75,99
tanaka,120,150
suzuki,50,50
mochidan,0,10
Wenn Sie * read_csv () * verwenden, können Sie einen DataFrame-Typ wie folgt erstellen:
#Das Argument ist der Pfad zum Lesen, der als relativer Pfad aus dem aktuellen Verzeichnis angegeben wird.
DF = pd.read_csv('test.csv')
#Wenn für "Header" Keine angegeben ist, wird es als Daten aus der ersten Zeile gelesen.
DF = pd.read_csv('test.csv', header=None)
Bei Verwendung von * read_table () * können Sie das Trennzeichen angeben. Sie können einen DataFrame-Typ wie folgt erstellen:
#Das Argument ist der Pfad zum Lesen, der als relativer Pfad aus dem aktuellen Verzeichnis angegeben wird.
#Geben Sie ein Trennzeichen für "sep" an.
DF = pd.read_table('test.csv', sep=',')
#Wenn für "Header" Keine angegeben ist, wird es als Daten aus der ersten Zeile gelesen.
DF = pd.read_table('test.csv', , sep=',', header=None)
In diesen Fällen ist der DF vom folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
1 | satou | 75 | 99 |
2 | tanaka | 120 | 150 |
3 | suzuki | 50 | 50 |
4 | mochidan | 0 | 10 |
Sie können Pandas '* read_clipboard () * verwenden, um einen DataFrame-Typ aus der Zwischenablage zu erstellen. Als Beispiel existiert die folgende Tabelle.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
1 | satou | 75 | 99 |
2 | tanaka | 120 | 150 |
3 | suzuki | 50 | 50 |
4 | mochidan | 0 | 10 |
Angenommen, Sie kopieren die obige Tabelle und speichern sie in der Zwischenablage. Danach können Sie einen DataFrame-Typ wie folgt erstellen.
DF = pd.read_clipboard()
#Wenn für "Header" Keine angegeben ist, wird es als Daten aus der ersten Zeile gelesen.
DF = pd.read_clipboard(header=None)
Mit Pandas * read_excel () * können Sie einen DataFrame-Typ aus einer Excel-Datei erstellen. Beachten Sie jedoch, dass bei zusammengeführten Zellen die Zellen nicht zusammengeführt werden, was zu "NaN" für den Wert und "Unbenannt: * x *" für den Spaltennamen führt.
#Das erste Argument ist der Lesezielpfad, der als relativer Pfad aus dem aktuellen Verzeichnis angegeben wird.
# sheet_Geben Sie den Namen des Blattes an, dessen Name eingelesen werden soll
DF = pd.read_excel('test.xlsx', sheet_name='Sheet1')
#Wenn für "Header" "Keine" angegeben ist, werden die Daten aus der ersten Zeile der Excel-Datei gelesen.
DF = pd.read_excel('test.xlsx', sheet_name='Sheet1', header=None)
Sie können einen DataFrame-Typ auch aus einem Wörterbuchtyp (Diktattyp) erstellen. Wenn JSON-Daten per HTTP-Anforderung usw. zurückgegeben werden und JSON in einen Wörterbuchtyp umgewandelt werden kann, können die Daten als DataFrame-Typ bearbeitet werden.
import pandas as pd
import json
#Zum Beispiel, wenn es einen solchen JSON gibt
json_obj = """
{
"result": [{"Students": "akiyama", "Science": 100, "Math": 100},
{"Students": "satou" , "Science": 75, "Math": 99},
{"Students": "tanaka" , "Science": 120, "Math": 150}]
}
"""
#JSON-Objekt erstellen
data = json.loads(json_obj)
#In diesem Fall Daten["result"]Ist eine Wörterbuchtypliste
# data["result"] = [{'Students': 'akiyama', 'Science': 100, 'Math': 100},
# {'Students': 'satou' , 'Science': 75, 'Math': 99},
# {'Students': 'tanaka' , 'Science': 120, 'Math': 150}]
data["result"]
#Pandas DataFrame()Wenn Sie eine Wörterbuchtypliste als Argument übergeben, können Sie sie zu einem DataFrame-Typ machen
#1 Wörterbuchtyp, 1 Zeile DataFrame-Typ
DF = pd.DataFrame(data["result"])
In diesem Fall ist der DF vom folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
1 | satou | 75 | 99 |
2 | tanaka | 120 | 150 |
Sie können einen DataFrame-Typ auch aus einem NumPy-Array und einem Listentyp erstellen.
# data_np = [['akiyama' 100 100],
# ['satou' 75 99]]
data = [["akiyama", 100, 100], ["satou", 75, 99]]
data_np = np.array(data)
#Geben Sie den Spaltennamen in "Spalten" an (falls nicht angegeben, Seriennummer von "0").
DF = pd.DataFrame(data, columns = ['No', 'Name', 'Score'])
DF = pd.DataFrame(data_np, columns = ['No', 'Name', 'Score'])
In diesem Fall ist der DF vom folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
1 | satou | 75 | 99 |
Sie können den DataFrame-Typ als Datei speichern.
Sie können den DataFrame-Typ im CSV-Format speichern, indem Sie den DataFrame-Typ * to_csv () * verwenden.
#Angenommen, Sie erstellen auf irgendeine Weise einen DataFrame-Typ und nehmen verschiedene Änderungen vor.
DF = pd.read_csv('test.csv')
#Das erste Argument ist der Speicherzielpfad, der als relativer Pfad aus dem aktuellen Verzeichnis angegeben wird.
#Das Standardtrennzeichen ist ",」
DF.to_csv('test_2.csv')
#Sie können das Trennzeichen auch mit "sep" angeben.
DF.to_csv('test_3.csv', sep='_')
#Auswählbar mit oder ohne Index und Header
DF.to_csv("test_4.csv", header=False, index=False)
Wenn Sie den DataFrame-Typ verwenden, können Sie verschiedene Vorgänge ausführen.
Der DataFrame-Typ kann den Spaltennamen mit Spalten abrufen, oder Sie können den Spaltennamen angeben und nur diese Spalte abrufen.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Spaltennamen anzeigen
# DF.columns = Index(['Students', 'Science', 'Math'], dtype='object')
DF.columns
#Sie können die angegebene Spalte als Serientyp abrufen, indem Sie die folgenden Schritte ausführen
# 0 akiyama
# 1 satou
# Name: Students, dtype: object
DF["Students"]
DF.Students
#Wenn Sie zwei oder mehr Spalten erhalten möchten, geben Sie diese Spaltennamen als Listentyp an.
#Beim Abrufen von zwei oder mehr Spalten wird es vom DataFrame-Typ abgerufen
DF[["Students", "Math"]]
Der obige DF [["Schüler", "Mathematik"]] ist vom folgenden DataFrame-Typ.
Students | Math | |
---|---|---|
0 | akiyama | 100 |
1 | satou | 99 |
Bei Verwendung des DataFrame-Typs iloc kann nur die angegebene Zeile abgerufen werden.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Sie können die angegebene Zeile als Serientyp abrufen, indem Sie die folgenden Schritte ausführen
#Beachten Sie, dass Zeilennummern mit "0" beginnen.
# Students satou
# Science 75
# Math 99
# Name: 1, dtype: object
DF.iloc[1]
#Wenn Sie mehr als eine Zeile erhalten möchten, beschreiben Sie den Bereich, den Sie in Scheiben erhalten möchten
#Beim Abrufen von zwei oder mehr Zeilen wird es vom DataFrame-Typ abgerufen
DF.iloc[0:2]
Das obige DF.iloc [0: 2] hat den folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
1 | satou | 75 | 99 |
Der DataFrame-Typ * head () * kann verwendet werden, um nur den Anfang anzuzeigen, und * tail () * kann verwendet werden, um nur das Ende anzuzeigen.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Zeigen Sie ohne Argument bis zu den ersten 5 Zeilen an
#Wenn Sie die Anzahl der Zeilen im Argument angeben, wird von Anfang an nur die angegebene Anzahl von Zeilen angezeigt.
DF.head()
DF.head(1)
#Zeigen Sie ohne Argumente die letzten 5 Zeilen an
#Wenn Sie die Anzahl der Zeilen im Argument angeben, wird am Ende nur die angegebene Anzahl von Zeilen angezeigt
DF.tail()
DF.tail(1)
Sie können einen neuen DataFrame-Typ erstellen, indem Sie nur bestimmte Spalten des DataFrame-Typs verwenden (siehe unten).
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Erstellen Sie einen neuen DataFrame-Typ, indem Sie nur "Students" und "Math" vom DataFrame-Typ "DF" verwenden.
#Geben Sie eine Zeile in "Spalten" an. Wenn Sie jedoch eine nicht vorhandene Spalte angeben, werden alle Daten in dieser Spalte als "NaN" erstellt.
DF_new = DataFrame(DF, columns=['Students', 'Math'])
Das obige DF_new hat den folgenden DataFrame-Typ.
Students | Math | |
---|---|---|
0 | akiyama | 100 |
1 | satou | 99 |
Wenn Sie * drop () * vom Typ DataFrame verwenden, können Sie den DataFrame-Typ mit der angegebenen Spalte / Zeile löschen.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Geben Sie beim Löschen einer Zeile den Index der zu löschenden Zeile an (wenn sie einen Beschriftungsnamen hat, geben Sie den Beschriftungsnamen an).
#Da der Index bei "0" beginnt, löschen Sie in diesem Fall die zweite Zeile
DF_drop_axis0 = DF.drop(1)
#Geben Sie beim Löschen einer Zeile "1" für das Argument "Achse" an.
#Geben Sie außerdem den Index der zu löschenden Spalte an (wenn der Spaltenname angehängt ist, geben Sie den Spaltennamen an).
#Löschen Sie den Spaltennamen "Wissenschaft", da der Spaltenname angehängt ist.
DF_drop_axis1 = DF.drop("Science", axis=1)
Der obige DF_drop_axis0 ist vom folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
DF_drop_axis1 hat den folgenden DataFrame-Typ.
Students | Math | |
---|---|---|
0 | akiyama | 100 |
1 | satou | 99 |
Sie können dem DataFrame-Typ wie folgt eine neue Spalte hinzufügen:
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Spalte "Englisch" hinzugefügt. Geben Sie "NaN" als Anfangswert an.
DF['English'] = np.nan
Students | Science | Math | English | |
---|---|---|---|---|
0 | akiyama | 100 | 100 | NaN |
1 | satou | 75 | 99 | NaN |
Sie können auch Spalten mit dem Serientyp hinzufügen.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
# English = 0 100
# 1 30
# dtype: int64
English = pd.Series([100, 30], index=[0, 1])
#Daten werden dort eingefügt, wo der Index auf der Serienseite und der Index des DataFrame-Typs übereinstimmen.
#Wenn es keine Übereinstimmung gibt, ist es "NaN"
DF['English'] = English
Students | Science | Math | English | |
---|---|---|---|---|
0 | akiyama | 100 | 100 | 100 |
1 | satou | 75 | 99 | 30 |
Sie können die Daten beurteilen, die die Bedingungen erfüllen, und die Daten anzeigen, die die Bedingungen erfüllen.
data = [["akiyama", 100, 100],
["satou" , 75, 99]]
DF = pd.DataFrame(data, columns = ['Students', 'Science', 'Math'])
#Stellen Sie fest, ob mehr als 80 Daten für "Wissenschaft" und "Mathematik" vorhanden sind.
DF_80over = DF[["Science", "Math"]] > 80
#Zeige Linien mit "Science" über 80
Science_80over = DF[DF['Science'] > 80]
Der obige DF_80over hat den folgenden DataFrame-Typ.
Science | Math | |
---|---|---|
0 | True | True |
1 | False | True |
Science_80over hat den folgenden DataFrame-Typ.
Students | Science | Math | |
---|---|---|---|
0 | akiyama | 100 | 100 |
Recommended Posts