[PYTHON] Pandas / DataFrame Conseils pour une utilisation pratique

introduction

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'])
sample_df.png

Confirmation du type de données / conversion du type

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.

Vérifiez le nom de la colonne de DataFrame

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']

Extraire uniquement les données d'une ligne spécifique

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']
part_of_df.png

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'])]
part_of_df2.png

Réaffecter les numéros dans l'index

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)
reset_index_part_of_df.png

Changer l'ordre des colonnes

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]
sorted_df1.png

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]
sorted_df2.png

Changer le nom de la colonne

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'})
rename_df.png

Union d'autres trames de données

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)
union_df.png

Calculer des statistiques de base

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()
numerical_data.png

Importer / exporter csv

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

Pandas / DataFrame Conseils pour une utilisation pratique
Enquête pour l'utilisation pratique de BlockChain
Conseils pour tracer plusieurs lignes avec des pandas
[pandas] Conseils GroupBy
Pandas Python: recherchez DataFrame à l'aide d'expressions régulières
[Pour enregistrement] Mémorandum Pandas
Comment utiliser Pandas 2
Utiliser DataFrame en Java
[Astuces] Ma note Pandas
Extraire N échantillons pour chaque groupe avec Pandas DataFrame
Utiliser Mean avec DataFrame
Résumé des méthodes de prétraitement pour les débutants en Python (trame de données Pandas)
Essayez les opérations de base sur Pandas DataFrame sur Jupyter Notebook
Application Python: Pandas # 3: Dataframe
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image pour eux-mêmes 4 Utiliser l'interface graphique
Conversion de Pandas DataFrame en System.Data.DataTable à l'aide de Python pour .NET
Conseils aux débutants en Python pour utiliser l'exemple Scikit-image par eux-mêmes
Utiliser PySide pour l'interface utilisateur HDA
Comment utiliser Pandas Rolling
Pandas 100 coups pour les débutants en Python
[Python + Selenium] Conseils pour le grattage
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Exporter la trame de données pandas vers Excel
Conseils de traitement des données avec Pandas
Conseils et précautions lors de l'analyse des données
Utilisez des modèles d'utils.