Data Wrangling

Эффективное преобразование Pandas DataFrame в массивы NumPy

Spread the love

Pandas и NumPy являются краеугольными камнями экосистемы Data Science в Python. Pandas превосходит в манипулировании данными благодаря своей структуре DataFrame, в то время как NumPy выделяется эффективными численными вычислениями с использованием своих массивов. Часто возникает необходимость плавного перехода между этими библиотеками, преобразуя Pandas DataFrame в массив NumPy для дальнейшего анализа или обработки. В этой статье подробно описаны наиболее эффективные методы такого преобразования.

Оглавление

Метод to_numpy(): Рекомендуемый подход

Метод to_numpy() является наиболее прямым и эффективным способом преобразования Pandas DataFrame в массив NumPy. Он напрямую преобразует значения DataFrame в массив NumPy, предлагая гибкость в указании типа данных.


import pandas as pd
import numpy as np

# Пример DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7.1, 8.2, 9.3]}
df = pd.DataFrame(data)

# Преобразование в массив NumPy
numpy_array = df.to_numpy()
print("Тип данных по умолчанию:n", numpy_array)

# Указание типа данных
numpy_array_float = df.to_numpy(dtype=np.float64)
print("nТип данных Float64:n", numpy_array_float)

numpy_array_int = df.to_numpy(dtype=np.int32)
print("nТип данных Int32 (числа с плавающей точкой усекаются):n", numpy_array_int)

Обратите внимание, как указание dtype позволяет точно контролировать тип результирующего массива. Если его опустить, to_numpy() интеллектуально определяет наиболее подходящий тип из данных DataFrame.

Атрибут .values: Устаревший подход

Атрибут .values также возвращает представление данных DataFrame в виде массива NumPy. Хотя функционально он похож на to_numpy(), он считается устаревшим методом. to_numpy() предпочтительнее благодаря своей ясности и недвусмысленности.


import pandas as pd
import numpy as np

# Пример DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)

# Преобразование с использованием .values
numpy_array = df.values
print(numpy_array)

Результат идентичен использованию to_numpy(), но to_numpy() является более современным и рекомендуемым методом.

Метод to_records(): Создание структурированных массивов

Если вам нужен массив NumPy с именованными полями (похожий на структурированный массив), используйте метод to_records(). Он преобразует DataFrame в структурированный массив NumPy, где каждый столбец становится именованным полем.


import pandas as pd
import numpy as np

# Пример DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data)

# Преобразование в структурированный массив NumPy
numpy_record_array = df.to_records()

print(numpy_record_array)
print("nТип данных структурированного массива:")
print(numpy_record_array.dtype)

Обратите внимание на включение индекса в структурированный массив. Этот метод особенно ценен, когда сохранение имен столбцов в структуре массива NumPy имеет решающее значение для последующего анализа.

В заключение, to_numpy() является рекомендуемым методом для общих преобразований DataFrame в массивы NumPy. .values предоставляет функционально эквивалентную альтернативу, а to_records() лучше всего подходит для структурированных массивов, требующих именованных полей. Оптимальный выбор зависит от конкретных потребностей и желаемой структуры результирующего массива NumPy.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *