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 |