5

Pandas read_csv: Опции low_memory и dtype

29

Я получаю предупреждение при загрузке CSV-файла с помощью pandas:

df = pd.read_csv('somefile.csv')

Сообщение об ошибке следующее:

.../site-packages/pandas/io/parsers.py:1130:
DtypeWarning: Columns (4,5,7,16) have mixed types.  Specify dtype option on import or set low_memory=False.

Я не понимаю, почему опция dtype связана с low_memory, и почему установка low_memory=False может помочь? Можете объяснить, как это работает и в каких случаях это может быть полезно?

4 ответ(ов)

0

Проблема часто возникает из-за того, что pandas по умолчанию пытается оптимизировать память, что может привести к ошибкам при чтении больших файлов. Использование параметра low_memory=False позволяет pandas обрабатывать файл более эффективно. Вот как вы можете это сделать:

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

Это должно решить вашу проблему. Я столкнулся с аналогичной ошибкой при чтении 1.8 миллионов строк из CSV, и это решение помогло мне. Попробуйте!

0

Это сработало для меня!

file = pd.read_csv('example.csv', engine='python')
0

Как уже упоминал firelynx, если 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})

Таким образом, при наличии несовместимых данных, конвертер будет возвращать 0, что позволит избежать ошибок при загрузке файла CSV.

0

Это сработало для меня с low_memory = False при импорте DataFrame. Вот единственное изменение, которое помогло:

df = pd.read_csv('export4_16.csv', low_memory=False)
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь