Pandas: Чтение внешних данных

PandasBeginner
Практиковаться сейчас

Введение

В анализе данных первым шагом часто является загрузка данных в структурированный формат. Pandas, мощная библиотека Python, отлично справляется с этой задачей. Наиболее распространенной функцией для чтения данных из плоских файлов, таких как CSV, является pandas.read_csv(). Эта функция невероятно гибка и предлагает широкий спектр параметров для работы с различными форматами файлов и потенциальными проблемами.

В этой лабораторной работе вы научитесь использовать pd.read_csv() для импорта данных из CSV-файла в Pandas DataFrame. Мы рассмотрим, как обрабатывать комментарии, указывать заголовки, управлять пропущенными значениями и выполнять первоначальный осмотр загруженных данных.

Чтение CSV-файла с помощью read_csv

На этом шаге вы изучите базовое использование функции pd.read_csv() для загрузки данных из CSV-файла в Pandas DataFrame.

В нашем каталоге проекта ~/project находится файл с именем data.csv. Давайте рассмотрим его содержимое. Он включает несколько строк комментариев в начале, которые начинаются с символа #. Функция read_csv может быть настроена на игнорирование этих строк с помощью параметра comment.

Сначала откройте файл main.py из файлового проводника слева. Мы будем писать наш Python-код в этом файле.

Добавьте следующий код в main.py для импорта Pandas и чтения файла data.csv. Мы присвоим полученный DataFrame переменной df, а затем выведем ее на печать.

import pandas as pd

## Читаем CSV файл, рассматривая строки, начинающиеся с '#' как комментарии
df = pd.read_csv('data.csv', comment='#')

## Выводим DataFrame на печать
print(df)

Теперь, чтобы запустить скрипт, откройте терминал в WebIDE (вы можете использовать меню Terminal > New Terminal) и выполните следующую команду:

python3 main.py

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

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          NaN
4   5      Eve           22        Paris

Указание строки заголовка в read_csv

На этом шаге мы изучим параметр header функции read_csv.

По умолчанию read_csv предполагает, что первая строка файла, не являющаяся комментарием и не пропущенная, является строкой заголовка, содержащей имена столбцов. В нашем файле data.csv после пропуска строк комментариев строка id,name,age,city корректно определяется как заголовок.

Параметр header позволяет явно указать, какую строку использовать в качестве заголовка. Он принимает целое число, представляющее индекс строки (начиная с 0). Поскольку первая строка данных (после комментариев) является нашим заголовком, ее индекс равен 0.

Давайте изменим файл main.py, чтобы явно установить header=0. Хотя в нашем случае это поведение по умолчанию, явное указание может предотвратить ошибки с файлами необычного формата.

Обновите ваш main.py следующим кодом:

import pandas as pd

## Явно указываем, что первая строка (индекс 0) после комментариев является заголовком
df = pd.read_csv('data.csv', comment='#', header=0)

print(df)

Снова запустите скрипт из терминала:

python3 main.py

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

   id     name          age         city
0   1    Alice           25     New York
1   2      Bob           30  Los Angeles
2   3  Charlie  Not Available       London
3   4    David           35          N/A
4   5      Eve           22        Paris

Обработка пропущенных значений с помощью параметра na_values

На этом шаге вы научитесь обрабатывать пользовательские представления пропущенных данных.

Если вы посмотрите на DataFrame из предыдущего шага, вы увидите значения "Not Available" в столбце age и NaN в столбце city. Pandas автоматически распознает некоторые распространенные индикаторы пропущенных значений, такие как пустые строки, NA или N/A, но не пользовательские, такие как "Not Available". Мы можем использовать параметр na_values для предоставления списка строк, которые должны интерпретироваться как NaN (Not a Number), что является стандартным маркером Pandas для пропущенных данных.

Измените ваш main.py, чтобы включить параметр na_values.

import pandas as pd

## Определяем список строк, которые будут считаться пропущенными значениями
missing_values = ["Not Available", "N/A"]

## Читаем CSV, указывая пользовательские пропущенные значения
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

print(df)

Теперь запустите скрипт:

python3 main.py

Обратите внимание на новый вывод. Строка "Not Available" была заменена на NaN.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London
3   4    David  35.0          NaN
4   5      Eve  22.0        Paris

Обратите внимание, что тип данных столбца age также изменился на float64 для размещения значения NaN.

Отображение первых строк с помощью метода head

На этом шаге мы научимся просматривать первые несколько строк DataFrame.

При работе с большими наборами данных вывод всего DataFrame неэффективен и может загромождать экран. Метод .head() — это удобный способ быстрого предварительного просмотра ваших данных. По умолчанию он возвращает первые 5 строк.

Вы также можете передать целое число в .head(), чтобы указать количество строк, которое вы хотите увидеть. Давайте отобразим только первые 3 строки нашего DataFrame.

Обновите ваш файл main.py следующим образом. Вместо вывода всего DataFrame мы теперь выведем только его начало.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Отображаем первые 3 строки DataFrame
print(df.head(3))

Выполните скрипт из вашего терминала:

python3 main.py

Вывод теперь будет намного короче, показывая только заголовок и первые три записи.

   id     name   age         city
0   1    Alice  25.0     New York
1   2      Bob  30.0  Los Angeles
2   3  Charlie   NaN       London

Проверка формы DataFrame с помощью атрибута shape

На этом шаге вы научитесь проверять размеры вашего DataFrame.

Знание количества строк и столбцов является фундаментальной проверкой при анализе данных. Объекты Pandas DataFrame имеют атрибут .shape, который возвращает кортеж, содержащий количество строк и столбцов.

Обратите внимание, что .shape — это атрибут, а не метод, поэтому при доступе к нему вы не используете скобки ().

Давайте изменим main.py, чтобы вывести форму нашего DataFrame.

import pandas as pd

missing_values = ["Not Available", "N/A"]
df = pd.read_csv('data.csv', comment='#', na_values=missing_values)

## Получаем размеры (строки, столбцы) DataFrame
df_shape = df.shape

print(df_shape)

Запустите скрипт в последний раз:

python3 main.py

Вывод будет представлять собой кортеж, указывающий, что наш DataFrame имеет 5 строк и 4 столбца.

(5, 4)

Резюме

Поздравляем с завершением этой лабораторной работы! Вы освоили основные навыки чтения и анализа данных с использованием Pandas.

В этой лабораторной работе вы научились:

  • Читать CSV-файл в DataFrame с помощью pd.read_csv().
  • Пропускать строки с комментариями с помощью параметра comment.
  • Явно определять строку заголовка с помощью параметра header.
  • Обрабатывать пользовательские пропущенные значения с помощью параметра na_values.
  • Предварительно просматривать DataFrame с помощью метода .head().
  • Проверять размеры DataFrame с помощью атрибута .shape.

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