Как преобразовать Pandas Dataframe в Numpy массив

  1. В метод to_numpy для преобразования DataFrame в numpy массив записей
  2. to_records() методу преобразования DataFrame в массив numpy записи

Мы рассмотрим метод to_numpy() для преобразования Pythonого DataFrame в numpy массив, введенный из панды v0.24.0 вместо старого метода .values. Мы можем определить to_numpy на объектах Index, Series, и DataFrame.

Старые DataFrame.values имеют противоречивое поведение, не рекомендуется использовать согласно документации по pandas API. Однако, мы рассмотрим пример этого метода в случае, если вы используете более старую версию.

Другой старый метод DataFrame.as_matrix() сейчас устарел, не используйте его!

Мы также представим другой подход, использующий метод DataFrame.to_records() для преобразования заданного DataFrame в массив записей numpy.

В метод to_numpy для преобразования DataFrame в numpy массив записей

Pandas DataFrame - это 2d табличная структура данных со строками и столбцами. Эта структура данных может быть преобразована в массив numpy методом to_numpy:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint (
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.to_numpy()
print(nmp) 
print(type(nmp))

Вывод:

[[5 5 1 3]
 [1 6 6 0]
 [9 1 2 0]
 [9 3 5 3]
 [7 9 4 9]
 [8 1 8 9]]
<class 'numpy.ndarray'>

То же самое можно сделать с помощью метода dataframe.values следующим образом:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.values
print(nmp) 
print(type(nmp))

Вывод:

[[8 8 5 0]
 [1 7 7 5]
 [0 2 4 2]
 [6 8 0 7]
 [6 4 5 1]
 [1 8 4 7]]
<class 'numpy.ndarray'>

Если мы хотим включить indexes в массив numpy, нам нужно применить reset_index() с dataframe.values:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.reset_index().values
print(nmp) 
print(type(nmp))

Вывод:

[[0 1 0 3 7]
 [1 8 2 5 1]
 [2 2 2 7 3]
 [3 3 4 3 7]
 [4 5 4 4 3]
 [5 2 9 7 6]]
<class 'numpy.ndarray'>

to_records() методу преобразования DataFrame в массив numpy записи

Если вам нужны dtypes, to_records() это лучший вариант для использования. Производительность to_numpy() и to_records() почти одинакова:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.to_records()
print(nmp) 
print(type(nmp))

Вывод:

[(0, 0, 4, 6, 1) 
 (1, 3, 1, 7, 1) 
 (2, 9, 1, 6, 4) 
 (3, 1, 4, 6, 9)
 (4, 9, 1, 3, 9)
 (5, 2, 5, 7, 9)]
<class 'numpy.recarray'>

Сопутствующая статья - Pandas DataFrame

  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать столбец DataFrame в дату в Pandas
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • comments powered by Disqus