Разделение очень большого информационного кадра Pandas, альтернатива Numpy array_split - PullRequest
0 голосов
/ 29 января 2019

Есть идеи по ограничению строк для использования метода Numpy array_split?

У меня есть dataframe со строками + 6 м, и я хотел бы разбить его на примерно 20 кусков.

Моя попытка последовала, что описано в: Разделение большого кадра данных панд

с использованием Numpy и функции array_split, однако, будучи очень большим dataframe, оно просто продолжается вечно.

My dataframe - это df, который включает 8 столбцов и 6,6 миллиона строк.

df_split = np.array_split(df,20)

Есть идеи об альтернативном методе, чтобы разделить это?В качестве альтернативы также приветствуются советы по улучшению производительности фрейма данных.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Возможно, это решит вашу проблему, разделив фрейм данных на чанк, как в следующем примере:

import numpy as np
import pandas as pds

df = pds.DataFrame(np.random.rand(14,4), columns=['a', 'b', 'c', 'd'])

def chunker(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

for i in chunker(df,5):
    df_split = np.array_split(i, 20)
    print(df_split)
0 голосов
/ 29 января 2019

У меня нет общего решения, однако есть две вещи, которые вы могли бы рассмотреть:

  1. Вы можете попробовать загрузить данные порциями, вместо загрузки, а затем разбить их.Если вы используете pandas.read_csv, то аргумент skiprows будет правильным решением.
  2. Вы можете изменить свои данные с помощью df.values.reshape((20,-1,8)).Однако для этого потребуется, чтобы количество строк делилось на 20. Вы можете не использовать последний (максимум 19) сэмплов для его подгонки.Это, конечно, было бы самым быстрым решением.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...