Ein persönliches Memo, das ich von Zeit zu Zeit aktualisiere, wenn ich etwas über die "Vorverarbeitung" von Daten mit Pandas erfahre.
――Wenn Sie an Vorverarbeitung denken, denken Sie möglicherweise an KI / maschinelles Lernen. Der Zweck der Vorverarbeitung des Lernens besteht darin, dass ich in der Lage sein möchte, akkumulierte Daten nach meinen Wünschen zu verarbeiten und zu analysieren. Es kann als Vorverarbeitungsinformation für maschinelles Lernen unzureichend sein. ――Ich bin keine Person im KI-Bereich. Wenn Sie also nach Wissen in diesem Bereich suchen, ist es meiner Meinung nach besser, den Inhalt dieses Artikels nur als Referenz zu behalten. ――Weil es geschrieben werden soll, gibt es viele mehrdeutige Ausdrücke und es kann Informationen geben, die schwer zu verstehen sind. Wir planen, es von Zeit zu Zeit zu aktualisieren, aber wir würden uns freuen, wenn Sie auf falsche Informationen hinweisen könnten.
Bereinigen oder Verarbeiten der gesammelten Daten, um die gewünschte Arbeit auszuführen (maschinelles Lernen usw.). Es scheint, dass Menschen, die maschinelles Lernen betreiben, neben der Datenerfassung auch die meiste Zeit mit dieser Arbeit verbringen.
--Datenbereinigung
Mach Folgendes: Möglicherweise gibt es eine effizientere Bestellung und detailliertere Aufgaben.
Voranalyse --Überprüfen Sie die Datenmenge, den Status usw.
Reinigung
Bereiten Sie eine Python-Testumgebung zum Lernen vor.
--Unmittelbare Umwelt
Es wäre schön, Testdaten sowohl in Serie als auch in Dataframe schnell aufbereiten zu können.
Series
in Vorbereitung
Dataframe
in Vorbereitung
#Referenzen für Maximum, Minimum, Durchschnitt, Standardabweichung usw.
df.describe()
#Referenz des Datentyps jeder Spalte
df.info()
#Durchsuchen Sie die ersten Datenzeilen
df.head()
#Durchsuchen Sie die letzten Datenzeilen
df.tail()
#Anzahl der Dimensionen von Daten (wie viele Zeilen und Spalten)
df.shape
#Anzahl der Werte
df["column"].value_counts()
#Anzahl der Werte (wie oben)
pd.value_counts(df["column"])
#Liste der Spaltennamen ①
df.columns
#Liste der Spaltennamen ②
df.count()
#Anzahl fehlender Werte ("Anzahl der Zeilen-Die Anzahl der Daten"Bei Anfrage an)
#Sie können den fehlenden Status der gesamten Spalte auflisten.
df_s.shape[0] - df_s.count()
#Anzahl fehlender Werte(Spezifische Spalte)
df_s["Fehlerhafter Inhalt.1"].isnull().value_counts()
#Zeilen mit fehlenden Werten anzeigen(In einer bestimmten Spalte)
df_s.loc[df_s["Fehlerhafter Inhalt.1"].isnull()]
#Löschen Sie eine Zeile, wenn in df nur ein Wert fehlt
df.dropna(axis = 0, how = 'any', inplace=True)
#Legen Sie einen Schwellenwert fest und löschen Sie ihn (löschen Sie Zeilen mit 3 oder mehr fehlenden Spalten).
#Wenn es nicht ersetzt wird, wird es nicht in den Quelldaten wiedergegeben.
df.dropna(thresh=3,inplace=True)
fillna
df.loc[df["Stückpreis"].isna(),"Stückpreis"] = 0
#Wenn in der Berechnung Werte fehlen, lautet das Ergebnis Nan. Verwenden Sie die Option, um fehlende Werte zu ignorieren.
df.sum(skipna=False)
df.mean(skipna=False)
df_s.duplicated().value_counts()
df_s[df_s.duplicated() == True].count()
#Säuleneinheit
df_s[df_s.duplicated() == True ]["Teile"].count()
Überprüfen Sie, ob der Datentyp korrekt ist, und konvertieren Sie ihn gegebenenfalls in den entsprechenden Typ. Bei der Konvertierung in einen numerischen Typ müssen Sie sich an die Arbeit erinnern, z. B. das Setzen der Zeichenfolge auf einen numerischen Wert und das Setzen der Nulldaten auf 0 im Voraus. Verwenden Sie hauptsächlich die Astype-Methode.
#Datentypreferenz
df2.info()
#Datentypkonvertierung (durch Hinzufügen einer neuen Spalte realisiert)
df["Teilenummer 2"] = df["Produktnummer"].astype(object)
#Datentypkonvertierung(Ersetzen und konvertieren Sie in die ursprüngliche Spalte, wie sie ist)
df_s["test"] = df_s["test"].astype(object) # object(string)
df_s["test"] = df_s["test"].astype(str) # object(string)
df_s["test"] = df_s["test"].astype(float) # Float
df_s["test"] = df_s["test"].astype(int) # integer
#In numerischen Typ konvertieren und dabei (To Nan) -Werte verschiedener Typen zwangsweise entfernen
df_s["test"] = pd.to_numeric(df_s["test"] , errors="coerce")
#Extrahieren einer bestimmten Spalte (ändert die Originaldaten nicht)
df[["colB","colD"]]
#Extrahieren Sie mit regulären Ausdrücken
tanka_nan = df["Stückpreis"].str.extract("(^\D*)", expand=False)
tanka_nan.value_counts()
#「[Der Wert in der Stückpreisspalte ist"Massenprodukt"]Extrahiert durch "Zeilenextraktion" und "Spaltenextraktion der Einheitspreisspalte"
df.loc[df["Stückpreis"] == "Massenprodukt","Stückpreis"]
#Filtern Sie Zeilen aus der Liste und erstellen Sie einen neuen DF
df2 = df[df["Produktnummer"].isin(mylist)]
dftest["grade"] = dftest["Produktname"].apply(lambda x : x[0:2] )
dftest = pd.DataFrame({"prefecture":["hokkaidou","shizuoka","okinawa"],"city":["sapporo","shizuoka","naha"]})
dftest_map = {"hokkaidou":10,"shizuoka":20,"okinawa":30}
dftest["maptest"] = dftest.prefecture.map(dftest_map)
dftest
# Erstellen Sie die folgende Funktion.
# # Wenn der Argumentwert "begrenzt" enthält, wird die Zeichenfolge "begrenztes Produkt" zurückgegeben.
# # Wenn der Argumentwert "new" enthält, geben Sie die Zeichenfolge "new product" und zurück
# # Wenn der Wert des Arguments anders ist, wird die Zeichenfolge "na" zurückgegeben.
def newitem(x):
if "Begrenzt" in str(x):
return "Begrenztes Produkt"
elif "Neu" in str(x):
return "Neues Produkt"
else:
return "na"
# Erstellen Sie eine neue Spalte "Produktkategorie" und geben Sie das Ergebnis zurück, während Sie die Produktnamenspalte mit der erstellten Funktion auswerten.
df["Produktkategorie"] = df["Produktname"].apply(newitem)
#Spalte umbenennen(Änderung im Wörterbuchformat)
df = df.rename(columns={'Produktname':'Produktname'})
#Spalte umbenennen (allererste Spalte ändern)
df.rename(columns={df.columns[0]: "Produktname"})
df.loc[:,"Stückpreis"] = 0
df.loc[df["Stückpreis"] == "Liefern", "Stückpreis"] = 0
df["grade"] = df["Produktname"].str.extract(
"(^[A-Z]{2}|^[A-Z]{2}|^/d/d?//d+|^[0-9][0-9]?/[0-9]*)", expand=False)
Group verwendet das Groupby-Objekt
--Verwenden Sie df.groupby ()
.
df.groupby('items').get_group('item_1')
g1 = df.groupby('items')
print(g1.groups)
df.groupby('items').size()
#Zusammen aggregieren
df_s.groupby("Absackplatz").agg(np.sum)
#Aggregation mit einem Wörterbuch
df_s.groupby("Absackplatz").agg({"Gesamtproduktionsnummer":np.sum, "Menge":"first" })
train["year"]= train["datetime"].apply(lambda x : x.split("-")[0] )
Hauptsächlich unten gemacht. Schreiben.
in Vorbereitung
in Vorbereitung
Teilen Sie diskontinuierliche Werte mithilfe von Bins in kleinere Zahlen, um sie zu gruppieren. Wird auch als Bin Division bezeichnet. Bin scheint ein Regal zu bedeuten.
Wenn es beispielsweise eine Spalte gibt, die das Alter einer Person enthält, verwenden Sie diese, um nach Abschnitten nach Altersgruppen zu gruppieren, z. B. [Teenager, 20er, 30er ...].
Verwenden Sie cut
und qcut
.
Ein Bild zum Sortieren der Originaldaten (diesmal Altersdaten) in das erstellte "Regal". Es überrascht nicht, dass die Anzahl der Fächer geringer ist als die Quelldaten.
#Angenommen, es gibt solche Altersdaten.
ages = [random.randint(0, 100) for i in range(20)]
print(ages)
#[84, 73, 27, 85, 8, 17, 46, 16, 95, 62, 38, 47, 63, 44, 69, 26, 0, 40, 34, 79]
#Bereiten Sie Behälter vor, um diese Altersdaten zu gruppieren
bins = np.arange(0,90,10) #Seriennummer generieren
print(bin)
# >>> [ 0 10 20 30 40 50 60 70 80]
#Schnitt
cats = pd.cut(ages, bins)
print(cats)
# [NaN, (70.0, 80.0], (20.0, 30.0], NaN, (0.0, 10.0], ..., (20.0, 30.0], NaN, (30.0, 40.0], (30.0, 40.0], (70.0, 80.0]]
# Length: 20
# Categories (8, interval[int64]): [(0, 10] < (10, 20] < (20, 30] < (30, 40] < (40, 50] < (50, 60] < (60, 70] < (70, 80]]
Merkmalsmenge = eine Spalte, die direkt bei der Erstellung eines Vorhersagemodells für maschinelles Lernen angegeben wird.
Beim Erstellen eines Vorhersagemodells sind nicht alle Spalten in den gesammelten Daten für das Vorhersagemodell erforderlich. Es ist auch möglich, dass nicht genügend Zeilen vorhanden sind. Beim maschinellen Lernen ist es wichtig, diese Spalte auszuwählen oder eine neue Spalte hinzuzufügen, um die Merkmalsmenge zu erhöhen. Das Erhöhen der Merkmalsmengenspalte wird als Merkmalsmengenerstellung bezeichnet. Das Erstellen und Optimieren von Features wird als "Feature Engeneering" bezeichnet.
--Buch (Link zu Amazon)
[O'Reilly-Einführung in die Datenanalyse mit Python 2nd Edition-Datenverarbeitung mit NumPy und Pandas-Wes McKinney (Autor)](https://www.amazon.co.jp/Python%E3%81%AB%E3 % 82% 88% E3% 82% 8B% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90% E5% 85% A5% E9% 96 % 80-% E7% AC% AC2% E7% 89% 88-% E2% 80% 95NumPy% E3% 80% 81pandas% E3% 82% 92% E4% BD% BF% E3% 81% A3% E3% 81 % 9F% E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 87% A6% E7% 90% 86-Wes-McKinney / dp / 487311845X / ref = sr_1_1? Adgrpid = 58778961568 & dchild = 1 & gclid = Cj0KCQjwz4z3BRCgARIsAES_OVca29l_HJZEkHR-UKU58RZaO0JEp_5F8-CuX5NBsVuVFIxZOEhTzw4aAnNmEALw_wcB & hvadid = 338.517.691.080 & hvdev = c & hvlocphy = 1.009.444 & hvnetw = g & hvqmt = e & hvrand = 6973103540103090801 & hvtargid = KWD-332.404.598.096 & hydadcr = 27269_11561183 & jp-ad-ap = 0 & keywords = Python% E3% 81% AB% E3% 82% 88% E3% 82% 8B % E3% 83% 87% E3% 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90% E5% 85% A5% E9% 96% 80 & qid = 1592014932 & sr = 8-1 & tag = googhydr -zweiundzwanzig)
[Grundlegende Codierung für Python-Datenanalyse / maschinelles Lernen! Einführung in die Nutzung der Pandas-Bibliothek (beeindrucken Sie das Top-Zahnrad) - Daniel Y. Chen (Autor)](https://www.amazon.co.jp/Python%E3%83 % 87% E3% 83% BC% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E6% A9% 9F% E6% A2% B0% E5% AD% A6% E7% BF% 92% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AE% E5% 9F% BA% E6% 9C% AC% E3% 82% B3% E3% 83% BC% E3% 83% 87% E3% 82% A3% E3% 83% B3% E3% 82% B0-Pandas% E3% 83% A9% E3% 82% A4% E3% 83% 96% E3% 83% A9% E3% 83% AA% E6% B4% BB% E7% 94% A8% E5% 85% A5% E9% 96% 80-Impress-Gear / dp / 4295005657 / ref = pd_aw_sbs_14_5 / 356-4805604-8432224? _ Encoding = UTF8 & amp; pd_rd_i = 4295005657 & amp; pd_rd_r = 35939a14-656d-4771-bcbc-f72c522feffb & amp; pd_rd_w = QLYKo & amp;
Video (udemy)
[180.000 Menschen auf der Welt] Praktische Python-Datenwissenschaft
Recommended Posts