Ich bin neu in Python. In Bezug auf Datenrahmenoperationen in Pandas gab es meines Erachtens keinen Artikel, in dem die Punkte und Zwecke der Vorverarbeitung erläutert wurden, obwohl es nur zahlreiche Artikel zur Erklärung der Operation gibt. Ich habe beschlossen, es als Lernnotiz zu erstellen.
--Wenn Sie einen Datenrahmen mithilfe der Pandas-Bibliothek lesen, können Sie sowohl den Zweck der Vorverarbeitung als auch die spezifische Vorgehensweise für die ersten Schritte verstehen. ―― Insbesondere können Sie die Verarbeitung nach dem Lesen der CSV-Datei problemlos durchführen.
――Der Code in diesem Dokument wurde geschrieben, nachdem Folgendes geschrieben wurde. Bitte ersetzen Sie df gegebenenfalls durch Ihren Datenrahmen. Stellen Sie sich die Passagierdaten der Titanic vor, die häufig im Einführungsinhalt von Statistiken verwendet werden, aber die Daten, die herauskommen, sind die Fiktion für die Erstellung dieses Artikels.
import pandas as pd
df = pd.read_csv("hogehoge/test.csv", usecols = ['PassengerId','Sex','Age'], header = 1)
--Überprüfen Sie den Inhalt der Daten visuell mit der Head-Methode und der Tail-Methode --Überprüfen Sie die Zeilen- und Spaltennamen mit der Spaltenmethode und der Indexmethode. --Zweck: Überprüfen Sie, ob die falsche Datei gelesen wurde und ob die Daten wie erwartet gelesen wurden.
#führen/Zählen Sie die letzten beiden Zeilen auf. Geben Sie die Anzahl der Zeilen an, die Sie einchecken möchten. 2(Wenn nicht angegeben, wird 6 angegeben)
print(df.head(2))
print(df.tail(2))
print("Spaltenname:",df.columns)
print("Zeilenname(index):"df.index)
"""
Angezeigt als ↓:
# head
PassengerId Sex Age
0 1 female 23.0
1 2 male 48.0
# tail
PassengerId Sex Age
998 999 female 41.0
999 1000 male 15.0
Spaltenname: Index(['PassengerId', 'Sex', 'Age'], dtype='object')
Zeilenname: RangeIndex(start=0, stop=1000, step=1)
"""
--Verwenden Sie das Attribut dtypes --Attribute-> Hängen Sie `` `.hoge``` wie eine Methode nach dem Datenrahmen an --Zweck: Abhängig von der verwendeten Bibliothek kann die Berechnung mit gemischten Datentypen einen Fehler verursachen, um ihn später zu entfernen (später beschrieben).
print(df.dtypes)
"""
Es wird wie folgt angezeigt
PassengerId int64
Sex object
Age float64
"""
――Aus diesem Ergebnis können Sie meines Erachtens die folgenden Probleme erstellen, zum Beispiel: ―― 1) Geschlecht wird als Zeichenkette wie männlich oder weiblich gespeichert. Ist es nicht besser, einen Dummy-Wert wie 0/1 hinzuzufügen, der für die Berechnung verwendet wird? ―― 2) Das Alter ist float (Gleitkomma-Typ), während PassengerId int (Integer-Typ) ist. Beide werden für die Berechnung verwendet, und es ist besser, sie mit beiden zu vereinheitlichen.
--Verwenden Sie eine Kombination aus isnull-Methode und einer beliebigen Methode und schließen Sie sie aus ―― Indem Sie diese kombinieren, können Sie "eine Spalte erkennen, die mindestens ein NaN enthält".
print(df.isnull().any())
"""
Das Ergebnis wird wie folgt angezeigt
PassengerId False
Sex False
Age True
dtype: bool
"""
――Der Vorschlag von hier lautet: "NaN ist in der Spalte Alter vorhanden, daher scheint es möglich zu sein, es zu entfernen."
--Überprüfen wir die grundlegenden Statistiken mit der Beschreibungsmethode
print(df.describe())
"""
PassengerId Age
count 1000.000000 884.000000
mean 446.000000 29.699118
std 257.353842 14.526497
min 1.000000 3.100000
25% 215.500000 20.125000
50% 430.000000 27.000000
75% 703.500000 39.000000
max 1000.000000 80.000000
"""
--Vorschläge erhalten:
――In diesem Fall beispielsweise "Setzen wir NaN des Alters auf 0. Wenn wir den Durchschnittswert des Alters in der Zukunft berechnen, analysieren wir andere Werte als 0" und konvertieren Sie NaN in 0. --In loc extrahieren Sie "alle Altersspalten in der Zeile, in der der Wert der Altersspalte NaN ist" (obwohl dies auf Japanisch kompliziert ist) und ersetzen Sie 0.
#Führen Sie die Konvertierung für die Spalte durch, in der das Vorhandensein von NaN im vorherigen Kapitel bestätigt wurde
df.loc[df['Age'].isnull(), 'Age'] = 0
#Überprüfen Sie, ob der Vorgang korrekt durchgeführt wurde
print(df.isnull().any())
"""
Es wird wie folgt angezeigt. Vergleiche mit dem vorherigen Kapitel c.
PassengerId False
Sex False
Age False
dtype: bool
"""
#Änderung des PassengerId-Typs
df.PassengerId = df.PassengerId.astype('float64')
#Sex Dummy Wertzuweisung(0 für männlich und 1 für weiblich) &float64
df.Sex[df.Sex=='male'] = 0
df.Sex[df.Sex=='female'] = 1
df.Sex = df.Sex.astype('float64')
#Überprüfen Sie, ob der Vorgang korrekt durchgeführt wurde
print(df.dtypes)
"""
Es sollte so aussehen:
PassengerId float64
Sex float64
Age float64
"""
Recommended Posts