Узнайте, как читать файл 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()
- чрезвычайно мощный и гибкий инструмент, который можно адаптировать к различным ситуациям реального мира, чтобы начать сбор и анализ данных.
Спасибо, что нашли время прочитать нашу историю - мы надеемся, что вы сочли ее полезной.