проблемы с изоляцией столбца на основе того, что написано в нем в csv-файле с помощью Python

#python #csv #jupyter-notebook

#python #csv #jupyter-notebook

Вопрос:

У меня есть массивные CSV-файлы с более чем 12 миллионами строк и 4 столбцами, первый столбец предназначен только для упорядочения от 0 до 12 миллионов, второй содержит название региона, в котором находится эта вещь, третий — город (каждый город — это число) и 4-й столбец.у одного есть количество посетителей. Что я хотел бы сделать, так это построить третий и четвертый столбцы (один на x и один на y), но только для определенного региона, я перепробовал так много вещей, чтобы просто прочитать ту часть файла, в которой написано «Эссекс», но ничего не работает, второй столбец — эторегион, который меня интересует, называется «регион», это «Эссекс», любая помощь? Спасибо!

Комментарии:

1. Это звучит как простая задача? Откройте файл, передайте обработчик файла программе чтения csv, выполните итерацию по строкам, всякий раз, когда строка соответствует требованию, соберите ее (или запишите ее непосредственно в файл), затем запишите собранные строки в файл, который затем содержит только то, что вы хотите. Я что-то пропустил? Не могли бы вы добавить некоторые примеры данных к вашему вопросу?

Ответ №1:

Вам следует заглянуть в стандартную библиотеку под названием «csv«. Что-то вроде этого, чтобы заставить вас работать:

 import csv

with open("name of csv file") as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        # Check for Essex
        if row[1] == 'Essex':
            # Do whatever
            pass
  

В приведенном выше примере предполагается, что в вашем CSV-файле нет строки заголовка. Если у вас есть заголовок, вы можете пропустить его следующим образом:

 with open("name of csv file") as csvfile:
    # Read and skip a header line.
    header = csvfile.readline()
    reader = csv.reader(csvfile)
    for row in reader:
        # As above
  

или загляните в csv.DictReader() .

Комментарии:

1. Краткое дополнение: всегда рекомендуется уменьшать объем кода с отступами. Итак if row[1] != 'Essex': continue , вместо отступа важного кода.

2. Большое вам спасибо, это возвращает серию разделенных значений, что означает, что когда я пытаюсь построить строку [2] против строки [3] вместо одной большой гистограммы со многими столбцами, я получаю много разных гистограмм, как мне сгруппировать всю строку [2] вместе как x и всестрока [3] вместе как y, чтобы первое значение x совпадало с первым значением y и так далее, так что извините за это, я очень новичок в Python, большое вам спасибо