Я получаю сообщение об ошибке памяти с кодом pandas и перечисляет извлечение данных - PullRequest
0 голосов
/ 14 июля 2020

Этот код собирает данные из файла excel или csv, а затем для каждой строки в определенном c столбце он выполняет веб-скрапинг на одном конкретном c веб-сайте с полученной информацией. Проблема в том, что я не могу получить доступ к какой-либо части html, поэтому я решил использовать pyauto gui и какое-то изображение, чтобы определить, когда страница загружается. Кроме того, сценарий продолжает собирать данные внутри двух переменных, и в какой-то момент потоку не хватает памяти, сценарий экспортирует данные в файл csv. Возможно, проблема в том, что две переменные, которые собирают данные, потребляют всю мою оперативную память, я использую pandas для экспорта данных, извлеченных в файл .csv, каждые данные, собранные в новой строке, относительно данных, используемых для веб-очистки. , я на самом деле делаю это, создавая фрейм данных, а затем экспортируя его в .csv, есть ли способ вставить данные в .csv без необходимости этого делать? Извините за плохой англи sh. Описание процесса:

    ler_excel = eg.fileopenbox("Select file...")
    df = pd.read_csv(ler_excel, sep = ';', keep_default_na=False)
    list_data = df['data'].tolist()
    operations = []
    yes_or_no = []

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

Когда данные собраны, код делает это

    operations.append('MANY TEXT SCRAPED')
    if condition in yes_or_no:
      yes_or_no.append('yes')
    else:
      yes_or_no.append('no')

Там операции и списки yes_or_no стали слишком большими для моей памяти, чтобы их можно было обрабатывать, и оттуда мой код вставляет все содержимое из списков в столбцы внутри фрейма данных

    df["OPERATIONS"] = pd.Series(operations)
    df["YES_NO] = pd.Series(yes_or_no)

Затем все, что мне нужно сделать, это экспортировать данные в .csv

    df.to_csv(cwd+"/database.csv", sep = ';', index = False)

Но, когда файл df становится тяжелым, в каком-то месте в закодировать поток из цикла, исчерпавшего память, потому что мне нужно выполнить несколько операций, таких как ожидание появления элементов с помощью pg.locateOnScreen, и скопировать и вставить данные, выбирая с помощью мыши, есть ли способ очистить данные из переменной и не потерять индекс или заказ? Мне нужно, чтобы для ВСЕХ данных УДАЛЕННЫЕ ДАННЫЕ были в той же строке, но в другом столбце, не знаю, есть ли способ сделать это

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