Код #Статьи

26 ноября, 2025

Пандас в действии: ключевые концепции и практические данные

Изучаем библиотеку Pandas и начинаем наш путь в мир анализа данных.

Откройте для себя мир data science на бесплатном курсе Изучите три ключевых направления в data science и определите свою будущую специализацию Получите полезные подарки, развивая свои навыки в области данных

Узнать больше

Python применяется в области анализа данных и машинного обучения, при этом к нему интегрируются разнообразные библиотеки, такие как Pandas, Matplotlib, NumPy, TensorFlow и многие другие. Каждая из этих библиотек предназначена для выполнения определенных задач.

В сегодняшнем обсуждении мы сосредоточимся на библиотеке Pandas: выясним, какую роль она играет, как её можно импортировать в среду Python, а также проведем анализ нашего первого набора данных, чтобы определить, в каких странах скорость интернета наивысшая, а в каких — наименьшая.

Назначение библиотеки Pandas в языке Python

Pandas является ключевой библиотекой в Python, предназначенной для обработки данных. Она широко применяется специалистами в области анализа данных и науки о данных. Созданная в 2008 году компанией AQR Capital, в 2009 году библиотека перешла в статус проекта с открытым исходным кодом и получила поддержку обширного сообщества разработчиков.

Вот для каких целей применяется данная библиотека.

Анализ данных охватывает различные области, такие как продуктовая и маркетинговая аналитика, а также множество других направлений. Для работы с любыми наборами данных требуется тщательный анализ и подготовка: нужно устранять или заполнять пропуски, фильтровать, сортировать или иначе модифицировать информацию. Библиотека Pandas в Python предоставляет возможность эффективно выполнять все эти задачи и, в большинстве случаев, автоматизировать их процесс.

Научные исследования в области данных и обработка объемных массивов информации. Библиотека Pandas служит инструментом для предварительной обработки и анализа данных, что позволяет впоследствии применять их в задачах машинного и глубокого обучения.

Статистические методы. Библиотека предлагает набор ключевых статистических инструментов, необходимых для анализа данных. К числу таких методов относятся, например, вычисление средних значений, их распределение по квантилям и множество других подходов.

Работа с Pandas

В сфере анализа данных и машинного обучения часто применяют специализированные инструменты, такие как Google Colab и Jupyter Notebook. Эти интегрированные среды разработки (IDE) предоставляют возможность проводить работу с данными поэтапно и итеративно, при этом не требуя создания полноценного приложения.

В данном материале мы рассмотрим Google Colab — облачную платформу для анализа данных, доступную через браузер на различных устройствах: от настольных компьютеров и ноутбуков до планшетов и смартфонов.

Скриншот: Pandas / Skillbox Media

Каждая строка программного кода, представленная на экране, соответствует определённому действию, результат которого мгновенно отображается для пользователя в Google Colab и Jupyter Notebook. Это особенно удобно для работы с задачами, связанными с аналитикой и наукой о данных.

При использовании Jupyter Notebook или Google Colab нет необходимости устанавливать библиотеку Pandas, так как она уже входит в стандартный пакет и будет доступна сразу после открытия среды. Вам лишь нужно будет импортировать её в ваш код.

pd — это широко используемое сокращение для библиотеки Pandas в программировании. Оно появляется в литературе, статьях и образовательных материалах. Рекомендуется применять его и в ваших собственных проектах, чтобы избежать необходимости писать полное название pandas.

Series и DataFrame

В библиотеке Pandas информация может быть организована в двух основных форматах: Series и DataFrame. Давайте подробнее рассмотрим каждый из этих типов.

Серия представляет собой структуру данных, напоминающую одномерный массив, способную хранить элементы различных типов. Наиболее наглядно её можно представить в виде столбца таблицы, где значения располагаются в последовательном порядке, а каждому из них соответствует индекс, который указывает на номер строки.

Давайте создадим элементарный объект Series:

Давайте отобразим это на экране.

Скриншот: Pandas / Skillbox Media

Серия представлена в формате таблицы, где в первом столбце находятся индексы элементов, а во втором — соответствующие им значения.

DataFrame является ключевым структурным элементом в библиотеке Pandas, на основе которого осуществляется вся работа с данными. Его можно представить как стандартную таблицу, состоящую из множества столбцов и строк. В ячейках данной «таблицы» могут находиться данные различных типов, включая числовые значения, логические переменные, текст и многое другое.

