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.