Узнайте, как читать файл CSV и создавать фрейм данных Pandas

Введение

Как аналитику данных или специалисту по анализу данных вам часто придется комбинировать и анализировать данные из различных источников. Тип данных, который меня обычно просят проанализировать, - это файлы CSV. Файлы CSV популярны в корпоративном мире, поскольку они могут обрабатывать мощные вычисления, просты в использовании и часто являются типом вывода для корпоративных систем. Сегодня мы продемонстрируем, как использовать Python и Pandas для открытия и чтения CSV-файла на вашем локальном компьютере.

Начиная

Вы можете установить Panda через pip из PyPI. Если вы впервые устанавливаете пакеты Python, см. Объяснение серии Pandas и DataFrame или Python Pandas Iterating a DataFrame. Обе эти статьи содержат инструкции по установке и базовые знания для сегодняшней статьи.

Синтаксис

Самым сложным для меня при изучении Pandas было количество руководств по функциям Pandas, таким как .read_csv(). Однако в учебных пособиях, как правило, упускаются тонкости, необходимые при работе с реальными данными. Вначале мне часто приходилось задавать вопросы в StackOverflow, чтобы узнать, как применять определенные параметры. Ниже мы включили все параметры вместе с примерами для более концептуально сложных.

Приведенный выше синтаксис сначала может показаться сложным; однако мы бы установили только несколько параметров, поскольку большинству из них присваиваются значения по умолчанию. Тем не менее, количество параметров свидетельствует о мощном и гибком характере Pandas .read_csv().

