Почему существует такая большая разница в использовании памяти для фреймов данных между пандами и R?

Я работаю с данными из https://opendata.rdw.nl/Voertuigen/Open-Data-RDW-Gekentekende_voertuigen_brandstof/8ys7-d773 (загрузите файл CSV с помощью кнопки «Экспортер»).

Когда я импортирую данные в R, используя он занимает 3,75 ГБ памяти, но когда я импортирую его в pandas, используя занимает 6,6 ГБ памяти.

Почему эта разница такая большая?

Я использовал следующий код, чтобы определить использование памяти фреймами данных в R:

      library(pryr) 
object_size(df)

и питон:

      df.info(memory_usage="deep")

1 ответ

Я нашел эту ссылку очень полезной и решил, что стоит вырваться из комментариев и подвести итоги:

Уменьшение использования памяти Pandas #1: сжатие без потерь

  1. Загружать только интересующие столбцы с usecols

            df = pd.read_csv('voters.csv', usecols=['First Name', 'Last Name'])
    
  2. Сжимайте числовые столбцы с меньшими типами dtypes

    • int64: (по умолчанию) от -9223372036854775808 до 9223372036854775807
    • int16: От -32768 до 32767
    • int8: От -128 до 127
            df = pd.read_csv('voters.csv', dtype={'Ward Number': 'int8'})
    
  3. Сжимайте категориальные данные с помощью dtype category

            df = pd.read_csv('voters.csv', dtype={'Party Affiliation': 'category'})
    
  4. Конвертировать в основном nan данные в dtype Sparse

            sparse_series = series.astype('Sparse[str]')
    
Другие вопросы по тегам