DataFrame включает как индексы строк, так и индексы столбцов. Эта структура делает процесс сортировки и фильтрации данных более комфортным, а также способствует быстрому поиску необходимых ячеек.

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

Давайте оценим итог.

Скриншот: Pandas / Skillbox Media

На таблице представлены строки, индексируемые от 0 до 3, в то время как названия столбцов служат их индексами. Ясно, что этот датафрейм включает три Series: Город, Год основания и Население. Оба вида индексов предоставляют возможность для навигации по информации.

Импорт данных

Pandas предоставляет множество методов для импорта данных. К примеру, можно загружать информацию из словарей, списков или кортежей. Тем не менее, наиболее распространённым вариантом является работа с файлами формата .csv, которые широко используются в аналитике данных. Для их загрузки применяется функция pd.read_csv().

Функция read_csv предоставляет пользователям ряд параметров, которые позволяют контролировать процесс импорта данных.

  • Параметр sep дает возможность явно задать символ, который служит разделителем в импортируемом документе. По умолчанию он установлен на запятую, что соответствует стандартному разделителю в файлах формата .csv. Этот параметр оказывается особенно полезным, когда в исходном файле используются нестандартные разделители, такие как табуляция или точка с запятой.
  • dtype предоставляет возможность задать тип данных для столбцов после импорта файла в формате .csv. Эта функция особенно актуальна, когда автоматическое определение формата данных прошло неудачно. К примеру, даты нередко загружаются как строковые переменные, несмотря на наличие специального типа данных для них.

В документации приведены детальные параметры, которые помогут вам правильно настроить процесс импорта файлов в формате CSV.

Импортируем набор данных, который содержит сведения о скорости мобильного и стационарного интернета в различных странах. Мы загрузим этот готовый датасет с платформы Kaggle, он представлен в формате .csv. Параметры для функции read_csv указывать не будем, поскольку данные уже подготовлены для проведения анализа.

Давайте обратим внимание на сформированный датафрейм:

Важно!

При использовании Google Colab или Jupyter Notebook для отображения DataFrame или Series не требуется применять команду print. Библиотека Pandas способна выводить данные и без неё. В случае, если вы используете print (df), то форматирование таблицы будет нарушено. Попробуйте продемонстрировать данные двумя различными способами и оцените полученные результаты.

На дисплее возникла следующая таблица:

Скриншот: Pandas / Skillbox Media

В начале датафрейма располагаются заголовки столбцов: country (страна), broadband (средняя скорость интернета) и mobile (средняя скорость мобильного интернета). Слева от них находятся индексы, которые варьируются от 0 до 176, что в сумме составляет 177 строк. Эта информация также представлена в нижней части таблицы, как это принято в Pandas.

Нет необходимости выводить всю таблицу целиком. Для ознакомления с данными достаточно просмотреть первые пять или последние пять строк. Это можно реализовать с помощью функций df.head() и df.tail(). В скобках можно задать количество строк для отображения, причем по умолчанию этот параметр установлен на 5.

Результат:

Скриншот: Pandas / Skillbox Media

Это значительно упрощает задачу. Мы можем мгновенно ознакомиться с заголовками столбцов и типами данных, представленных в них. Кроме того, в некоторых ячейках встречается значение NaN, к которому мы вернёмся чуть позже.

Анализируем и интерпретируем собранные данные

Теперь нам предстоит проанализировать импортированные данные. Будем действовать поэтапно.

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

На дисплее отобразится таблица, в которой будет указано, какой тип данных представлен в каждом столбце датафрейма.

Скриншот: Pandas / Skillbox Media

Что мы видим:

  • Столбец country имеет тип данных object. Этот тип предназначен для хранения строковых значений и смешанных данных.
  • Столбцы broadband и mobile имеют тип данных float, что означает, что они представляют собой числа с плавающей запятой.

Этап 2. На данном этапе необходимо оперативно проанализировать информацию и сформулировать предварительные выводы. Это можно сделать с легкостью, используя метод describe(), который предоставляется в библиотеке Pandas. Данный метод выводит средние значения с учетом стандартного отклонения, а также максимумы и минимумы переменных, а также их распределение по квантилям.

Давайте рассмотрим, как этот метод работает на практике:

Результат:

Скриншот: Pandas / Skillbox Media

Давайте разберём каждую строку подробно.

  • Слово «count» обозначает число заполненных строк в каждом из столбцов. Обращая внимание на столбец, содержащий информацию о скорости мобильного интернета, можно заметить наличие пропусков.
  • Среднее значение скорости интернета, как проводного, так и мобильного, указывает на то, что в большинстве стран мобильный интернет оказывается медленнее своего кабельного аналога.
  • Стандартное отклонение, обозначаемое как std, является ключевым статистическим показателем, который отражает степень вариативности значений в наборе данных.
  • min и max обозначают соответственно минимальные и максимальные значения.
  • Значения скорости интернета на уровнях 25%, 50% и 75% представляют собой процентильные показатели. Говоря проще, процентиль — это показатель, который иллюстрирует, как распределены значения в определенной выборке. К примеру, в наборе данных о мобильной связи 25-й процентиль указывает на то, что 25% всех зарегистрированных скоростей интернета ниже 24,4.

Имейте в виду, что данный метод применим исключительно к числовым данным. Столбец, содержащий названия стран, не заполнен информацией.

Какой итог можно подвести? В большинстве государств проводной интернет демонстрирует более высокие скорости по сравнению с мобильным. Однако в 75% случаев скорость проводного интернета не превышает 110 Мбит/с, в то время как мобильный интернет достигает показателя в 69 Мбит/с.

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

  • Столбец, по которому осуществляется сортировка, необходимо обязательно обрамить одинарными или двойными кавычками.
  • Параметр ascending= определяет способ сортировки. Если нашей целью является упорядочивание значений в порядке убывания, мы задаем этому параметру значение False. В случае, когда необходимо отсортировать данные в порядке возрастания, следует установить значение True.

Перейдём к коду:

Результат:

Скриншот: Pandas / Skillbox Media

Теперь обновился рейтинг стран, и в пятёрке лидеров произошли изменения, так как мы пересмотрели порядок сортировки данных. В результате мы установили, что самым быстрым мобильным интернетом обладает Объединённые Арабские Эмираты.

Однако существует один важный момент. Если вернуться к исходной таблице, где данные организованы по скорости проводного интернета, можно увидеть, что у Монако, занимающего первую строчку, во втором столбце указано значение NaN.

В Python значение NaN обозначает недостающие данные. Это означает, что в представленном наборе данных отсутствует информация о скорости мобильного интернета в Монако, что затрудняет формирование четкого представления о мировых лидерах в сфере мобильной связи.

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

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

Результат:

Скриншот: Pandas / Skillbox Media

После удаления пустых значений количество строк в датафрейме сократилось до 136. Если вернуться ко второму этапу анализа, можно заметить, что это число совпадает с количеством непустых записей в столбце mobile в исходном датафрейме.

Создадим новый датафрейм, который назовем df_without_nan, чтобы сохранить полученный результат. При этом постараемся оставить исходный DataFrame без изменений, поскольку он может пригодиться в дальнейшем.

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

Результат:

Скриншот: Pandas / Skillbox Media

Наименьшее качество мобильного интернета наблюдается в Афганистане, на втором месте по отставанию расположились Палестина и Венесуэла.

Способы изменения и редактирования датафрейма

Помимо работы с уже имеющимся датафреймом, у нас есть возможность модифицировать его в соответствии с нашими потребностями: мы можем добавлять новые записи, удалять старые, агрегировать информацию и выполнять другие операции.

Восстановим исходное состояние нашего DataFrame. Для этого повторно загрузим CSV-файл с датасетом:

Давайте обратим внимание на датафрейм:

Давайте проверим, все ли данные присутствуют:

Скриншот: Pandas / Skillbox Media

В списке приведены 177 стран, включая те, для которых отсутствует информация о скорости интернета.

В наш датафрейм мы внесем новую страну. Поскольку в списке уже значатся 177 государств, давайте добавим Галактическую Республику из вселенной «Звёздных войн».

Чтобы внести данные в датафрейм, применяется метод concat.

Давайте рассмотрим код по строкам:

  • В первую очередь мы формируем словарь, в котором будут собраны данные о странах, включая информацию о среднем уровне интернет-скорости и скорости мобильного интернета.
  • С помощью конструктора pd.DataFrame мы преобразуем словарь в датафрейм.
  • Используя метод concat, мы соединяем исходный датафрейм с новым, который находится в new_list. При этом важно задать параметр ignore_index=True, чтобы новая строка оказалась в начале.

Проверим результат:

Скриншот: Pandas / Skillbox Media

Все удалось. Галактическая Республика теперь значится в нашем списке.

В библиотеке Pandas для удаления строк используется метод drop. Давайте воспользуемся им, чтобы убрать страну, которой на самом деле нет, и которую мы ранее добавили в наш датафрейм:

Методу передаются два аргумента:

  • Индексы строк, которые подлежат удалению, в данном примере представляют собой строку с индексом 0. Если требуется удалить сразу несколько строк, необходимо передать их индексы в виде списка, например, [0, 1, 2].
  • Параметр inplace=True сбрасывает индексы, таким образом, первая строка после удаления получает индекс 0.

Давайте запустим код и посмотрим на результаты в виде датафрейма:

Скриншот: Pandas / Skillbox Media

Галактическая Республика прекратила свое существование. Датафрейм восстановил свое первоначальное состояние.

В некоторых случаях возникает необходимость найти конкретную строку в датафрейме. Существует два подхода для выполнения этой задачи: можно воспользоваться индексным значением или обратиться к индексу. Давайте рассмотрим оба этих метода.

Фильтрация осуществляется на основе индексных значений, которые представлены в первом столбце датафрейма. В данном контексте индексные значения варьируются от 0 до 177.

Давайте отобразим на экране государства, которые имеют индексные значения 10 и 11.

Обращаем внимание на итог:

Скриншот: Pandas / Skillbox Media

Фильтрация данных по индексам. В датафрейме индексация начинается с нуля. Рассмотрим, как извлечь данные о странах с индексами от 5 до 8. Для этой операции применяется метод iloc.

Оцениваем итог:

Скриншот: Pandas / Skillbox Media

Мы извлекли часть списка, начиная с 6-го и заканчивая 8-м элементом. Следует отметить, что индексы и значения строк не совпадают.

Давайте отобразим лишь те государства, в которых скорость мобильного интернета превышает 100 Мбит/с.

В итоге была составлена таблица, включающая 18 государств:

Скриншот: Pandas / Skillbox Media

Важно!

Применяя данный метод, можно сохранить индексные значения исследуемого датафрейма.

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

Для вычисления среднего показателя интернет-скорости по всем странам используем функцию agg, в которую передадим параметр mean.

Результат:

Скриншот: Pandas / Skillbox Media

Средняя скорость интернета в различных странах составляет 72,67 Мбит/с.

По окончании работы с редактированием датафрейма у вас есть возможность сохранить его в формате CSV или выбрать другой подходящий формат.

Сохранённый документ будет доступен по указанному адресу.

Важно!

При применении данного подхода индексные значения исследуемого датафрейма остаются неизменными.

Что дальше?

Pandas является одной из наиболее эффективных библиотек для анализа данных в Python. В данной статье мы рассмотрели основные операции, которые можно выполнять с её помощью. Более детальную информацию о функционале библиотеки можно найти в официальной документации. Для более глубокого изучения работы с Pandas рекомендуем ознакомиться с специализированной литературой:

  • Книга «Изучаем pandas», авторы которой — Майкл Хейдт и Артём Груздев, представляет собой увлекательное и полезное руководство по работе с библиотекой pandas.
  • «Размышления о Pandas: Как правильно использовать библиотеку анализа данных на Python», автор Ханна Степанек.
  • «Практический анализ данных с помощью Pandas: Эффективное выполнение сбора, обработки, анализа и визуализации данных с использованием Python», автор Стефани Молин.

Читайте также:

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

    Существует несколько типов библиотек, каждая из которых предназначена для определенных нужд. Например, библиотека стандартных функций языка программирования содержит базовые инструменты, необходимые для выполнения простых операций. Другие могут быть специализированными, предлагая функциональность для работы с графикой, сетевыми подключениями или обработкой данных.

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

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

  • Тест: определите, какие из представленных языков программирования являются эзотерическими, а какие — нет.
  • Начало изучения программирования на Python: краткое руководство.