Параметры

  • filepath_or_buffer: вы можете передать строку или объект пути, который ссылается на файл CSV, который вы хотите прочитать. Параметр также принимает URL-адреса, указывающие на расположение на удаленном сервере.
  • sep & delimiter: Параметр delimiter является псевдонимом для sep. Вы можете использовать sep, чтобы указать Pandas, что использовать в качестве разделителя, по умолчанию это ,. Однако вы можете передать регулярное выражение, например \t, для данных с интервалом табуляции.
  • header: этот параметр позволяет передавать целое число, которое фиксирует, в какой строке находятся имена заголовков CSV. По умолчанию для header установлено значение infer, что означает, что Pandas будет брать заголовки из строки 0. Если вы намереваетесь переименовать заголовки по умолчанию, установите для header значение 0.
  • name: Здесь у вас есть возможность переопределить заголовки столбцов по умолчанию. Для этого сначала установите header=0, а затем передайте массив, содержащий имена новых столбцов, которые вы хотите использовать.
  • index_col: Для тех из вас, кто плохо знаком с объектом DataFrame, каждая строка DataFrame имеет метку, известную как индекс. Вы можете передать имя столбца или целое число, если CSV-файл содержит столбец, представляющий индекс. В качестве альтернативы вы можете передать False, чтобы Pandas не использовал индекс из вашего файла. Если передано False, Pandas создаст индекс, используя последовательность возрастающих целых чисел.
  • usecols: этот параметр можно использовать для возврата подмножества всех столбцов в файле. По умолчанию для usecols установлено значение None, что приведет к тому, что Pandas вернет все столбцы в DataFrame. Это удобно, когда вас интересует только обработка определенных столбцов.
  • squeeze: При работе с CSV-файлом с одним столбцом вы можете установить для этого параметра значение True, которое будет указывать Pandas возвращать Series, а не DataFrame. Если вы не знакомы с серией Pandas, вы можете обратиться к Pandas Series & DataFrame Explained для обзора.
  • prefix: Здесь вы можете установить префиксы меток столбцов, если вы не указали их. По умолчанию, когда столбцы не указаны, для их обозначения используется целочисленная последовательность. Используя этот параметр, вы можете установить столбцы 0, 1 и 2 на column_0, column_1 и column_2.
  • mangle_dupe_cols: Если CSV-файл, который вы читаете, содержит столбцы с одинаковыми именами, Pandas добавит целочисленный суффикс к каждому дубликату. В будущем mangle_dupe_cols будет принимать False, в результате чего повторяющиеся столбцы будут перезаписывать друг друга.
  • dtype: этот параметр можно использовать для передачи словаря, который будет иметь имена столбцов в качестве ключей и типы данных в качестве их значений. Я нахожу это удобным, когда у вас есть CSV с начальными нулевыми целыми числами. Установка правильного типа данных для каждого столбца также повысит общую эффективность при работе с DataFrame.
  • engine: В настоящее время Pandas принимает c или python в качестве механизма синтаксического анализа.
  • converters: Это следует той же логике, что и dtype, однако вместо передачи типов данных вы можете передавать функции, которые будут управлять значениями в определенных столбцах при чтении.
  • true_values & false_values: Этот параметр довольно изящный. Скажем, например, в вашем CSV у вас есть столбец, содержащий yes и no, вы можете сопоставить эти значения с True и False. Это позволит вам очистить некоторые данные при чтении файла в Pandas.
  • skipinitialspace: вы можете установить для этого параметра значение True, чтобы сообщить Pandas, что могут быть строки с ведущими пробелами после разделителя. Затем Pandas удалит любые ведущие пробелы после разделителя и перед любым символом, не являющимся разделителем.
  • skiprows: При работе с файлами CSV, созданными системой, иногда файл может содержать строки параметров в начале файла. Часто мы не хотим обрабатывать эти строки, вместо этого мы их пропускаем. Вы можете установить skiprows в целое число, которое укажет количество строк, которые нужно пропустить перед началом чтения. В качестве альтернативы вы можете предоставить вызываемый объект, который заставит Pandas пропустить строку, когда функция оценивается как True.
  • skipfooter: Подобно skiprows, этот параметр позволяет указать Pandas, сколько строк нужно пропустить в конце файла. Опять же, это удобно, если параметры отчета находятся в конце файла CSV.
  • nrows: вы можете использовать это, чтобы установить ограничение на количество строк, собираемых из файла CSV. Я нахожу это удобным на этапе исследования, когда пытаюсь нащупать данные. Это означает, что вы можете проверить свою логику, не загружая большие файлы в память.
  • na_values: По умолчанию в Pandas есть обширная коллекция значений, которые сопоставляются с NaN (не числом). Если у вас есть значения для конкретного приложения, которые необходимо очистить и сопоставить, вы можете передать их этому параметру. Использование этого параметра означает, что вы можете захватить все NaN значения, которые могут быть сопоставлены с предварительной обработкой по умолчанию.
  • keep_default_na: этот параметр может иметь значение True или False. Если False и CSV содержит значения по умолчанию NaN, тогда Pandas сохранит исходное значение NaN. Если True Pandas проанализирует значение NaN и замаскирует с помощью NaN в DataFrame.
  • na_filter: вы можете установить это значение True, если хотите, чтобы Pandas интерпретировал ваши данные на предмет отсутствующих значений. В качестве подсказки установите для этого параметра значение False при чтении больших файлов, в которых, как вы знаете, нет пропущенных значений.
  • verbose: по умолчанию установлено значение False. Если задать для verbose значение True, на консоль будут выводиться дополнительные данные, такие как количество NaN значений или время, которое потребовалось для определенных процессов.
  • skip_blank_lines: Иногда данные, которые мы получаем, могут содержать пустые строки. Установив skip_blank_lines на True, Pandas будет пропускать эти строки, а не считать их как NaN значения.
  • parse_dates: используйте этот параметр, чтобы сообщить Pandas, как вы хотите интерпретировать даты в файле CSV. Вы можете передать True, что заставит Pandas проанализировать индекс как дату. В качестве альтернативы вы можете передать имя столбца или список столбцов, которые Pandas будет использовать для создания даты.
  • infer_datetime_format: вы можете установить для этого параметра значение True, которое укажет Pandas вывести формат даты и времени. Это приведет к увеличению скорости обработки в сочетании с parse_dates.
  • keep_date_col: если вы установили значение для parse_dates, вы можете использовать этот параметр, чтобы сохранить столбцы, в которых были созданы данные. По умолчанию эти столбцы оставляются на месте. Если вы не хотите, чтобы это происходило, установите keep_date_col на True.
  • date_parser: Если вы уже знаете формат даты в своем CSV-файле, вы можете передать функцию date_parser для эффективного форматирования даты и времени вместо того, чтобы определять формат.
  • dayfirst: передайте True, если ваш формат даты и времени DD/MM.
  • cache_dates: по умолчанию установлено значение True. Pandas создаст уникальный набор преобразования строк даты и времени, чтобы ускорить преобразование повторяющихся строк.
  • iterator: установка этого параметра на True позволит вам вызвать функцию Pandas .get_chunk(), которая вернет количество записей для обработки.
  • chunksize: это позволит вам установить размер фрагментов в DataFrame. Это удобно, поскольку вы можете выполнить цикл с частью DataFrame вместо ленивой загрузки всего DataFrame в память.
  • compression: Если данные, которые вы читаете, сжаты на диске, вы можете установить тип сжатия для распаковки «на лету».
  • thousands: это символ-разделитель для единицы тысяч. В файлах CSV иногда можно увидеть миллион, представленный как 1_000_000, поскольку , используется в качестве разделителя. Установка тысяч в _ приведет к тому, что 1_000_000 будет отражаться как 1000000.
  • decimal: вы можете указать символ, представляющий десятичные дроби в файле CSV, если он отличается от ..
  • lineterminator: если вы установили engine на c, вы можете использовать этот параметр, чтобы сообщить Pandas, какой символ вы ожидаете использовать в строках.
  • quotechar: это символ, который используется в вашем CSV-файле и обозначает начало и конец указанного в кавычках элемента.
  • quoting: Здесь вы можете установить уровень цитирования, который вы хотите применить к вашим элементам, если таковые имеются. По умолчанию это 0, что означает минимальное цитирование; вы также можете установить это значение: 1 - цитировать все, 2 - цитировать нечисловые или 3 - не указывать.
  • doublequote: вы можете использовать этот параметр, чтобы указать Pandas, что делать, когда в элементе цитаты появляются два символа кавычек. Когда передается True, символы двойных кавычек станут символами одинарных кавычек.
  • escapechar: строка длины один, которую Pandas будет использовать для экранирования других символов.
  • comment: этот параметр можно использовать, чтобы указать, что вы не хотите обрабатывать оставшуюся часть строки. Например, если comment был установлен в # и # появился в текущей строке, Pandas переместится на следующую строку после достижения #.
  • encoding: Если вы используете данные, отличные от английского, установите для этого значения определенную кодировку символов, чтобы данные могли быть правильно прочитаны.
  • dialect: Диалект CSV - это набор параметров, которые сообщают синтаксическому анализатору CSV, как читать файл CSV. Общие диалекты включают excel, excel-tab и unix, кроме того, вы можете создать свой собственный и передать его Pandas.
  • error_bad_lines: Если Pandas встречает строку с двумя атрибутами, обычно возникает исключение, и Python останавливает выполнение. Если вы передадите False в error_bad_lines, то любые строки, которые обычно вызывают этот тип исключения, будут удалены из DataFrame.
  • warn_bad_lines: Если вы установили error_bad_lines на False, вы можете установить warn_bad_lines на True, который будет выводить каждую строку, которая могла бы вызвать исключение.
  • delim_whitespace: этот параметр похож на delimiter, но зависит только от пробелов. Если вы хотите использовать пробелы в качестве разделителя, вы можете установить delimiter на \s+ или delim_whitespace на True.
  • low_memory: По умолчанию в Pandas для этого параметра установлено значение True, что приводит к фрагментированной обработке, однако существует риск вывода несовпадающих типов. Вы можете избежать возможного несоответствия типов, установив параметр dtype.
  • memory_map: Если вы передали файл filepath_or_buffer, Pandas отображает объект файла в памяти, чтобы повысить его эффективность при обработке больших файлов.
  • float_precision: Здесь вы можете установить соответствующий преобразователь для двигателя c для поплавковых элементов.
  • storage_options: этот параметр можно использовать для передачи определенных параметров при чтении файла CSV из удаленного места.

Куда дальше

Теперь, когда вы разобрались с тем, как использовать Pandas .read_csv(), мы порекомендуем узнать больше о структурах данных Pandas через Pandas Series & DataFrame Explained или узнать, как перемещаться по DataFrame в Python Pandas Iterating a DataFrame. Если вы уже знакомы с этими концепциями, следующим шагом должно стать чтение Вращение фрейма данных Pandas или Как объединить Python, Pandas и XlsxWriter.

Резюме

Изучение использования Pandas .read_csv() - важный навык, которым вы должны обладать как аналитик данных, чтобы комбинировать различные источники данных. Как вы видели выше, .read_csv() - чрезвычайно мощный и гибкий инструмент, который можно адаптировать к различным ситуациям реального мира, чтобы начать сбор и анализ данных.

Спасибо, что нашли время прочитать нашу историю - мы надеемся, что вы сочли ее полезной.