Maison >développement back-end >Tutoriel Python >Comment convertir efficacement un Pandas DataFrame avec des valeurs manquantes en un tableau NumPy ?

Comment convertir efficacement un Pandas DataFrame avec des valeurs manquantes en un tableau NumPy ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-05 02:42:02702parcourir

How to efficiently convert a Pandas DataFrame with missing values into a NumPy array?

Convertir une trame de données Pandas avec des valeurs manquantes en tableau NumPy

La méthode la plus efficace pour convertir une trame de données Pandas avec des valeurs manquantes en un NumPy le tableau se fait via df.to_numpy(). Elle offre plusieurs avantages par rapport aux méthodes plus anciennes telles que df.values, notamment :

  • Renvoie systématiquement une vue des données sous-jacentes pour minimiser la consommation de mémoire.
  • Gère les types d'extensions en les convertissant en NumPy approprié dtypes.
  • Préserve les types de données d'origine sauf indication contraire.

Exemple :

<code class="python">import pandas as pd
import numpy as np

# Create a DataFrame with missing values
df = pd.DataFrame({'A': [np.nan, np.nan, 0.1, 0.1, 0.1, 0.1],
                   'B': [0.2, np.nan, 0.2, 0.2, np.nan, np.nan],
                   'C': [np.nan, 0.5, 0.5, np.nan, 0.5, np.nan]})

# Convert to a NumPy array with missing values represented as `np.nan`
array = df.to_numpy()

# Result:
# array([[ nan,  0.2,  nan],
#        [ nan,  nan,  0.5],
#        [ 0.1,  0.2,  0.5],
#        [ 0.1,  0.2,  nan],
#        [ 0.1,  nan,  0.5],
#        [ 0.1,  nan,  nan]])</code>

Préservation des Dtypes :

Bien que to_numpy ne prenne pas en charge la préservation directe des Dtypes, vous pouvez utiliser np.rec.fromrecords pour obtenir cet effet.

<code class="python"># Create a DataFrame with mixed data types
df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7.2, 8.1, 9.3]})

# Convert to a structured array with preserved Dtypes
struct_array = np.rec.fromrecords(
    df.reset_index(),
    names=list(df.columns) + ['index']
)

# Result:
# rec.array([('a', 1, 4, 7.2), ('b', 2, 5, 8.1), ('c', 3, 6, 9.3)],
#           dtype=[('index', '<U1'), ('A', '<i8'), ('B', '<i8'), ('C', '<f8')])</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn