Эквивалент pandas read_sql_query для numpy массива? - PullRequest
1 голос
/ 28 января 2020

Я хотел бы использовать что-то эквивалентное pandas "read_sql_query", чтобы загрузить данные из базы данных в массив numpy, а не в pandas фрейм данных.

В pandas I используйте что-то вроде:

df = pd.read_sql_query(sql="select * from db;", con=con, index_col='index')

И теперь мне понадобится такая функция:

A = read_sql_to_np(sql="select * from db;")

, где A - массив numpy.

1 Ответ

2 голосов
/ 28 января 2020

Любой кадр данных может быть преобразован в массив numpy с использованием метода to_array():

>>> df = pandas.DataFrame({'A': [1, 2, 3], 
                           'B': [1.0, 2.0, 3.0], 
                           'C': ['a', 'b', 'c']})
>>> df.to_numpy()
array([[1, 1.0, 'a'],
       [2, 2.0, 'b'],
       [3, 3.0, 'c']], dtype=object)
>>> df['A'].to_numpy()
array([1, 2, 3])
>>> df[['A', 'B']].to_numpy()
array([[1., 1.],
       [2., 2.],
       [3., 3.]])
>>> df[['C']].to_numpy()
array([['a'],
       ['b'],
       ['c']], dtype=object)

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

Как указывает Parfait , при преобразовании необходимо соблюдать осторожность в отношении типов данных. Я оставил это неявным в приведенном выше примере, но обратите внимание, как первый пример генерирует массив с dtype=object, тогда как второй генерирует обычный массив с плавающей запятой. Я думаю, что подробное обсуждение типов данных в numpy выходит за рамки этого вопроса.

...