Иногда возникает задача преобразовать структуру данных DataFrame, предоставляемую библиотекой Pandas, в массив NumPy. Подобная потребность может возникнуть, например, при необходимости использовать функции и методы, доступные только в библиотеке NumPy, а также для оптимизации производительности в некоторых случаях.
В качестве примера возьмем DataFrame из трех столбцов и семи строк.
import numpy as np import pandas as pd 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')
Получившийся DataFrame выглядит следующим образом:
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
Теперь предположим, что необходимо преобразовать данный DataFrame в массив NumPy.
Для преобразования DataFrame в массив NumPy используется метод .values
или функция to_numpy()
.
np_array = df.values
или
np_array = df.to_numpy()
Оба варианта возвращают массив NumPy, который выглядит следующим образом:
array([[ 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]])
Также стоит упомянуть, что при преобразовании DataFrame в массив NumPy типы данных столбцов DataFrame сохраняются. Если в DataFrame есть столбцы разных типов, то NumPy массив будет иметь соответствующий сложный тип данных.
Добавить комментарий