1 of 22

Основы программирования с Pandas

2 of 22

Установка Pandas

VS Code / PyCharm

В терминале пропишите:

pip install pandas

Python IDLE

Нажмите Win+R, напишите cmd

Пропишите: pip install pandas

3 of 22

Что такое объекты Series и DataFrame

В библиотеке pandas определены два основных класса объектов для работы с данными:

Класс

Описание

Структура

Series

Одномерный массив, способный хранить значения любого типа. По своей структуре напоминает словарь: каждому значению присваивается метка (индекс)

Столбец

DataFrame

Двумерная таблица, в которой строки и столбцы имеют имена. Каждый столбец — это объект класса Series

Вся таблица

4 of 22

Создание Series

Создать Series можно с помощью конструктора:

s = pd.Series(data, index=index)

Параметры:

data — может быть массивом numpy, словарём или скаляром (числом)

index — список меток, по умолчанию это целые числа от 0 до n-1

5 of 22

Пример

Вывод

6 of 22

Создание Series

Если data — словарь, а index не задан, то в качестве меток используются ключи словаря:

Вывод

7 of 22

Индексация, срезы и арифметика�

Объекты Series поддерживают индексирование, срезы и математические операции:

Вывод

8 of 22

Фильтрация�

Можно использовать булевы условия для отбора значений:

Вывод

9 of 22

Атрибуты Series

У объекта Series есть полезные свойства:

Вывод

10 of 22

Создание и работа с DataFrame�

DataFrame — это таблица с именованными столбцами и индексами строк. Создать DataFrame можно из словаря списков:

Вывод

11 of 22

Индексы строк и столбцов�

У объекта DataFrame есть индексы по строкам и по столбцам. Их можно получить с помощью свойств index и columns:

Вывод

По умолчанию строки нумеруются от 0. При необходимости индексы можно переопределить вручную:

students.index = ["A", "B", "C"]

12 of 22

Индексы строк и столбцов

Каждый столбец DataFrame на самом деле представляет собой отдельный объект Series. Поэтому, если обратиться к одному столбцу по его имени, мы получим объект этого типа:

Вывод

Для доступа к строкам по индексам используют .loc[], включая срезы:

Вывод

13 of 22

Как фильтровать, сортировать и агрегировать данные

В pandas объект Series можно создать из массива numpy, словаря или даже одного значения. Параметр index задаёт метки осей (индексы) и передаётся в виде списка. Метками могут быть числа, но чаще — строки.

Если в качестве data используется массив numpy, длина index должна совпадать с числом элементов. Если индекс не задан, он формируется автоматически как последовательность от 0 до len(data) - 1:

Вывод

14 of 22

Как фильтровать, сортировать и агрегировать данные

Объект Series во многом напоминает словарь: каждому значению соответствует собственная метка.

Если data — это словарь, а index не задан, в качестве индексов будут использованы ключи словаря. Если index задан и содержит значения, которых нет среди ключей словаря, то в соответствующих ячейках будет стоять NaN — стандартное обозначение отсутствующих данных в pandas:

Вывод

15 of 22

Сортировка данных в Pandas

df.sort_values(by='column_name', ascending=True)

by: Название столбца (или список столбцов)

ascending:

True — по возрастанию (по умолчанию)

False — по убыванию

Пример:

students.sort_values(by='math_score')

name

math_score

reading_score

Вика

78

88

Анна

85

90

Глеб

88

82

Борис

92

85

16 of 22

Сортировка данных в Pandas

Важно запомнить

Метод

Результат

df.sort_values(...)

Возвращает новый DataFrame

df.sort_values(..., inplace=True)

Изменяет текущий DataFrame

df.sort_index()

Сортировка по индексу строк

17 of 22

Как считывать и сохранять данные в различных форматах (CSV, Excel, JSON)

CSV-файлы

Считывание: pd.read_csv("имя_файла.csv")

Сохранение: df.to_csv("имя_файла.csv")

Excel-файлы (формат 2007+)

Считывание: pd.read_excel("имя_файла.xlsx")

Сохранение: df.to_excel("имя_файла.xlsx")

JSON-файлы

Считывание: pd.read_json("имя_файла.json")

Сохранение: df.to_json("имя_файла.json")

18 of 22

Пример содержимого CSV-файла:

"gender","race/ethnicity","parental level of education","lunch","test preparation course","math score","reading score","writing score"

"female","group B","bachelor's degree","standard","none","72","72","74"

"female","group C","some college","standard","completed","69","90","88"

Получим датасет из CSV-файла с данными о студентах:

students = pd.read_csv("StudentsPerformance.csv")

Для получения первых n строк датасета используется метод head(n). По умолчанию возвращается пять первых строк.

Для получения последних n строк используется метод tail(n). По умолчанию возвращается пять последних строк.

19 of 22

Чтобы в таблицу добавить колонку, подойдёт метод assign(). Данный метод даёт возможность создавать колонки при помощи лямбда-функции.

20 of 22

Группировка и агрегирование данных

Метод groupby() позволяет сгруппировать записи по признаку. Например, узнаем, сколько студентов разного пола прошли подготовку:

print(students.groupby(["gender", "test preparation course"])["writing score"].count())

21 of 22

Задача

Создайте csv файл:

Найдите всех студентов, у которых хотя бы по одному из трёх предметов (math score, reading score, writing score) стоит 100 баллов.

Результат отсортируйте по убыванию math score.

gender

math score

reading score

writing score

female

72

72

74

female

69

90

88

male

100

95

97

male

85

100

90

22 of 22

Решение

import pandas as pd

# 1. Загружаем данные

students = pd.read_csv("StudentsPerformance.csv")

# 2. Фильтруем: хотя бы одна оценка равна 100

filtered = students[

(students['math score'] == 100) |

(students['reading score'] == 100) |

(students['writing score'] == 100)

]

# 3. Выбираем нужные столбцы

result = filtered[['gender', 'math score', 'reading score', 'writing score']]

# 4. Сортируем по математике (по убыванию)

result = result.sort_values('math score', ascending=False)

# 5. Выводим

print(result)