7

Преобразование DataFrame Pandas в массив NumPy

1

Как преобразовать DataFrame Pandas в массив NumPy?

Я создал DataFrame с помощью библиотеки Pandas и теперь мне нужно преобразовать его в массив NumPy. Вот как выглядит мой DataFrame:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        '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],
    },
    index=[1, 2, 3, 4, 5, 6, 7],
).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, чтобы он выглядел следующим образом:

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]])

Также, возможно ли сохранить типы данных, чтобы массив выглядел так:

array([[ 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]],
     dtype=[('ID', '<i4'), ('A', '<f8'), ('B', '<f8'), ('C', '<f8')])

Как мне это сделать?

5 ответ(ов)

4

Чтобы преобразовать DataFrame pandas (df) в массив numpy ndarray, используйте следующий код:

df.values

Это возвращает массив в следующем формате:

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]])

Если вам нужен конкретный столбец, вы можете сделать это следующим образом:

df['column'].values
1

Примечание: Метод .as_matrix(), использованный в этом ответе, устарел. В версии Pandas 0.23.4 выдается предупреждение:

Метод .as_matrix будет удален в будущих версиях. Используйте .values вместо.


В Pandas есть встроенный метод для этого...

numpy_matrix = df.as_matrix()

возвращает

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]])

Для получения массива NumPy вместо устаревшего метода .as_matrix() используйте метод .values, который работает аналогичным образом:

numpy_matrix = df.values

Этот способ продолжает корректно осуществлять преобразование вашего DataFrame в массив NumPy.

0

Попробуйте использовать следующий код:

a = numpy.asarray(df)

Этот метод преобразует объекты DataFrame из библиотеки pandas в массив NumPy. Убедитесь, что библиотека NumPy импортирована в вашем коде, добавив строку import numpy. Если у вас возникнут другие вопросы или проблемы, не стесняйтесь их задавать!

0

Чтобы преобразовать DataFrame в массив NumPy, можно использовать следующий подход:

import numpy as np
import pandas as pd

# Создание примерного DataFrame
data = {
    'gbm': [12.097439, 12.109811, 11.720734, 11.824557, 11.800868, 12.490984],
    'nnet': [12.047437, 12.070209, 11.622139, 11.926414, 11.727730, 12.502440],
    'reg': [12.100953, 12.095288, 11.740523, 11.926527, 11.729737, 12.530894]
}
df = pd.DataFrame(data)

# Преобразование DataFrame в массив NumPy
result = np.array(df.to_records().view(type=np.matrix))

print(result)

Этот код создаёт DataFrame с данными и затем преобразует его в массив NumPy. В результате вы получите массив с типом numpy.record, который содержит индексы и значения колонок gbm, nnet, и reg.

Результат преобразования будет выглядеть примерно так:

array([[(0, 12.097439  , 12.047437, 12.100953),
        (1, 12.10981081, 12.070209, 12.095288),
        (2, 11.72073428, 11.622139, 11.740523),
        (3, 11.82455653, 11.926414, 11.926527),
        (4, 11.80086775, 11.72773 , 11.729737),
        (5, 12.49098389, 12.50244 , 12.530894)]],
dtype=(numpy.record, [('index', '<i8'), ('gbm', '<f8'), ('nnet', '<f4'), ('reg', '<f8')]))

Таким образом, вы получите удобный образец для дальнейшей работы с вашими данными в формате массива NumPy.

0

Вы можете преобразовать DataFrame в его представление в виде массива Numpy двумя способами:

  1. Используя метод as_matrix():

    mah_np_array = df.as_matrix(columns=None)
    

    Обратите внимание, что метод as_matrix() устарел в последних версиях Pandas, и его использование не рекомендуется.

  2. Используя атрибут values:

    mah_np_array = df.values
    

    Этот способ является более современным и рекомендуемым для получения массива Numpy из DataFrame.

Для получения дополнительной информации о методах работы с DataFrame, вы можете обратиться к документации Pandas.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь