Je vais faire quelque chose comme ça. Cette fois, nous allons faire "3, pré-traitement des données". [Principes de base de l'analyse des données] 1, collecte de données (grattage) 2, stockage de données 3, prétraitement des données 4, visualisation et considération des données 5, Conclusions et mesures pour les données
À propos, la dernière fois était "1, collecte de données (grattage)". Article précédent Lien pour les personnes qui souhaitent voir dans la vidéo
Le prétraitement est effectué à l'aide des données collectées par le grattage ci-dessus. Si vous ne l'avez pas lu, il est difficile de comprendre le flux, j'espère donc que vous pourrez lire l'article précédent en gros.
Même si vous recherchez "pré-traitement des données python", toutes sont les mêmes données Titanic et autres données scikit-learn. C'était ennuyeux, alors je voulais faire un prétraitement des données que personne ne faisait avec des données que personne ne faisait.
Eh bien, j'ai moi-même les données, donc le contenu est facile.
python
import pandas as pd
df = pd.read_csv("biccamera_all_laptop.csv")
df.head()
Normalement, je ne sais pas jusqu'à ce que je regarde les données, mais Wai traite à l'avance que le nombre de valeurs nulles est zéro.
python
#Obtenez le nombre de lignes
print(len(df))
#Vérifiez le nom de la colonne
print(df.columns)
#Vérifiez le nombre de valeurs nulles
print(df.isnull().sum())
Je connais aussi info ().
Cependant, en regardant les numéros uniques, les titres ne se chevauchent pas un peu.
Il y a 30 fabricants, et le nombre de prix et de points est différent.
J'ai regardé le point à l'avance et c'était "point (10%)", alors
Je pensais que c'était 10% du prix, mais je me demande si c'est différent
J'ai pensé.
python
#Vérifier les informations de la trame de données
print(df.info())
#Compter le nombre d'uniques par colonne
print(df.nunique())
Eh bien, est-ce que c'est comme ça?
Je ne dis pas grand chose (rires)
python
#Date de livraison
print(df.terms.value_counts())
#Information sur les stocks
print(df.stock.value_counts())
#Nom de fabrication
print(df.maker.value_counts())
python
for t in df.title:
print(t)
print(len(t))
print("*" * 100)
Une fonction qui rend les caractères alphanumériques Katakana demi-largeur pleine largeur et pleine largeur demi-largeur.
Je l'utilise souvent personnellement.
python
import re
import jctconv
def han2zen2han(string):
"""
Faire des Katakana demi-largeur pleine largeur,
Rendre les caractères alphanumériques pleine largeur en demi-largeur
: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
Obtenez tous [] une fois avec l'expression régulière r "\ [. +? ]".
Certains modèles ont plusieurs [] dans le titre.
Alors, prenez la taille de l'écran du PC portable avec une expression régulière.
Certains [] ont une taille, d'autres pas.
python
#Essayez de l'obtenir avec Series
df.title.apply(get_spec_list)
#Sortez-en un et vérifiez à l'intérieur
df.title.apply(get_spec_list)[0]
La fonction est ci-dessous.
python
def get_spec_list(title):
"""
spec_list =À partir du titre du produit[]Extrait avec le contenu
inch_list =Extraire le texte en pouces de l'écran du PC du titre du produit
l = spec_Entrez à nouveau les spécifications PC extraites de la liste dans la liste
: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)(pouce|Moule)", 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))
Pour le moment, essayez ce qui suit.
python
#Extraire la liste qui est à la base des spécifications PC
df["spec_list"] = df.title.apply(get_spec_list)
#Obtenir les données du processeur
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())]))
#Acquisition de données de mémoire(int)
df["memory"] = df.spec_list.apply(get_memory)
#Acquisition de données HDD(int)
df["hdd"] = df.spec_list.apply(get_hdd)
#Acquisition de données SSD(int)
df["ssd"] = df.spec_list.apply(get_ssd)
#Acquisition de données eMMC(int)
df["emmc"] = df.spec_list.apply(get_emmc)
#Acquisition de données de type pouces(float)
df["inch"] = df.spec_list.apply(get_inch)
#Acquisition de données de type pouces(int)
df["int_inch"] = df.inch.astype("int")
#Nom du fabricant acquis(str)
df["new_maker"] = df.maker.apply(get_maker)
#Obtenez le prix du PC(int)
df["new_price"] = df.price.str.replace(r"\D", "").astype("int")
#Obtenez des points lors de l'achat d'un PC(int)
df["new_point"] = df.point.str.replace(r"(point|\n).*", "").str.replace(",", "").astype("int")
#Obtenir la classification PC(int)
df["new_ratings"] = df.ratings.str.replace(r"\D", "").astype("int")
#Obtenez le nombre de caractères dans le titre du PC(int)
df["string_len"] = df.title.str.len()
#Obtenez le nombre de mots dans le titre du PC(int)
df["words_len"] = df.title.str.split().str.len()
Le résultat final sera comme ça.
Je l'ai mis en vidéo, donc si vous voulez voir le déroulement du processus, veuillez le regarder sur youtube.
Si vous voulez voir le code en cours d'exécution, allez dans "traitement des données 02" dans le lien ci-dessus. L'explication est assez longue, une avance rapide est donc recommandée.
Recommended Posts