Comment obtenir le type de données de chaque colonne d'une DataFrame Pandas ?

Published: 25 septembre 2023

Tags: Python; Pandas; Dataframe;

DMCA.com Protection Status

Pour déterminer le type de données de chaque colonne d'une DataFrame Pandas, une solution consiste à utiliser dtypes, exemples:

Obtenir le type de données de chaque colonne dtypes()

Considérons la dataframe suivant :

import pandas as pd

data = { 'c1':[1,2,3,4,5,6],
         'c2':[1.,2.,3.,4.,5.,6.],
         'c3':['a','b','b','d','e','f']
}

df = pd.DataFrame(data)

print(df)

donne

   c1   c2 c3
0   1  1.0  a
1   2  2.0  b
2   3  3.0  b
3   4  4.0  d
4   5  5.0  e
5   6  6.0  f

Pour récupérer le type de données de chaque colonne, veuillez entrer

df.dtypes

qui renverra une série contenant le type de données pour chaque colonne de la DataFrame d'origine :

c1      int64
c2    float64
c3     object
dtype: object

En utilisant info()

Il est également possible d'obtenir le type de données de chaque colonne en utilisant la méthode info() sur une DataFrame. Cela fournira des informations sur toutes les colonnes de la DataFrame, y compris le type de données.

Par exemple :

 df.info()

Cela renverrait quelque chose comme ceci :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   c1      6 non-null      int64  
 1   c2      6 non-null      float64
 2   c3      6 non-null      object 
dtypes: float64(1), int64(1), object(1)
memory usage: 272.0+ bytes

Cet exemple montre que la colonne 'c3' contient des objets, 'c2' contient des float64 et 'c1' a des types de données int64.

Exemple d'utilisation

Fusion de deux DataFrames

C'est un exemple montrant pourquoi il est utile de vérifier le type de données d'une dataframe Pandas. Il y a deux dataframes, df1.

            FRP  MASK   Longitude   Latitude
    0       0.0     0 -121.214928  41.868652
    1       0.0     0 -121.214813  41.868549
    2       0.0     0 -121.214699  41.868443
    3       0.0     0 -121.214584  41.868332
    4       0.0     0 -121.214470  41.868225
    ...     ...   ...         ...        ...
    435827  0.0     0 -121.271240  41.782211
    435828  0.0     0 -121.271126  41.782104
    435829  0.0     0 -121.271004  41.781994
    435830  0.0     0 -121.270874  41.781868
    435831  0.0     0 -121.270760  41.781761

et df2

               Longitude   Latitude    A
    0        -120.371639  42.494111 -999
    1        -120.371405  42.493905 -999
    2        -120.371191  42.493716 -999
    3        -120.371054  42.493590 -999
    4        -120.370844  42.493405 -999
    ...              ...        ...  ...
    12422595 -121.414409  41.654469 -999
    12422596 -121.414205  41.654282 -999
    12422597 -121.414020  41.654113 -999
    12422598 -121.413863  41.653969 -999
    12422599 -121.413656  41.653779 -999

, que l'on veut fusionner en utilisant la latitude et la longitude. Cependant, la fusion

 pd.merge(df1,df2, on=['Longitude','Latitude'], how='inner')

donne une dataframe vide.

La raison en est que la latitude et la longitude peuvent sembler similaires, mais elles sont stockées sous des types de données différents:

df1.dtypes

donne

FRP          float32
MASK           int32
Longitude    float32
Latitude     float32
dtype: object

pendant que

df2.dtypes

donne

Longitude    float64
Latitude     float64
A              int64
dtype: object

Il peut être observé que le type de données pour la latitude et la longitude est float32 dans df1 et float64 dans df2.

Une solution pour transformer les données de float64 en float32 est d'utiliser astype().

df2['Longitude'] = df2['Longitude'].astype('float32')
df2['Latitude'] = df2['Latitude'].astype('float32')

Maintenant en utilisant la fusion :

 pd.merge(df,df_L1, on=['Longitude','Latitude'], how='inner')

donne

            FRP  MASK   Longitude   Latitude    A
    0       0.0     0 -121.214928  41.868652 -999
    1       0.0     0 -121.214813  41.868549 -999
    2       0.0     0 -121.214699  41.868443 -999
    3       0.0     0 -121.214584  41.868332 -999
    4       0.0     0 -121.214470  41.868225 -999
    ...     ...   ...         ...        ...  ...
    435827  0.0     0 -121.271240  41.782211 -999
    435828  0.0     0 -121.271126  41.782104 -999
    435829  0.0     0 -121.271004  41.781994 -999
    435830  0.0     0 -121.270874  41.781868 -999
    435831  0.0     0 -121.270760  41.781761 -999

Références

Liens Site
dtypes pandas.pydata.org
astype pandas.pydata.org
info() pandas.pydata.org
Data types numpy.org