Maison >développement back-end >Tutoriel Python >Pourquoi une colonne Pandas DataFrame avec des chaînes affiche-t-elle « objet dtype » même après la conversion en chaîne ?
Chaînes dans un DataFrame, mais le type est un objet
Certains utilisateurs ont rencontré un DataFrame Pandas où certaines colonnes affichent un "objet dtype", même si chaque élément de ces colonnes est une chaîne, même après une conversion explicite en chaîne. Pour comprendre ce comportement, il est nécessaire d'approfondir la nature des types de données dans Pandas et NumPy.
NumPy, la bibliothèque sous-jacente de Pandas, caractérise les types de données comme int64, float64 et object. Le type "objet" signifie que les éléments d'un tableau NumPy ne sont pas d'une taille uniforme et fixe en octets, comme c'est le cas pour les entiers ou les flottants.
Pour les chaînes, leurs longueurs varient, rendant le stockage direct de chaîne d'octets dans un tableau peu pratique. Au lieu de cela, Pandas utilise un « tableau d'objets » qui stocke des pointeurs vers des objets chaîne. Cette approche explique pourquoi le dtype est un objet pour les colonnes contenant des chaînes.
Considérons l'exemple suivant :
import numpy as np import pandas as pd # Create a NumPy array of integers int_array = np.array([1, 2, 3, 4], dtype=np.int64) # Create a NumPy array of strings object_array = np.array(['a', 'b', 'c', 'd'], dtype=np.object) # Convert the object array to pandas DataFrame df = pd.DataFrame({'INTS': int_array, 'STRINGS': object_array}) # Check the data types print(df.dtypes) # Print the lengths of the first item in each column print(len(df['INTS'].iat[0])) print(len(df['STRINGS'].iat[0]))
La sortie sera :
INTS int64 STRINGS object dtype: object 1 1
Comme vous pouvez voyez, la colonne "INTS" a un type de int64, car tous ses éléments sont des entiers de 8 octets. La colonne "STRINGS" a un type d'objet car ses éléments sont des pointeurs vers des objets chaîne. La longueur de chaque chaîne est différente, comme en témoigne le résultat.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!