Введение
В анализе данных первым шагом часто является загрузка данных в структурированный формат. 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.
Это фундаментальные операции, которые являются отправной точкой практически для любой задачи анализа данных. Обладая этими навыками, вы теперь лучше подготовлены к решению различных задач импорта данных.



