CSV
CSV ist eine Datei, in der Werte durch Kommas getrennt sind. Es wird häufig verwendet, da es bei der Datenanalyse sehr einfach zu handhaben ist.
Verwenden Sie die Funktion read_csv (), um eine CSV-Datei mit Pandas zu lesen.
read_csv("Dateipfad, in dem sich die CSV-Datei befindet", header=)
Als das Gesetz des Headers
Wenn die Header-Option weggelassen wird, ist die erste Zeile der gelesenen Datei der Spaltenname.
Wenn header = None angegeben ist, weist Pandas einen geeigneten Spaltennamen zu.
Wenn Sie eine Zeilennummer wie header = 1 angeben, werden die Daten in der zweiten Zeile der gelesenen Datei als Spaltenname verwendet. Das Lesen beginnt danach in der Zeile.
Da die Zeilennummer bei 0 beginnt, ist die Zeilennummer der ersten Datenzeile 0.
Lesen Sie beispielsweise ein Wein-Dataset, das keine Spaltennameninformationen aus dem Verzeichnis enthält. Da wir nicht wissen, was der numerische Wert so darstellt, wie er ist, fügen Sie einen Spaltennamen (Spalte) hinzu, der den Inhalt des Werts angibt.
import pandas as pd
df = pd.read_csv("./4050_data_cleansing_data/wine.csv", header=None)
#Fügen Sie eine Spalte hinzu, um zu sehen, was jede Zahl darstellt
df.columns = ["", "Alcohol", "Malic acid", "Ash", "Alcalinity of ash", "Magnesium","Total phenols", "Flavanoids", "Nonflavanoid phenols", "Proanthocyanins","Color intensity", "Hue", "OD280/OD315 of diluted wines", "Proline"]
df
Das ./ im Dateipfad gibt das aktuelle Verzeichnis an. Das aktuelle Verzeichnis ist das Arbeitsverzeichnis, in dem Python gerade ausgeführt wird.
Erstellen Sie eine CSV-Datendatei mit der CSV-Bibliothek, die standardmäßig in Python 3 enthalten ist.
Gibt die Daten der Stadt, des Jahres und der Saison der letzten 10 Olympischen Spiele als CSV-Datendatei aus.
import csv
#Verwenden Sie die with-Anweisung
# csv0.Schreibmodus mit der CSV-Datei als Variable CSV-Datei ("w") Öffnen
with open("./4050_data_cleansing_data/csv0.csv", "w") as csvfile:
#Als Argumente für die Writer-Methode werden die Variable csvfile und der Zeilenvorschubcode (\n)
writer = csv.writer(csvfile, lineterminator="\n")
#Fügen Sie eine Zeile mit writerow (Liste) hinzu.
writer.writerow(["city", "year", "season"])
writer.writerow(["Nagano", 1998, "winter"])
writer.writerow(["Sydney", 2000, "summer"])
writer.writerow(["Salt Lake City", 2002, "winter"])
writer.writerow(["Athens", 2004, "summer"])
writer.writerow(["Torino", 2006, "winter"])
writer.writerow(["Beijing", 2008, "summer"])
writer.writerow(["Vancouver", 2010, "winter"])
writer.writerow(["London", 2012, "summer"])
writer.writerow(["Sochi", 2014, "winter"])
writer.writerow(["Rio de Janeiro", 2016, "summer"])
#Ausgabe
# csv0.Lesemodus mit CSV-Datei als Variable CSV-Datei("r")Öffnen mit
with open("./4050_data_cleansing_data/csv0.csv", "r") as csvfile:
print(csvfile.read())
Bei der Ausführung wird eine CSV-Datendatei mit dem Namen csv0.csv erstellt und der Inhalt der Daten angezeigt. Um herauszufinden, wo die CSV-Datendatei erstellt wurde
import os #Machen
print(os.getcwd()) #Ausführen.
Ohne Verwendung der CSV-Bibliothek Sie können CSV-Daten auch mit Pandas erstellen. Es ist bequemer, Pandas zu verwenden, wenn Daten im PandasDataFrame-Format in CSV-Daten konvertiert werden.
Verwenden Sie die Funktion to_csv (), um eine CSV-Datei mit Pandas zu erstellen.
to_csv("Name der zu erstellenden CSV-Datei")
Als Beispiel für DataFrame werden wie im vorherigen Beispiel die Daten der Stadt, des Jahres und der Saison der letzten 10 Olympischen Spiele als CSV-Datendatei ausgegeben.
import pandas as pd
data = {"city": ["Nagano", "Sydney", "Salt Lake City", "Athens", "Torino", "Beijing", "Vancouver", "London", "Sochi", "Rio de Janeiro"],
"year": [1998, 2000, 2002, 2004, 2006, 2008, 2010, 2012, 2014, 2016],
"season": ["winter", "summer", "winter", "summer", "winter", "summer", "winter", "summer", "winter", "summer"]}
df = pd.DataFrame(data)
df.to_csv("4050_data_cleansing_data/csv1.csv")
#Dies tun csv1.Eine Datei namens csv wird bereinigt_Es wird im Datenverzeichnis erstellt.
Wenn die gelesenen Daten leer sind, wird dies als fehlender Wert NaN (Not a Number) erkannt. Entfernen fehlender Werte NaN zur Verbesserung der Datengenauigkeit
dropna()Verwenden Sie eine Funktion.
#Erstellen Sie zunächst zufällig eine Tabelle, wobei ein Teil der Tabelle absichtlich fehlt.
import numpy as np
from numpy import nan as NA
import pandas as pd
sample_data_frame = pd.DataFrame(np.random.rand(10, 4))
#Einige Daten gehen absichtlich verloren
sample_data_frame.iloc[1, 0] = NA
sample_data_frame.iloc[2, 2] = NA
sample_data_frame.iloc[5:, 3] = NA
sample_data_frame
Löschen der gesamten Zeile oder Spalte (Zeile mit NaN) mit Datenverlust Dies wird als listweises Löschen bezeichnet.
dropna()Verwenden einer Funktion
Entfernen Sie alle Zeilen, die mindestens ein NaN enthalten. Ebenfalls Wenn im Argument Achse = 1 angegeben ist, wird sogar eine Spalte mit NaN entfernt.
sample_data_frame.dropna()
Wenn die listwise-Methode alle fehlenden Zeilen entfernt und zu wenig Daten vorhanden sind Eine andere Möglichkeit besteht darin, nur die verfügbaren Daten zu verwenden. Lassen Sie Spalten mit wenigen Fehlern (z. B. Spalten 0 und 1). Das Löschen von Zeilen, die NaN enthalten, wird als paarweises Löschen bezeichnet.
sample_data_frame[[0, 1]].dropna()
Abgesehen vom Entfernen fehlender Werte, um die Genauigkeit der Daten zu verbessern Sie können fehlenden Werten auch alternative Daten zuweisen.
Ersetzen (Ersetzen) alternativer Daten für den fehlenden Wert NaN
fillna()Verwenden Sie eine Funktion.
Erstellen Sie zufällig eine Tabelle, wobei ein Teil der Tabelle absichtlich fehlt.
import numpy as np
from numpy import nan as NA
import pandas as pd
sample_data_frame = pd.DataFrame(np.random.rand(10, 4))
#Einige Daten gehen absichtlich verloren
sample_data_frame.iloc[1, 0] = NA
sample_data_frame.iloc[2, 2] = NA
sample_data_frame.iloc[5:, 3] = NA
# fillna()Bei Verwendung einer Funktion wird die als Argument angegebene Nummer dem NaN-Teil zugewiesen. Dieses Mal werde ich es mit 0 füllen.
sample_data_frame.fillna(0)
#Wenn Sie für die Methode ffill angeben, können Sie sie mit dem Wert der vorherigen Zeile füllen.
sample_data_frame.fillna(method="ffill")
Die Methode zum Ausfüllen der fehlenden Werte mit dem Durchschnittswert der Spalte (oder Zeile) wird als Durchschnittswertsubstitutionsmethode bezeichnet.
Der Durchschnittswert ist Mittelwert()Berechnen Sie mit einer Funktion.
import numpy as np
from numpy import nan as NA
import pandas as pd
sample_data_frame = pd.DataFrame(np.random.rand(10, 4))
#Einige Daten gehen absichtlich verloren
sample_data_frame.iloc[1, 0] = NA
sample_data_frame.iloc[2, 2] = NA
sample_data_frame.iloc[5:, 3] = NA
#Ersetzen Sie den NaN-Teil durch den Durchschnittswert der Säule mit fillna
sample_data_frame.fillna(sample_data_frame.mean())
Statistiken können in repräsentative Werte und Ausbreitungsgrade unterteilt werden. Ein repräsentativer Wert ist ein Wert, der die grundlegenden Eigenschaften von Daten darstellt. Zum Beispiel Durchschnittswert, Maximalwert, Minimalwert usw.
import pandas as pd
df = pd.read_csv("./4050_data_cleansing_data/wine.csv", header=None)
df.columns=["", "Alcohol", "Malic acid", "Ash", "Alcalinity of ash", "Magnesium","Total phenols", "Flavanoids", "Nonflavanoid phenols", "Proanthocyanins","Color intensity", "Hue", "OD280/OD315 of diluted wines", "Proline"]
# DataFrame `df`Schlüssel von"Alcohol"Berechnen Sie den Durchschnittswert von
df["Alcohol"].mean()
#Ausgabeergebnis
13.000617977528091
Wenn es ein Duplikat der Daten gibt, löschen Sie die Daten, um die Genauigkeit der Daten zu verbessern. Bereiten Sie einen DataFrame vor, der tatsächlich doppelte Daten enthält Versuchen Sie, doppelte Daten zu extrahieren oder zu löschen.
import pandas as pd
from pandas import DataFrame
dupli_data = DataFrame({"col1":[1, 1, 2, 3, 4, 4, 6, 6]
,"col2":["a", "b", "b", "b", "c", "c", "b", "b"]})
dupli_data
duplicated()Mit der Methode
Generiert Serientypdaten, die True für doppelte Zeilen zurückgeben und doppelte Daten extrahieren.
#Doppelte Daten extrahieren
dupli_data.duplicated()
#Ausgabeergebnis
0 False
1 False
2 False
3 False
4 False
5 True
6 False
7 True
dtype: bool
dtype steht für "Data Type" und gibt den Datentyp des Elements an.
drop_duplicates()Verwenden Sie die Methode, um doppelte Daten zu entfernen.
dupli_data.drop_duplicates()
Was ist Mapping? Für Daten mit einem gemeinsamen Schlüssel Hierbei wird auf den Wert verwiesen, der dem Schlüssel aus einer anderen Tabelle entspricht. Bereiten Sie tatsächlich einen DataFrame vor und versuchen Sie den Zuordnungsprozess.
import pandas as pd
from pandas import DataFrame
attri_data1 = {"ID": ["100", "101", "102", "103", "104", "106", "108", "110", "111", "113"]
,"city": ["Tokyo", "Osaka", "Kyoto", "Hokkaido", "Tokyo", "Tokyo", "Osaka", "Kyoto", "Hokkaido", "Tokyo"]
,"birth_year" :[1990, 1989, 1992, 1997, 1982, 1991, 1988, 1990, 1995, 1981]
,"name" :["Hiroshi", "Akiko", "Yuki", "Satoru", "Steeve", "Mituru", "Aoi", "Tarou", "Suguru", "Mitsuo"]}
attri_data_frame1 = DataFrame(attri_data1)
attri_data_frame1
Erstellen Sie Daten vom Typ Wörterbuch mit dem Gebietsnamen, der der Stadt entspricht.
city_map ={"Tokyo":"Kanto"
,"Hokkaido":"Hokkaido"
,"Osaka":"Kansai"
,"Kyoto":"Kansai"}
city_map
Verwenden Sie die am Anfang vorbereitete Stadtspalte von attri_data_frame1 als Schlüssel, beziehen Sie sich auf die entsprechenden Bereichsnamensdaten aus city_map und fügen Sie sie der neuen Spalte hinzu. Dies ist der Zuordnungsprozess. Wenn Sie mit Excel vertraut sind, stellen Sie sich einen Prozess wie die vlookup-Funktion vor. Führen Sie die Zuordnungsverarbeitung mit der Funktion map () durch und fügen Sie attri_data_frame1 eine Region als neue Spalte hinzu.
attri_data_frame1["region"] = attri_data_frame1["city"].map(city_map)
attri_data_frame1
Wenn Sie sich die Ausgabe ansehen, sehen Sie, dass der Regionsname zur Regionsspalte hinzugefügt wurde. Elemente, deren entsprechende Daten in city_map nicht vorhanden sind, werden mit NaN gefüllt.
Bei der Bin-Aufteilung werden numerische Daten grob in Kategorien unterteilt. Zum Beispiel ist es ein Prozess, das Alter in 0-9 Jahre, 10-19 Jahre, 20-29 Jahre zu unterteilen. Bereiten Sie im Voraus eine Liste mit geteilten Behältern vor
Pandas geschnitten()Mit einer Funktion verarbeiten.
import pandas as pd
from pandas import DataFrame
attri_data1 = {"ID": [100,101,102,103,104,106,108,110,111,113]
,"city": ["Tokyo", "Osaka", "Kyoto", "Hokkaido", "Tokyo", "Tokyo", "Osaka", "Kyoto", "Hokkaido", "Tokyo"]
,"birth_year" :[1990, 1989, 1992, 1997, 1982, 1991, 1988, 1990, 1995, 1981]
,"name" :["Hiroshi", "Akiko", "Yuki", "Satoru", "Steeve", "Mituru", "Aoi", "Tarou", "Suguru", "Mitsuo"]}
attri_data_frame1 = DataFrame(attri_data1)
Geben Sie die Granularität der Division in einer Liste an und führen Sie die Bin-Division durch. Hier konzentrieren wir uns auf geburtstag.
#Erstellen Sie eine Liste mit geteilter Granularität
birth_year_bins = [1980,1985,1990,1995,2000]
#Mach einen Bin Split
birth_year_cut_data = pd.cut(attri_data_frame1.birth_year,birth_year_bins)
birth_year_cut_data
#Ausgabeergebnis
0 (1985, 1990]
1 (1985, 1990]
2 (1990, 1995]
3 (1995, 2000]
4 (1980, 1985]
5 (1990, 1995]
6 (1985, 1990]
7 (1985, 1990]
8 (1990, 1995]
9 (1980, 1985]
Name: birth_year, dtype: category
Categories (4, interval[int64]): [(1980, 1985] < (1985, 1990] < (1990, 1995] < (1995, 2000]]
"()" Enthält diesen Wert nicht und "[]" bedeutet, dass dies der Fall ist. Zum Beispiel umfasst (1985, 1990] nicht 1985, sondern 1990.
Wenn Sie die Nummer jedes Fachs zählen möchten
value_counts()Verwenden Sie die Methode.
pd.value_counts(birth_year_cut_data)
#Ausgabeergebnis
(1985, 1990] 4
(1990, 1995] 3
(1980, 1985] 2
(1995, 2000] 1
Name: birth_year, dtype: int64
Sie können jedem Behälter auch einen Namen geben.
group_names = ["first1980", "second1980", "first1990", "second1990"]
birth_year_cut_data = pd.cut(attri_data_frame1.birth_year,birth_year_bins,labels = group_names)
pd.value_counts(birth_year_cut_data)
#Ausgabeergebnis
second1980 4
first1990 3
first1980 2
second1990 1
Name: birth_year, dtype: int64
Es ist auch möglich, die Anzahl der Teilungen im Voraus und die Teilung festzulegen. Sie können damit Behälter mit ungefähr derselben Größe erstellen. Geben Sie die Anzahl der Unterteilungen im zweiten Argument der Funktion cut () an.
pd.cut(attri_data_frame1.birth_year,2)
#Ausgabeergebnis
0 (1989.0, 1997.0]
1 (1980.984, 1989.0]
2 (1989.0, 1997.0]
3 (1989.0, 1997.0]
4 (1980.984, 1989.0]
5 (1989.0, 1997.0]
6 (1980.984, 1989.0]
7 (1989.0, 1997.0]
8 (1989.0, 1997.0]
9 (1980.984, 1989.0]
Name: birth_year, dtype: category
Categories (2, interval[float64]): [(1980.984, 1989.0] < (1989.0, 1997.0]]
Recommended Posts