Панды Нет типа при загрузке данных в чанках - PullRequest
0 голосов
/ 20 сентября 2018

Привет, ученые данных.

Я написал эту функцию для загрузки моих данных в виде фрагментов, она работает нормально и дает мне форму моих данных, но когда я пытаюсь присвоить их переменной, чтобы яможет быть в состоянии очистить мои данные и работать с ними, это показывает, что это не тип

def show(df):
start = time()

c=0
for chuck in pd.read_csv('../input/{}.csv'.format(df), chunksize=50000):
    if c==0:
        df=chuck
        c+=1
    else:
        df=df.append(chuck, ignore_index=True)
        c+=1
print (c)

print('used {:.2f} s'.format(time()-start))

print(df.shape)
df.head()

Мои данные изначально имеют 307511 строк и 212 столбцов.Существуют и другие наборы данных, которые мне все еще приходится загружать миллионами строк.Моя оперативная память не может обработать такой объем данных, поэтому я запрашиваю помощь по этому

. Я также пробовал этот способ загрузки данных, но не могу получить все свои данные, но определенную их часть.Я хочу использовать все свои данные, когда я объединяю и подгоняю свои данные

df = pd.read_csv('../input/application_train.csv', iterator=True, chunksize=10**6, engine='python')

Это работает, но я не получаю из этого все свои данные

df = df.get_chunk(300000)

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Оба кода отлично работают у меня.У меня когда-то была такая же проблема.Старайтесь не помещать свой код в функцию и посмотрите, как он работает, цикл for работает нормально сам по себе.попробуйте это

start = time()
data = []
for chunk in pd.read_csv('../input/youdataset.csv', chunksize = 50000):
    data.append(chunk)

print(len(data))

df  = pd.concat(data, ignore_index = True)

print('used {:.2f}s'.format(time()-start))
print(df.shape)
df.head()

Надеюсь, это поможет

0 голосов
/ 20 сентября 2018

Вы пытаетесь запустить код в точности так, как он задан в вашем вопросе?

Если да, то возникают следующие проблемы:

  • Отступ: каждая строкапосле «def ...» должен быть отступ, если вы хотите, чтобы он был частью функции.

  • Несколько значений в df: вы начинаете с того, что это имя файла, но затем выизмените его значение в середине вашего цикла, чтобы оно было другим, когда он возвращается к вершине цикла.

  • Использование df в качестве значений нескольких типов.Создайте его один раз в виде пустого списка и добавьте его итеративно, и это, по-видимому, лучше соответствует вашим целям.

Попробуйте что-то вроде этого:

def show(file_name):
    start = time()

    c=0
    df = []
    for chuck in pd.read_csv('../input/{}.csv'.format(file_name), chunksize=50000):
        df.append(chuck, ignore_index=True)
        c+=1
    print (c)

    print('used {:.2f} s'.format(time()-start))

    print(df.shape)
    df.head()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...