Сегодня мы продолжаем знакомство с Anaconda.
Подготовка к работе
Давайте начнем с вводных. У нас есть датасет, который мы скачали с сайта Kaggle.com, известной платформы для данных и машинного обучения. Этот датасет содержит информацию о клиентах магазина, включая их идентификаторы, пол, возраст, годовой доход и покупательную активность (spending score).
Файл датасета представляет собой CSV-файл (Comma-Separated Values) с разделителем запятаями. CSV-формат широко используется для хранения и обмена данными в табличной форме. Если бы мы попробовали открыть этот файл в текстовом редакторе или табличном процессоре, все данные были бы объединены в одну колонку. Однако Python может легко обработать CSV-файлы и разбить данные на столбцы для дальнейшего анализа.
Также у нас есть файл с расширением .ipynb. Это стандартное расширение для Jupyter Notebook. Эти файлы сохраняются в формате JSON и могут быть легко переносимыми между разными системами и устройствами.
Для решения этой аналитической задачи мы будем использовать Anaconda Navigator, включающую в себя Jupyter Notebook, а также Python. Мы создадим новое рабочее окружение, установим необходимые библиотеки (Pandas и Matplotlib) и выполним задачу.
Сначала мы создадим новое окружение в Anaconda Navigator и установим необходимые библиотеки. Затем мы загрузим и откроем Jupyter Notebook, где будем работать с датасетом и решать задачу.
Убедитесь, что вы следите за этим процессом, так как это важная часть аналитической работы с использованием Anaconda и Jupyter Notebook.
Загрузка библиотек
У нас есть настроенная среда для работы, но пока не доступна плашка с выбором рабочей среды (environment). Как только она станет доступной, мы выберем не базовую среду (base route), а уже созданную, с настройками и библиотеками для решения задачи.
Время, пока загружаются необходимые библиотеки, можно использовать для изучения данных, которые у нас есть. Обратите внимание, что из соображений безопасности данные анонимизированы, чтобы предотвратить утечку и неправильное использование.
Давайте поговорим о проекте и задачах, которые мы должны решить. В этом проекте мы будем сталкиваться с задачей визуализации данных, расчета статистических параметров и даже SQL-запросами для агрегации данных.
Теперь давайте перейдем к новой рабочей среде. Здесь мы видим все приложения, которые доступны. Однако Jupyter Lab пока не установлен. Я нажимаю "Install," и приложение начинает скачиваться из интернета.
Нашей основной задачей на этом уроке является научиться создавать и запускать Jupyter Notebooks. В этом блокноте, у меня есть разделы Markdown, в которых я комментирую и объясняю, что мы делаем. Также есть блоки с кодом, которые мы будем выполнять. Markdown-блоки представляют собой комментарии к коду и служат для описания процесса и целей.
После создания таких комментариев, мы можем перейти к выполнению блоков кода, чтобы увидеть результаты наших действий.
Создание Markdown-блоков просто - мы используем решетку для создания заголовков разных уровней, добавляем текст и описываем процесс.
Для загрузки данных и выполнения операций над ними мы будем использовать Pandas для обработки датасета и Matplotlib для построения точечных графиков. Важно удостовериться, что необходимые библиотеки установлены, и мы можем ими пользоваться.
Теперь давайте начнем работу с данными.
Работа с данными
После того как мы запустили запрос, и он успешно отработал, мы получили множество данных между первой и последней строкой.
Далее мы предпринимаем шаги, чтобы сделать нашу таблицу более удобной для работы. Мы присваиваем индексной колонке имя "customer ID" и убираем колонку с индексами, что делает работу с таблицей более удобной.
Затем мы переходим к анализу статистики данных в нашем датасете. Мы используем функцию describe
из библиотеки Pandas для вычисления средних значений, стандартного отклонения и процентилей для каждой из числовых метрик в нашем датасете.
Далее мы проводим работу с группировкой данных — вычисляем суммы и количество повторений годового дохода по возрастным группам. Затем мы строим фрейм данных (data frame) на основе этой информации и выводим первые 200 записей.
В завершение, давайте создадим точечный график распределения возраста по баллам "score," используя библиотеку Matplotlib. Сперва, определим оси X и Y, выберем тип графика и добавим названия осей и графика. В результате мы получили график, который показал, что у клиентов до 40 лет баллы "score" выше, чем у клиентов старше 40 лет.
Подводя итоги, мы видим, насколько удобно использование Jupyter Notebook для создания и запуска блокнотов. Мы можем легко комментировать код, описывать процесс, и выполнять код сигментами. Благодаря этому инструменту, мы можем эффективно работать над проектами, ведя все работы внутри одного инструмента.
Самостоятельная работа
Создайте новый Jupyter-notebook в Anaconda, добавьте библиотеки pandas и matplotlib. Загрузите датасет
Шаг 1. Установите в качестве индекса поле customer_id
Нажмите, чтобы увидеть результат
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("customer_shopping_data.csv")
data.head(200)
data.set_index("customer_id", inplace=True)
data.head(200)
# invoice_no customer_id gender age category quantity price payment_method invoice_date
# 0 I138884 C241288 Female 28 Clothing 5 1500.40 Credit Card 5/8/2022
# 1 I317333 C111565 Male 21 Shoes 3 1800.51 Debit Card 12/12/2021
# 2 I127801 C266599 Male 20 Clothing 1 300.08 Cash 9/11/2021
# 3 I173702 C988172 Female 66 Shoes 5 3000.85 Credit Card 16/05/2021
# 4 I337046 C189076 Female 53 Books 4 60.60 Cash 24/10/2021
# ... ... ... ... ... ... ... ... ... ...
# 195 I220863 C131497 Male 21 Books 4 60.60 Cash 22/07/2021
# 196 I530401 C526660 Female 32 Technology 2 2100.00 Cash 25/09/2022
# 197 I219555 C266961 Male 47 Clothing 3 900.24 Credit Card 10/9/2021
# 198 I316629 C204741 Female 41 Souvenir 3 35.19 Cash 16/01/2022
# 199 I795251 C181619 Male 33 Cosmetics 5 203.30 Cash 13/11/2022
# 200 rows × 9 columns
Шаг 2. Сделайте анализ данных с помощью метода descibe()
Нажмите, чтобы увидеть результат
data.describe()
# age quantity price
# count 99457.000000 99457.000000 99457.000000
# mean 43.427089 3.003429 689.256321
# std 14.990054 1.413025 941.184567
# min 18.000000 1.000000 5.230000
# 25% 30.000000 2.000000 45.450000
# 50% 43.000000 3.000000 203.300000
# 75% 56.000000 4.000000 1200.320000
# max 69.000000 5.000000 5250.000000
Шаг 3. Выведите только столбцы gender
, age
и price
Нажмите, чтобы увидеть результат
df = data[["age", "gender", "price"]]
df.head(200)
# age gender price
# customer_id
# C241288 28 Female 1500.40
# C111565 21 Male 1800.51
# C266599 20 Male 300.08
# C988172 66 Female 3000.85
# C189076 53 Female 60.60
# ... ... ... ...
# C131497 21 Male 60.60
# C526660 32 Female 2100.00
# C266961 47 Male 900.24
# C204741 41 Female 35.19
# C181619 33 Male 203.30
# 200 rows × 3 columns
Шаг 4. Сгруппируйте данные по возрасту только для gender == "Female"
, посчитайте сумму продаж каждой категории, постройте график
Нажмите, чтобы увидеть результат
female_df = df[df.gender == "Female"].groupby(["age"]).sum("price")
plt.figure()
female_df.plot()
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.