Nettoyage des données 2 Nettoyage des données à l'aide de DataFrame

Aidemy 2020/9/21

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. La dernière fois, c'était mon premier message, mais je suis très heureux que de nombreuses personnes l'aient lu. Je vous remercie! Ceci est le deuxième article du nettoyage des données. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ À propos de CSV ・ Traitement des valeurs manquantes (NaN) -Traiter les données pour chaque clé du dictionnaire

1 CSV

Charger CSV avec Pandas

-CSV est un fichier de données souvent utilisé dans l'analyse des données. Tout d'abord, chargez-le à l'aide de Pandas. __ · pd.read_csv ("nom du fichier de données", en-tête = spécification de la colonne comme en-tête) __

import pandas as pd
# wine.Chargement de csv
df = pd.read_csv("./4050_data_cleansing_data/wine.csv", header=None)
#Définir le nom de la colonne
df.columns = [réduction]
#production
df

Création de CSV avec la bibliothèque CSV

-Créer un CSV en utilisant la "bibliothèque CSV" intégrée à Python. __ ・ avec open ("nom de fichier", "w") comme fichier csv: __, dedans writer=csv.writer(csvfile, lineterminator="\n") Create (méthode d'écriture qui prend csvfile et code de saut de ligne comme arguments) et l'utiliser Entrez les données avec __writer.writerow ([données]) __.

import csv
with open("nom de fichier","w") as csvfile:
  writer=csv.writer(csvfile, lineterminator="\n")
  writer.writerow(["version","year","gen"]) #La première ligne est le nom de la colonne
  writer.writerow(["Rouge, Vert",1996,1])
  writer.writerow(["Or et argent",1999,2])
  writer.writerow(["RS",2002,3])

#Lis
with open("nom de fichier","r") as csvfile:
  print(csvfile.read())
# version,year,gen
#Rouge, Vert,1996,1
#Or et argent,1999,2
# RS,2003,3

Création de CSV avec des pandas

・ C'est plus facile lors de la conversion de DataFrame en CSV __ · Données DataFrame .to_csv ("nom de fichier") __

data={"version":["Rouge, Vert","Or et argent","RS"],"year":[1996,1999,2002],"gen":[1,2,3]}
df=pd.DataFrame(data)
df.to_csv("nom de fichier")

2 Traitement des valeurs manquantes (NaN)

Supprimer les lignes et les colonnes contenant NaN

-Supprimer les lignes et les colonnes contenant NaN s'appelle __ "listwise delete" __. La suppression par liste se fait avec la fonction dropna (). Si aucun argument n'est spécifié, la ligne est supprimée et si axis = 1 est spécifié, la colonne est supprimée. __ · Données DataFrame .dropna () __

-Si le nombre de données est trop petit lors de l'utilisation de la suppression par liste, il est préférable de laisser la colonne avec quelques défauts et d'en supprimer la ligne contenant NaN. Cela s'appelle __ "suppression par paire" __. __ · Données DataFrame [[colonne à quitter]] .dropna () __

data={"version":["Rouge, Vert","Or et argent","RS"],"year":[1996,1999],"gen":[1]}
df=pd.DataFrame(data)
#La suppression par liste contient moins de données, donc la version,Supprimer les lignes contenant NaN, ne laissant que la colonne année
df[[0,1]].dropna()
#version year
#Rouge-vert 1996
#Or et argent 1999

Valeur manquante (1)

-Complément en remplaçant des données alternatives au lieu de les supprimer. Utilisez la fonction fillna (). Définissez "données alternatives" ou "method =" ffill "" (appliquez la valeur de la ligne précédente) à l'argument. __ · Données DataFrame .fillna () __

data={"version":["Rouge, Vert","Or et argent","RS"],"year":[1996,1999],"gen":[1]}
df=pd.DataFrame(data)
#Remplacez NaN par les données précédentes
df.fillna(method="ffill")
#version year gen
#Rouge-vert 1996 1
#Or et argent 1999 1
#RS  1999 1

Valeur manquante (2)

-En utilisant la fonction mean () comme argument de fillna (), les données alternatives peuvent être remplacées par "la valeur moyenne de la colonne". __ · Données DataFrame .fillna (Données DataFrame .mean ()) __

data={"version":["Rouge, Vert","Or et argent","RS"],"year":[1996,1999],"gen":[1]}
df=pd.DataFrame(data)
#Remplacez NaN par les données précédentes
df.fillna(method="ffill")
#version year gen
#Rouge-vert 1996 1
#Or et argent 1999 1
#RS  1997.5 1

3 Traitez les données pour chaque clé du dictionnaire

Calculer pour chaque clé

-La valeur moyenne et la valeur maximale de chaque clé d'un dictionnaire ou CSV (DataFrame) peuvent être calculées à l'aide de fonctions statistiques telles que mean () et max (). __ · Dictionnaire et df [clé]. Fonction statistique __

df = pd.read_csv("./4050_data_cleansing_data/wine.csv", header=None)
df.columns = ["","Alcohol",(réduction)]
# "Alcohol"Calcul de la valeur moyenne
df["Alcohol"].mean()
# 13.000617977528091

Extraction et suppression de données en double

-Utilisez la méthode duplicated () pour extraire exactement les mêmes données. Utilisez la méthode drop_duplicates () pour supprimer. __ · Données en double .dupliquées () __ __ · Dupliquer les données .drop_duplicates () __

data={"version":["Rouge, Vert","Or et argent","RS","Rouge, Vert"],"year":[1996,1999,2002,1996],"gen":[1,2,3,1]}
df=pd.DataFrame(data)
#Supprimer les données en double
df.drop_duplicates()
# version,year,gen
#Rouge, Vert,1996,1
#Or et argent,1999,2
# RS,2003,3

Créer une nouvelle clé qui correspond à une clé existante

-Créer une nouvelle clé correspondant à une clé existante s'appelle __ "mapping" __. __ · DataFrame data [nouvelle clé] = DataFrame data [clé source de référence] .map (table de correspondance de type dictionnaire) __

data={"version":["Rouge, Vert","Or et argent","RS"],"year":[1996,1999,2002],"gen":[1,2,3]}
df=pd.DataFrame(data)
#Mapper après avoir créé une table de correspondance de type dictionnaire
version_map={"Rouge, Vert":"Kanto","Or et argent":"Johto","RS":"Hoenn"}
df["region"] = df["version"].map(version_map)
df
# version,year,gen,region
#Rouge, Vert,1996,1,Kanto
#Or et argent,1999,2,Johto
# RS,2003,3,Hoenn

Définissez la plage de données numériques et catégorisez

-Définissez une plage comme "0-5" et "6-10", et divisez ou agrégez les données pour chaque plage. Un tel traitement est appelé "division de casier". La division des bacs se fait avec pd.cut (). __ · pd.cut (Data [Clé pour spécifier la plage], [Liste de la plage], étiquettes = [Liste des noms pour chaque plage]) __ # Bin split ・ Il existe également une méthode pour spécifier le nombre de divisions et diviser automatiquement la plage. __ · pd.cut (données [clé pour spécifier la plage], nombre de divisions) __ __ · pd.value_counts (données divisées par bin) __ # Agrégation du nombre de données pour chaque plage divisée

data={"version":["Rouge, Vert","Or et argent","RS","DP"],"year":[1996,1999,2002,2006],"gen":[1,2,3,4]}
df=pd.DataFrame(data)
#Spécifiez la plage par année et créez d'abord la liste de plages.
range = [1996,2000,2007]
range_name = ["1996-2000","2000-2007"]
cut_df = pd.cut(df["year"], range, labels=range_name)
pd.value_counts(cut_df)
#1996-2000  2
#2000-2007  2

Résumé

-Un fichier de données appelé CSV est souvent utilisé pour l'analyse des données. CSV est créé à l'aide de la bibliothèque Python standard ou de Pandas. -Les valeurs manquantes sont traitées en les supprimant avec dropna () ou en les complétant avec fillna (). -Dans le dictionnaire et DataFlame, vous pouvez calculer la valeur en vous référant à la clé, supprimer les données en double (drop_duplicates), créer une nouvelle clé (map), et diviser en spécifiant la plage (pd.cut). ..

c'est tout. Merci d'avoir lu jusqu'ici.

Recommended Posts

Nettoyage des données 2 Nettoyage des données à l'aide de DataFrame
Application de Python: Nettoyage des données Partie 2: Nettoyage des données à l'aide de DataFrame
Analyse des données à l'aide de xarray
Nettoyage des données à l'aide de Python
Sélectionnez des fonctionnalités avec des données textuelles
Méthode de visualisation de données utilisant matplotlib (1)
Méthode de visualisation de données utilisant matplotlib (2)
Analyse de données à l'aide de pandas python
[Python] Extraction / combinaison de données aléatoires à partir de DataFrame en utilisant random et pandas
Obtenir des données Salesforce à l'aide de l'API REST
Acquisition de données à l'aide de l'API googlemap de python
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
Analyser les données au format CSV à l'aide de SQL
Obtenez des données Amazon à l'aide de Keep API # 1 Obtenez des données
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Mémo d'acquisition de données à l'aide de l'API Backlog
Fractionnement des données de formation étiquetées sur le nettoyage des pandas
Recommandation d'analyse des données à l'aide de MessagePack
Obtenez des données de Twitter avec Tweepy
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Analyser les données à l'aide du texte Flash 100x de RegEx
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
[Python] Divers traitements de données utilisant le tableau Numpy
Création d'une application d'analyse de données à l'aide de Streamlit
Créez rapidement des données de classification de documents à l'aide de NLTK
Créer un bloc de données à partir d'Excel à l'aide de pandas
Collectez des données à l'aide de scrapy et remplissez mongoDB
Créer une feuille de calcul Google à l'aide de l'API Python / Google Data
Collecte de données FX à l'aide de l'API REST OANDA
SELECT des données à l'aide de la bibliothèque cliente avec BigQuery
Connaissance de l'utilisation de l'API de données Aurora Severless