Dans l'analyse de données comme l'apprentissage automatique, le prétraitement des données est indispensable, et surtout en pratique, toutes les données sont inattendues. Cependant, python a le module le plus puissant appelé pandas, et il n'y a presque rien qui ne puisse être fait dans le traitement des données des données structurées. Parmi les pandas, DataFrame qui gère les données de table est utilisé extrêmement fréquemment, et DataFrame sera expliqué ici. Le code réel est répertorié sur github, veuillez donc vous y référer. https://github.com/andever-flatfish/pandas-tips/blob/master/notebook/pandas-tips.ipynb
Tout d'abord, effectuez chaque astuce en utilisant le DataFrame suivant.
import pandas as pd
df = pd.DataFrame([['tokyo', 'male', 21, 165, 63],
['osaka', 'male', 28, 170, 71],
['fukuoka', 'female', 32, 175, 58],
['tokyo', 'male', 21, 165, 63],
['osaka', 'female', 28, 175, 70],
['fukuoka', 'male', 32, 155, 58],
['tokyo', 'female', 21, 165, 63],
['osaka', 'male', 28, 172, 67],
['fukuoka', 'male', 42, 155, 48]],
columns=['area', 'gender', 'age', 'height', 'weight'])
Puisque python est un langage typé dynamiquement, vous n'avez fondamentalement pas besoin d'être conscient des types. Cependant, il arrive souvent qu'une erreur inattendue se produise. Par exemple, les données que je pensais être de type int n'ont qu'un seul espace de données et sont de type objet. Dans ce cas, vérifiez le type de données ci-dessous.
df.dtypes
area object
gender object
age int64
height int64
weight int64
dtype: object
Si vous ne voulez voir qu'une seule colonne, vous pouvez vérifier ci-dessous.
df['height'].dtype
dtype('int64')
Si vous souhaitez convertir le type int en type float, vous pouvez procéder comme suit. Si vous vérifiez avec df ['height']. Dtype ci-dessus, vous pouvez voir qu'il a été converti.
df['height'] = df['height'].astype(float)
Cependant, pour convertir le type d'objet en type int ou type float, il est nécessaire de corriger ou de supprimer les données qui sont devenues le type d'objet (par exemple, des espaces), puis de les convertir avec un type.
Souvent, vous souhaitez voir les noms de colonne dans un DataFrame. De plus, si vous voulez faire quelque chose pour chaque colonne, il est pratique de conserver les noms de colonnes dans une liste.
df_columns = list(df.columns)
print(df_columns)
['area', 'gender', 'age', 'height', 'weight']
Seules les données qui remplissent certaines conditions peuvent être extraites ligne par ligne. Par exemple, si vous souhaitez extraire des données dont la "zone" est uniquement "fukuoka" dans df, vous pouvez les extraire comme suit.
part_of_df1 = df[df['area']=='fukuoka']
De plus, si vous souhaitez extraire des données dont la «zone» est «okyo» ou «osaka» dans df, vous pouvez les extraire comme suit.
part_of_df2 = df[df['area'].isin(['tokyo', 'osaka'])]
Si vous extrayez uniquement les données d'une ligne spécifique, l'index reste l'index du DataFrame d'origine, réaffectez l'index comme suit.
part_of_df1.reset_index(drop=True, inplace=True)
Si vous souhaitez modifier l'ordre des colonnes dans le DataFrame, vous pouvez répertorier les colonnes dans l'ordre dans lequel vous souhaitez trier et appeler cette liste.
sorted_columns_list1 = ['height', 'weight', 'gender', 'area', 'age']
sorted_df1 = df[sorted_columns_list1]
En plus du tri, il est également possible d'extraire uniquement des colonnes spécifiques.
sorted_columns_list2 = ['area', 'gender', 'age']
sorted_df2 = df[sorted_columns_list2]
Utilisez renommer pour modifier les noms de colonne comme suit:
rename_df = df.rename(columns={'area':'zone',
'gender':'sexe',
'age':'âge',
'height':'la taille',
'weight':'poids'})
Utilisez append pour unir différentes données avec le même nom de colonne.
other_df = pd.DataFrame([['hokkaido', 'male', 25, 162, 60],
['hokkaido', 'female', 38, 179, 81]],
columns=['area', 'gender', 'age', 'height', 'weight'])
union_df = df.append(other_df, ignore_index=True)
Afin de confirmer les données numériques, si vous calculez les statistiques de base, vous pouvez obtenir un résultat tel qu'une valeur aberrante.
df.describe()
Les données peuvent être facilement lues comme suit. Si df est brouillé, entrez l'encodage.
df = pd.read_csv('data.csv')
S'il n'y a pas d'en-tête dans le csv d'origine, écrivez comme suit.
df = pd.read_csv('data.csv', header=None)
Vous pouvez facilement sortir comme suit. S'il ne s'agit que d'un index de numéro de série, il n'est souvent pas affiché.
df.to_csv('data.csv', index=False)
Si vous ne l'utilisez pas souvent, mais que vous ne souhaitez pas afficher l'en-tête, écrivez comme suit.
df.to_csv('data.csv', header=False, index=False)
Recommended Posts