Dieser Artikel stammt aus dem Furukawa Lab Advent_calendar Tag 18.
Dieser Artikel wurde von einem Studenten des Furukawa Lab im Rahmen seines Studiums verfasst. Der Inhalt kann mehrdeutig sein oder der Ausdruck kann leicht abweichen.
Als ich mit Pandas vorverarbeitete, fühlte ich mich unbehaglich, weil andere Elemente als numerische Werte in den Daten gemischt wurden, daher werde ich es als Artikel zusammenfassen. Außerdem verwendet der Code in diesem Artikel ein Jupiter-Notizbuch.
kaggles 2,2k + Scotch Whisky Reviews Dataset
Dies ist ein Datensatz, der von Gutachtern über Scotch Whisky ausgewertet wird. Die Anzahl der Daten beträgt 2247 und die Anzahl der Elemente beträgt 7.
#Bibliotheksimport
import pandas as pd
import numpy as np
#CSV-Datei lesen
data = pd.read_csv('scotch_review.csv')
#Anzeige von Daten
data.head()
Dieses Mal verwenden wir nur die Artikel'review.point'and'price '. Schauen wir uns den Datentyp jeder Spalte an
#Typbestätigung
data[['review.point','price']].dtypes
Es scheint, dass andere Elemente als numerische Werte in der Spalte "areview.point" gemischt sind. ** Mit dem folgenden Code können Sie feststellen, ob die entsprechende Spalte nicht numerische Elemente enthält. (* Str Typ Nummer gibt True zurück) **
#'price', 'review.point'Wenn die Spalte Elemente enthält, die nicht in einen numerischen Typ konvertiert werden können'False'Gib es zurück.
data[['review.point', 'price']].apply(lambda s:pd.to_numeric(s, errors='coerce')).notnull().all()
Von hier aus extrahieren wir Elemente mit anderen Typen als Zahlen aus der Spalte "Preis" und ersetzen sie. Erstens ist die Extraktion.
#Extraktion nicht numerischer Elemente
pic = data[['price']][data['price'].apply(lambda s:pd.to_numeric(s, errors='coerce')).isnull()]
pic
!
Hier werden die Daten von / set und / liter als fehlende Werte behandelt und die anderen in numerische Typen konvertiert.
# ','Löschen,'/'Ersetzen Sie das Element, das enthält
change_data = pic['price'].str.replace(',','').mask(pic['price'].str.contains('/'), np.nan)
change_data
Reflektieren Sie die Änderungen in den Originaldaten.
#Erstellen Sie eine Kopie der Originaldaten und ersetzen Sie das entsprechende Teil
data_c = data.copy()
data_c.loc[pic.index,'price'] = change_data
Konvertieren Sie abschließend die Zahl in der Spalte "Preis" in einen numerischen Typ und löschen Sie die Zeile mit dem fehlenden Wert.
data_c['price'] = pd.to_numeric(data_c['price'], errors = 'ignore')
df = data_c.dropna()
Dieses Mal habe ich andere Elemente als numerische Werte extrahiert und durch pandas.DataFrame ersetzt. Im nächsten Artikel werde ich diesen vorverarbeiteten Whiskey Reviews-Datensatz visualisieren.
Hier ist eine Beschreibung der Funktion, die ich in meinem Code verwendet habe.
#'price', 'review.point'Wenn die Spalte Elemente enthält, die nicht in einen numerischen Typ konvertiert werden können'False'Gib es zurück.
data[['review.point', 'price']].apply(lambda s:pd.to_numeric(s, errors='coerce')).notnull().all()
def Funktionsname(Streit):
Ausdruck zurückgeben
--DataFrame.apply (Funktion, Achse = 0)
# ','Löschen,'/'Ersetzen Sie das Element, das enthält
change_data = pic['price'].str.replace(',','').mask(pic['price'].str.contains('/'), np.nan)
change_data
--Series.str.replace ('String A', 'String B') --Convert'string A'inhaltig in jedem Element der Serie zu'string B ' --Series.str.contains ('string A')
Recommended Posts