Maison  >  Article  >  développement back-end  >  Comment convertir un DataFrame Pandas avec des valeurs manquantes en un tableau NumPy préservant NaN ?

Comment convertir un DataFrame Pandas avec des valeurs manquantes en un tableau NumPy préservant NaN ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-05 02:27:02550parcourir

How to Convert a Pandas DataFrame with Missing Values to a NumPy Array Preserving NaN?

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

Problème

Convertir une trame de données Pandas avec des valeurs manquantes en un tableau NumPy, en préservant les valeurs manquantes comme np.nan. Considérez le dataframe suivant :

<code class="python">index = [1, 2, 3, 4, 5, 6, 7]
a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1]
b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]
c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]
df = pd.DataFrame({'A': a, 'B': b, 'C': c}, index=index)
df = df.rename_axis('ID')

print(df)</code>

Sortie :

      A    B    C
ID
1   NaN  0.2  NaN
2   NaN  NaN  0.5
3   NaN  0.2  0.5
4   0.1  0.2  NaN
5   0.1  0.2  0.5
6   0.1  NaN  0.5
7   0.1  NaN  NaN

Solution utilisant df.to_numpy()

Utilisez la méthode to_numpy() pour convertir le dataframe en un Tableau NumPy avec les valeurs manquantes représentées par np.nan :

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

np_array = df.to_numpy()

print(np_array)</code>

Sortie :

[[ nan  0.2  nan]
 [ nan  nan  0.5]
 [ nan  0.2  0.5]
 [ 0.1  0.2  nan]
 [ 0.1  0.2  0.5]
 [ 0.1  nan  0.5]
 [ 0.1  nan  nan]]

Préservation des types de données

Si vous devez conserver les types de données dans le tableau résultant, utilisez DataFrame.to_records() pour créer un tableau structuré NumPy :

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

structured_array = df.to_records()

print(structured_array)</code>

Sortie :

rec.array([('a', 1, 4, 7), ('b', 2, 5, 8), ('c', 3, 6, 9)],
          dtype=[('ID', 'O'), ('A', '<i8'), ('B', '<i8'), ('B', '<i8')])

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