Ich werde so etwas tun. Dieses Mal werden wir "3, Datenvorverarbeitung" durchführen. [Grundlagen der Datenanalyse] 1, Datenerfassung (Scraping) 2, Datenspeicherung 3, Datenvorverarbeitung 4, Datenvisualisierung und -betrachtung 5, Schlussfolgerungen und Maßnahmen für Daten
Das letzte Mal war übrigens "1, Datenerfassung (Scraping)". Vorheriger Artikel Link für Personen, die das Video sehen möchten
Die Vorverarbeitung wird unter Verwendung der Daten durchgeführt, die durch das obige Scraping gesammelt wurden. Wenn Sie es nicht gelesen haben, ist es schwierig, den Ablauf zu verstehen. Ich hoffe, Sie können den vorherigen Artikel grob lesen.
Selbst wenn Sie nach "Python-Datenvorverarbeitung" suchen, handelt es sich bei allen um dieselben Titanic- und andere Scikit-Lerndaten. Es war langweilig, also wollte ich eine Datenvorverarbeitung durchführen, die niemand mit Daten machte, die niemand machte.
Nun, ich habe die Daten selbst erhalten, daher ist der Inhalt einfach.
python
import pandas as pd
df = pd.read_csv("biccamera_all_laptop.csv")
df.head()
Normalerweise weiß ich es erst, wenn ich mir die Daten anschaue, aber Wai verarbeitet im Voraus, dass die Anzahl der Nullen Null ist.
python
#Holen Sie sich die Anzahl der Zeilen
print(len(df))
#Überprüfen Sie den Spaltennamen
print(df.columns)
#Überprüfen Sie die Anzahl der Nullen
print(df.isnull().sum())
Ich kenne auch info ().
Bei Betrachtung der eindeutigen Zahlen überschneiden sich die Titel jedoch nicht geringfügig.
Es gibt 30 Hersteller und die Anzahl der Preise und Punkte ist unterschiedlich.
Ich habe den Punkt im Voraus gesehen und es war "Punkt (10%)", also
Ich dachte, es wären 10% des Preises, aber ich frage mich, ob es anders ist
Ich dachte.
python
#Überprüfen Sie die Datenrahmeninformationen
print(df.info())
#Zählen Sie die Anzahl der Unikate pro Spalte
print(df.nunique())
Nun, ist es so?
Ich sage nicht viel (lacht)
python
#Lieferdatum
print(df.terms.value_counts())
#Lagerinformationen
print(df.stock.value_counts())
#Herstellername
print(df.maker.value_counts())
python
for t in df.title:
print(t)
print(len(t))
print("*" * 100)
Eine Funktion, mit der Katakana in halber Breite und alphanumerische Zeichen in voller Breite halbiert werden.
Ich benutze es oft persönlich.
python
import re
import jctconv
def han2zen2han(string):
"""
Machen Sie Katakana in halber Breite in voller Breite,
Machen Sie alphanumerische Zeichen in voller Breite zur halben Breite
:param string: string text
:return: string text
"""
string = jctconv.h2z(string, kana=True, digit=False, ascii=False)
string = jctconv.z2h(string, kana=False, digit=True, ascii=True)
return string
Holen Sie sich alle [] einmal mit dem regulären Ausdruck r "\ [. +? ]".
Einige Muster haben mehrere [] im Titel.
Nehmen Sie also die Bildschirmgröße des Notebooks mit einem regulären Ausdruck.
Einige [] haben eine Größe, andere nicht.
python
#Versuchen Sie es mit Serie zu bekommen
df.title.apply(get_spec_list)
#Nehmen Sie eine heraus und überprüfen Sie sie
df.title.apply(get_spec_list)[0]
Die Funktion ist unten.
python
def get_spec_list(title):
"""
spec_list =Aus dem Produkttitel[]Mit dem Inhalt extrahieren
inch_list =Extrahieren Sie den PC-Bildschirm-Zoll-Text aus dem Produkttitel
l = spec_Geben Sie die aus der Liste extrahierten PC-Spezifikationen erneut in die Liste ein
:param title: string text
:return: list
"""
l = []
t = han2zen2han(title)
spec_list = re.findall(r"\[.+?\]", t)
inch_list = re.findall(r"(\d\d\.\d|\d\d|\d\..|\d)(Zoll|Schimmel)", t)
inch = "".join(inch_list[0]) if inch_list else ""
for spec in spec_list:
specs = spec.replace("[", "").replace("]", "").replace(" ", "").replace("・", "/").replace(":", "").split("/")
for s in specs:
l.append(s)
if inch:
l.append(inch)
return list(set(l))
Bitte versuchen Sie vorerst Folgendes.
python
#Extrahieren Sie die Liste, die den PC-Spezifikationen zugrunde liegt
df["spec_list"] = df.title.apply(get_spec_list)
#CPU-Daten abrufen
df["intel_cpu"] = df.spec_list.apply(get_intelcpu)
df["amd_cpu"] = df.spec_list.apply(lambda x: "".join([i for i in x if re.search(r"amd", i.lower())]))
#Speicherdatenerfassung(int)
df["memory"] = df.spec_list.apply(get_memory)
#HDD-Datenerfassung(int)
df["hdd"] = df.spec_list.apply(get_hdd)
#SSD-Datenerfassung(int)
df["ssd"] = df.spec_list.apply(get_ssd)
#eMMC-Datenerfassung(int)
df["emmc"] = df.spec_list.apply(get_emmc)
#Typ Datenerfassung(float)
df["inch"] = df.spec_list.apply(get_inch)
#Typ Datenerfassung(int)
df["int_inch"] = df.inch.astype("int")
#Erworbener Herstellername(str)
df["new_maker"] = df.maker.apply(get_maker)
#Holen Sie sich den PC-Preis(int)
df["new_price"] = df.price.str.replace(r"\D", "").astype("int")
#Holen Sie sich Punkte beim Kauf eines PCs(int)
df["new_point"] = df.point.str.replace(r"(Punkt|\n).*", "").str.replace(",", "").astype("int")
#PC-Bewertung erhalten(int)
df["new_ratings"] = df.ratings.str.replace(r"\D", "").astype("int")
#Holen Sie sich die Anzahl der Zeichen im PC-Titel(int)
df["string_len"] = df.title.str.len()
#Holen Sie sich die Anzahl der Wörter im PC-Titel(int)
df["words_len"] = df.title.str.split().str.len()
Das Endergebnis wird so sein.
Ich habe es als Video eingefügt. Wenn Sie also den Prozessablauf sehen möchten, schauen Sie es sich bitte auf Youtube an.
Wenn Sie möchten, dass der Code ausgeführt wird, gehen Sie im obigen Link zu "Datenverarbeitung 02". Die Erklärung ist ziemlich lang, daher wird ein schneller Vorlauf empfohlen.
Recommended Posts