Persönliche Notizen zur Vorverarbeitung von Python Pandas-Daten

Über diesen Artikel

Ein persönliches Memo, das ich von Zeit zu Zeit aktualisiere, wenn ich etwas über die "Vorverarbeitung" von Daten mit Pandas erfahre.

Ein Hinweis zu diesem Artikel

――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.

Was ist Vorbehandlung?

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.

Wörter, die beim Lernen der Vorverarbeitung auftreten

--Datenbereinigung

Vorbehandlungsablauf

Mach Folgendes: Möglicherweise gibt es eine effizientere Bestellung und detailliertere Aufgaben.

  1. Voranalyse --Überprüfen Sie die Datenmenge, den Status usw.

  2. Reinigung

  1. Verarbeitung / Konvertierung / Konfigurationsänderung

Testumgebung vorbereiten

Testumgebung

Bereiten Sie eine Python-Testumgebung zum Lernen vor.

--Unmittelbare Umwelt

  1. Stellen Sie Python auf Ihren eigenen PC.
  2. Wenn Sie Python und Jupyter Notebook auf einem internen Server installieren und den Remotezugriff über einen Browser zulassen, können Sie Python auf einem PC ohne Python verwenden und ein kleines Skript an Teammitglieder verteilen, die Python nicht verstehen, mit einer einfachen Erklärung und verschiedenen Fortschritten. ..
  3. Informationen zum Einstellen der RAS-Berechtigung finden Sie unter hier.
  4. Wenn Sie Python und Jupyter Notebook von Grund auf neu installieren möchten, können Sie sie einfach als Set mit dem Paket Anaconda installieren.

Testdaten

Es wäre schön, Testdaten sowohl in Serie als auch in Dataframe schnell aufbereiten zu können.

Syntax / Methode für die Voranalyse

#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()

Syntax / Methode für die Behandlung fehlender Werte

Bestätigung fehlender Werte

#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()]

Fehlende Werte löschen


#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)

Füllen Sie die fehlenden Werte aus


fillna
df.loc[df["Stückpreis"].isna(),"Stückpreis"] = 0

Berechnen Sie, indem Sie fehlende Werte ignorieren

#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)

Syntax / Methode zur Vervielfältigung

Suchen Sie nach Duplikaten


df_s.duplicated().value_counts()
df_s[df_s.duplicated() == True].count()
#Säuleneinheit
df_s[df_s.duplicated() == True ]["Teile"].count()

Doppelte Entfernung

Syntax / Methode zur Überprüfung / Konvertierung des Datentyps

Ü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")

Syntax / Methode zum Extrahieren / Abrufen von Daten


#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)]

Syntax / Methode zum Hinzufügen von Spalten und Features

Fügen Sie Spalten mithilfe von Funktionen hinzu

dftest["grade"] = dftest["Produktname"].apply(lambda x : x[0:2] )

Fügen Sie Spalten mithilfe der Kartenfunktion hinzu


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

Fügen Sie Spalten mit der Apply-Funktion hinzu


# 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)

Spaltenname / Zeilenname (Index)


#Spalte umbenennen(Änderung im Wörterbuchformat)
df = df.rename(columns={'Produktname':'Produktname'})
#Spalte umbenennen (allererste Spalte ändern)
df.rename(columns={df.columns[0]: "Produktname"})

Spalte zuordnen


df.loc[:,"Stückpreis"] = 0

Extrahieren Sie eine bestimmte Spalte und weisen Sie sie zu

df.loc[df["Stückpreis"] == "Liefern", "Stückpreis"] = 0

Spalte mit regulärem Ausdruck hinzufügen

df["grade"] = df["Produktname"].str.extract(
"(^[A-Z]{2}|^[A-Z]{2}|^/d/d?//d+|^[0-9][0-9]?/[0-9]*)", expand=False)

Syntax / Methode zur Gruppierung

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" })

Hinzugefügt von Lambda-Funktion

train["year"]= train["datetime"].apply(lambda x : x.split("-")[0] )

Syntax / Methode für vertikales Halten conversion Konvertierung des Datenformats für horizontales Halten

Hauptsächlich unten gemacht. Schreiben.

Konvertieren Sie vertikales Halten in horizontales Halten

in Vorbereitung

Wandeln Sie horizontales Halten in vertikales Halten um

in Vorbereitung

Syntax / Methode zum Binning

Was ist Binning?

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]]

Was ist eine Feature-Menge?

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.

Referenz

--Buch (Link zu Amazon)

Ende

Recommended Posts

Persönliche Notizen zur Vorverarbeitung von Python Pandas-Daten
Python persönliche Notizen
Python Pandas Memo
Zusammenfassung der persönlichen Notizen von Pandas
fehlende Ganzzahlen Python persönliche Notizen
[Python] Hinweise zur Datenanalyse
Datenanalyse mit Python-Pandas
Hit Schatzdaten von Python Pandas
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
Pandas Notizen
Vorverarbeitungsvorlage für die Datenanalyse (Python)
(Persönliche Notizen) Python-Metaklassen und Metaprogrammierung
WEB-Scraping mit Python (für persönliche Notizen)
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Pandas Selbststudium Memo
Python-Scraping-Memo
Meine Pandas (Python)
Python-Lernnotizen
Python-Anfängernotizen
Python lernen note_006
Pandas Daten lesen
Python C ++ Notizen
Python lernen note_005
Python-Grammatiknotizen
Python Library Hinweis
Python für mich Q.A.
Python lernen note_001
Python-Lernnotizen
Installationshinweise zu Python3.4
[Python] Daten lesen
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Persönliche Notizen zum Dokumentieren von Python-Code in Sphinx
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Datenanalyse mit Python 2
Python-Datenvisualisierungsbibliotheken
Datenanalyse Übersicht Python
Hinweise zur Entwicklung von Python-Paketen
Bearbeiten Sie Excel-Dateien aus Python mit xlrd (persönliches Memo)
Python-Memorandum (persönliches Lesezeichen)
Datenbereinigung mit Python
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
Verwendungshinweise für Python Decorator
Python-IP-Adresse Paket Memo
Pandas auf python2.6 installieren
Zusammenfassung der beim Extrahieren von Daten verwendeten Pandas-Methoden [Python]
Notizen im Python Pickle-Format
Korrelation durch Datenvorverarbeitung
Datenvisualisierung mit Pandas
Erstes Python-Memo
Datenmanipulation mit Pandas!
Python-Datenanalysevorlage
Verarbeiten Sie CSV-Daten mit Python (Zählverarbeitung mit Pandas)
Daten mit Pandas mischen
Matlab => Python-Migrationsnotizen