Je suis nouveau sur Python. En ce qui concerne les opérations sur les trames de données dans Pandas, bien qu'il existe de nombreux articles sur l'explication des opérations uniquement, j'ai senti qu'il n'y avait pas d'article expliquant les points et les objectifs du prétraitement. J'ai décidé de le créer comme mémo d'apprentissage.
--Python débutant ∋ I
――Le code de cet article est écrit après avoir écrit ce qui suit. Veuillez remplacer df par votre trame de données, le cas échéant. ―― Imaginez les données des passagers du Titanic, qui sont souvent utilisées dans le contenu d'introduction des statistiques, mais les données qui en sortent sont la fiction pour créer cet article.
import pandas as pd
df = pd.read_csv("hogehoge/test.csv", usecols = ['PassengerId','Sex','Age'], header = 1)
#conduire/Énumérez les deux dernières lignes. Spécifiez le nombre de lignes que vous souhaitez archiver 2(Si omis, 6 est spécifié)
print(df.head(2))
print(df.tail(2))
print("Nom de colonne:",df.columns)
print("Nom de la ligne(index):"df.index)
"""
S'affiche comme ↓:
# head
PassengerId Sex Age
0 1 female 23.0
1 2 male 48.0
# tail
PassengerId Sex Age
998 999 female 41.0
999 1000 male 15.0
Nom de la colonne: Index(['PassengerId', 'Sex', 'Age'], dtype='object')
Nom de la ligne: RangeIndex(start=0, stop=1000, step=1)
"""
--Utilisez l'attribut dtypes --Attribute-> Joindre `` .hoge``` après le bloc de données comme une méthode --Objet: selon la bibliothèque utilisée, le calcul avec des types de données mixtes peut provoquer une erreur, donc supprimez-le plus tard (décrit plus loin).
print(df.dtypes)
"""
Il sera affiché comme ci-dessous
PassengerId int64
Sex object
Age float64
"""
À partir de ce résultat, je pense que vous pouvez créer les problèmes suivants, par exemple: ―― 1) Le sexe est stocké sous forme de chaîne de caractères, par exemple homme ou femme. N'est-il pas préférable d'ajouter une valeur fictive telle que 0/1 à utiliser dans le calcul? ―― 2) Age est float (type à virgule flottante), tandis que PassengerId est int (type entier). Les deux sont utilisés pour le calcul, et il serait préférable de les unifier à l'un ou l'autre.
--Utilisez une combinaison de méthode isnull et de toute méthode à exclure ―― En les combinant, vous pouvez détecter "une colonne contenant au moins un NaN".
print(df.isnull().any())
"""
Le résultat sera affiché comme ci-dessous
PassengerId False
Sex False
Age True
dtype: bool
"""
«La suggestion à partir d'ici est que" NaN existe dans la colonne Age, il semble donc possible de le supprimer. "
print(df.describe())
"""
PassengerId Age
count 1000.000000 884.000000
mean 446.000000 29.699118
std 257.353842 14.526497
min 1.000000 3.100000
25% 215.500000 20.125000
50% 430.000000 27.000000
75% 703.500000 39.000000
max 1000.000000 80.000000
"""
--Suggestions obtenues: --Bien que l'âge minimum soit de 3,1, il semble que l'âge soit enregistré sous la forme d'un entier (bien qu'il s'agisse d'un type à virgule flottante) comme confirmé par head / tail. N'est-ce pas 3.1 une erreur de 31 acquéreurs de données? Une confirmation est requise. ――Faites attention à lire les statistiques
――Dans ce cas, par exemple, "Définissons NaN de l'âge à 0. Lors du calcul de la valeur moyenne de l'âge dans le futur, analysons des valeurs autres que 0" et convertissons NaN en 0. --Dans loc, extrayez "toutes les colonnes Age de la ligne où la valeur de la colonne Age est NaN" (bien que le japonais soit compliqué) et remplacez 0
#Effectuez une conversion sur la colonne où la présence de NaN a été confirmée dans le chapitre précédent.
df.loc[df['Age'].isnull(), 'Age'] = 0
#Vérifiez si le processus s'est déroulé correctement
print(df.isnull().any())
"""
Il sera affiché comme suit. Comparer avec le chapitre précédent c.
PassengerId False
Sex False
Age False
dtype: bool
"""
#Changement de type PassengerId
df.PassengerId = df.PassengerId.astype('float64')
#Attribution de valeur factice de sexe(0 pour homme et 1 pour femme) &float64
df.Sex[df.Sex=='male'] = 0
df.Sex[df.Sex=='female'] = 1
df.Sex = df.Sex.astype('float64')
#Vérifiez si le processus s'est déroulé correctement
print(df.dtypes)
"""
Ça devrait ressembler à ça:
PassengerId float64
Sex float64
Age float64
"""
Recommended Posts