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 pddata = { '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 c30 1 1.0 a1 2 2.0 b2 3 3.0 b3 4 4.0 d4 5 5.0 e5 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 int64c2 float64c3 objectdtype: 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 5Data columns (total 3 columns):# Column Non-Null Count Dtype--- ------ -------------- -----0 c1 6 non-null int641 c2 6 non-null float642 c3 6 non-null objectdtypes: 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 Latitude0 0.0 0 -121.214928 41.8686521 0.0 0 -121.214813 41.8685492 0.0 0 -121.214699 41.8684433 0.0 0 -121.214584 41.8683324 0.0 0 -121.214470 41.868225... ... ... ... ...435827 0.0 0 -121.271240 41.782211435828 0.0 0 -121.271126 41.782104435829 0.0 0 -121.271004 41.781994435830 0.0 0 -121.270874 41.781868435831 0.0 0 -121.270760 41.781761
et df2
Longitude Latitude A0 -120.371639 42.494111 -9991 -120.371405 42.493905 -9992 -120.371191 42.493716 -9993 -120.371054 42.493590 -9994 -120.370844 42.493405 -999... ... ... ...12422595 -121.414409 41.654469 -99912422596 -121.414205 41.654282 -99912422597 -121.414020 41.654113 -99912422598 -121.413863 41.653969 -99912422599 -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 float32MASK int32Longitude float32Latitude float32dtype: object
pendant que
df2.dtypes
donne
Longitude float64Latitude float64A int64dtype: 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 A0 0.0 0 -121.214928 41.868652 -9991 0.0 0 -121.214813 41.868549 -9992 0.0 0 -121.214699 41.868443 -9993 0.0 0 -121.214584 41.868332 -9994 0.0 0 -121.214470 41.868225 -999... ... ... ... ... ...435827 0.0 0 -121.271240 41.782211 -999435828 0.0 0 -121.271126 41.782104 -999435829 0.0 0 -121.271004 41.781994 -999435830 0.0 0 -121.270874 41.781868 -999435831 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 |
