предупреждающее сообщение при импорте файла csv в Pandas [duplicate]

AppMobi HTML5 SDK однажды пообещал доступ к встроенным функциям устройства, включая камеру, из приложения на основе HTML5, но больше не принадлежит Google. Вместо этого попробуйте ответы на основе HTML5 в этом сообщении .

147
задан firelynx 15 April 2016 в 06:38
поделиться

5 ответов

df = pd.read_csv('somefile.csv', low_memory=False)

Это должно решить проблему. Я получил точно такую ​​же ошибку при чтении строк 1.8M из CSV.

205
ответ дан firelynx 15 August 2018 в 15:05
поделиться
  • 1
    Это заставляет замолчать ошибку, но на самом деле ничего не меняет. – firelynx 13 January 2016 в 09:32
  • 2
    Итак, учитывая, что установка dtype=object не является более эффективной с точки зрения памяти, есть ли какая-то причина для того, чтобы с ней справиться, кроме того, чтобы избавиться от ошибки? – zthomas.nc 31 August 2016 в 07:09
  • 3
    @ zthomas.nc да, Pandas не нужно беспокоиться о том, что находится в столбце. Теоретически сохраняя некоторую память при загрузке (но ни один после завершения загрузки) и теоретически сохраняя некоторые циклы процессора (которые вы не заметите, поскольку дисковый ввод-вывод станет узким местом. – firelynx 1 September 2016 в 11:22
  • 4
    «Также стоит отметить, что если последняя строка в файле имела бы« foobar », записанный в столбце user_id, при загрузке произойдет сбой, если указан указанный выше тип dtype. & quot; существует ли какая-либо «принуждение», вариант, который можно использовать для выброса этой строки вместо сбоя? – sparrow 1 September 2016 в 15:33
  • 5
    @sparrow может быть, но в прошлый раз, когда я использовал его, у него были ошибки. Он может быть исправлен в последней версии панд. error_bad_lines=False, warn_bad_lines=True должен сделать трюк. В документации говорится, что он действителен только для синтаксического анализатора. Он также говорит, что синтаксический анализатор по умолчанию - «Нет», что затрудняет определение того, какой из них является значением по умолчанию. – firelynx 2 September 2016 в 06:48
  • 6
    @nealmcb Вы можете прочитать dataframe с nrows=100 в качестве аргумента, а затем сделать df.dtypes, чтобы увидеть dtypes, который вы получаете. Однако, читая весь файл данных с этими типами данных, обязательно сделайте try/except, чтобы вы уловили ошибочные догадки dtype. Данные грязные, вы знаете. – firelynx 19 December 2016 в 09:17
  • 7
    У меня такая же проблема при запуске файла данных 1.5gb – Sitz Blogz 25 May 2017 в 09:14
211
ответ дан firelynx 5 September 2018 в 14:12
поделиться

У меня была аналогичная проблема с файлом ~ 400 МБ. Установка low_memory = False сделала трюк для меня. Сначала делайте простые вещи, я бы проверял, что ваш фреймворк не больше вашей системной памяти, перезагрузитесь, очистите оперативную память перед продолжением. Если вы все еще сталкиваетесь с ошибками, стоит убедиться, что ваш CSV-файл в порядке, быстро просмотрите Excel и убедитесь, что нет очевидной коррупции. Сломанные исходные данные могут привести к хаосу ...

0
ответ дан Dr Nigel 15 August 2018 в 15:05
поделиться
24
ответ дан hd1 15 August 2018 в 15:05
поделиться
  • 1
    Добавим dtype=unicode: NameError: name 'unicode' is not defined. Но, кажется, работает unicode в кавычках (как в «unicode»)! – sedeh 19 February 2015 в 19:06
  • 2
    @sedeh Вы можете указать типы dtypes либо как типы python, либо как numpy.dtype('unicode'). Когда вы дадите опцию dtype строку, она попытается выполнить ее по фабрике numpy.dtype() по умолчанию. Задание 'unicode' на самом деле ничего не сделает, юникоды просто повышаются до objects. Вы получите dtype='object' – firelynx 15 July 2015 в 07:35

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

def conv(val):
    if not val:
        return 0    
    try:
        return np.float64(val)
    except:        
        return np.float64(0)

df = pd.read_csv(csv_file,converters={'COL_A':conv,'COL_B':conv})
7
ответ дан sparrow 15 August 2018 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: