Nano Hash - криптовалюты, майнинг, программирование

Использование pandas для эффективного чтения большого CSV-файла без сбоев

Я пытаюсь прочитать файл .csv с именем ratings.csv с http://grouplens.org/datasets/movielens/20m/ размер файла на моем компьютере составляет 533,4 МБ.

Вот что я пишу в Jupyter Notebook

import pandas as pd
ratings = pd.read_cv('./movielens/ratings.csv', sep=',')

Отсюда проблема в том, что ядро ​​​​сломается или умирает и просит меня перезапустить, и оно продолжает повторять одно и то же. Нет никакой ошибки. Пожалуйста, не могли бы вы предложить какой-либо альтернативный вариант решения этой проблемы, как будто мой компьютер не имеет возможности запускать это.

Это работает, но продолжает перезаписывать

chunksize = 20000
for ratings in pd.read_csv('./movielens/ratings.csv', chunksize=chunksize):
ratings.append(ratings)
ratings.head()

Записывается только последний кусок, остальные списываются.


Ответы:


1

Вам следует рассмотреть возможность использования параметра chunksize в read_csv при чтении в вашем кадре данных, потому что он возвращает объект TextFileReader, который вы можете затем передать pd.concat, чтобы объединить свои фрагменты.

chunksize = 100000
tfr = pd.read_csv('./movielens/ratings.csv', chunksize=chunksize, iterator=True)
df = pd.concat(tfr, ignore_index=True)

Если вы просто хотите обработать каждый фрагмент по отдельности, используйте

chunksize = 20000
for chunk in pd.read_csv('./movielens/ratings.csv', 
                         chunksize=chunksize, 
                         iterator=True):
    do_something_with_chunk(chunk)
24.08.2017
  • Я пробовал это, хотя это не сбой, но ядро ​​работает более 40 минут без остановки .... и я просто отменил его. Как долго я должен ожидать чтения 20 М записей? 25.08.2017
  • @Developer Увеличен размер фрагмента и установлен iterator=True. Попробуйте снова. 25.08.2017
  • Не могли бы вы помочь с этими правками. Это быстро, но мне не удавалось добавлять данные каждый раз, когда они записываются @cOLDsLEEP 25.08.2017
  • Тем не менее, есть проблема, теперь он берет только первый фрагмент, другие фрагменты не записываются, есть 20M данных, но этот метод будет хранить только 20K данных, только первый фрагмент @cOLDsLEEP 25.08.2017
  • @Разработчик, я бы отослал вас к этому: stackoverflow.com/questions/33642951/ 25.08.2017
  • Также stackoverflow.com/questions/25962114/ 25.08.2017

  • 2

    попробуйте так: 1) загрузить с помощью dask, а затем 2) преобразовать в pandas

    import pandas as pd
    import dask.dataframe as dd
    import time
    t=time.clock()
    df_train = dd.read_csv('../data/train.csv')
    df_train=df_train.compute()
    print("load train: " , time.clock()-t)
    
    31.05.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..