Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save legale/65e766b38e10969802a04c0cdb5a8eae to your computer and use it in GitHub Desktop.

Select an option

Save legale/65e766b38e10969802a04c0cdb5a8eae to your computer and use it in GitHub Desktop.
yandex_python_data_analyst_5_Pandas для анализа данных
Данные исследуют в четыре стадии:
Получение данных и ознакомление с ними
Предподготовка данных
Анализ данных
Оформление результатов исследования
В этой теме мы начнём с первой стадии. В получении данных и ознакомлении с ними важную роль выполняет библиотека Pandas.
Чему вы научитесь
Познакомитесь с библиотекой Pandas и её базовыми методами: чтением файла, выводом данных на экран, получением сводной информации и запросом значений из определённых ячеек таблицы.
Сколько времени это займёт
2 часа = 6 уроков от 2 до 30 минут.
Постановка задачи
Решим задачу из реальной практики сервиса Яндекс.Музыка: исследовать предпочтения пользователей и ответить на вопрос, целесообразна ли интеграция двух сервисов — Музыки и Радио.
Мы готовим к запуску новый релиз, где соединим вместе приложения Музыка и Радио. Нам важно понимать, как пользователи отреагируют на такое новшество. Для этого мы оцениваем на небольшом количестве пользователей, насколько им понравилась возможность быстрого доступа к Радио.
Каждая компания по-разному оценивает реакцию пользователя на нововведения. Продуктовые исследования в нашем сервисе показали, что среднее время прослушивания лучше всего отражает лояльность пользователей.
Метрика удовлетворенности пользователя сервисом называется happiness. В Яндекс.Музыке метрика happiness равна среднему времени прослушивания треков. Чем выше этот показатель, тем больше доволен пользователь.
image
Есть и другие метрики, которые помогают ответить на вопрос: «Как дела у нашего продукта?»
Если метрика happiness в эксперименте повысится, команда примет решение добавить Радио всем пользователям.
Ваша задача как аналитика Яндекс.Музыки определить текущее значение метрики happiness. Вы пройдёте все стадии – от знакомства с данными до решения бизнес-задачи.
Вот так выглядят наши данные на этапе знакомства:
image
Этот хаос нужно превратить в аккуратную табличку, поддающуюся обработке. Для такой задачи подойдёт и Excel, но лучше использовать профильный инструмент — программную библиотеку Pandas.
Библиотеки – это наборы готовых методов для решения распространённых задач. Из того, что есть в Python, для операций с таблицами чаще всего применяют Pandas. Название — от сокращения panel data (англ. «панельные данные») — пришло из терминологии применяемого в экономике панельного анализа, который изучает изменение определённого признака у определённого объекта во времени (например, уровень бедности в Бразилии во второй половине 20 века). Библиотека Pandas оказалась таким универсальным инструментом, что годится для исследования любых данных, которые вообще можно собрать в таблицу.
Почему библиотека Pandas такая крутая и популярная? У неё богатейшие возможности:
Готовые методы для всяческих манипуляций с таблицами: добавления, удаления, преобразования, агрегирования данных;
Одновременная обработка данных из разных файлов;
Готовые методы для операций с пропущенными значениями, выявления и устранения проблемных данных;
Использование данных в самых разных форматах.
Кроме того, вы всегда можете обратиться к хорошо подготовленной документации и активному комьюнити.
Инструменты библиотеки становятся доступны, когда мы вызываем её командой import.
import pandas
Библиотека хранится в переменной, через которую можно вызвать её методы. В сообществе принято давать ей короткое имя pd.
import pandas as pd
Эта команда означает «импортируй библиотеку Pandas как pd».
У нас есть набор данных, который нужно превратить в таблицу. Это делается вызовом конструктора DataFrame().
Конструктор принимает два аргумента – список данных и названия столбцов, которые должны быть в таблице. Например, если информация о столицах разных стран хранится в переменной atlas:
atlas = [
['Франция','Париж'],
['Россия','Москва'],
['Китай','Пекин'],
['Мексика','Мехико'],
['Египет','Каир']
]
и нужно построить таблицу из двух столбцов country и capital,
geography = ['country', 'capital']
синтаксис вызова конструктора DataFrame() выглядит так:
world_map = pd.DataFrame(data = atlas , columns = geography)
image
Обратите внимание, что DataFrame() – это конструктор библиотеки Pandas, поэтому перед именем конструктора стоит обращение к переменной, в которой библиотека хранится – pd.DataFrame().
atlas = [
['Франция','Париж'],
['Россия','Москва'],
['Китай','Пекин'],
['Мексика','Мехико'],
['Египет','Каир'],
]
geography = ['country', 'capital']
world_map = pd.DataFrame(data = atlas , columns = geography) # таблица сохраняется в переменной с произвольно выбранным именем world_map
print(world_map) # вывод на экран
COUNTRY CAPITAL
0 Франция Париж
1 Россия Москва
2 Китай Пекин
3 Мексика Мехико
4 Египет Каир
В результате простой список пар страна-столица превратился в таблицу с индексами и именованными столбцами. Давайте создадим таблицу с данными о ваших музыкальных предпочтениях.
TASK_1_4
Получите доступ к библиотеке Pandas, используйте имя переменной pd.
SOLUTION
import pandas as pd
TASK_2_4
Создайте список music с 5 парами «имя вашего любимого исполнителя - название его песни». Пример такого списка - atlas из теоретического введения к этому уроку.
import pandas as pd
SOLUTION
import pandas as pd
music=[['Меладзе','Она была'],
['Билан','Тоска'],
['Пресняков','Стюардесса'],
['Тальков','Чистые пруды'],
['Розенбаум','Брат мой'],
]
TASK_3_4
Создайте список entries с названиями для двух столбцов — artist и track (здесь эти английские слова употребляются в значении «исполнитель» и «композиция»).
SOLUTION
import pandas as pd
music=[['Меладзе','Она была'],
['Билан','Тоска'],
['Пресняков','Стюардесса'],
['Тальков','Чистые пруды'],
['Розенбаум','Брат мой'],
]
entries=['artist','track']
TASK_4_4
Используя конструктор DataFrame(), создайте таблицу из списка ваших любимых исполнителей music и списка столбцов entries. Сохраните таблицу в переменной playlist и выведите эту сборную таблицу на экран.
SOLUTION
import pandas as pd
music=[['Меладзе','Она была'],
['Билан','Тоска'],
['Пресняков','Стюардесса'],
['Тальков','Чистые пруды'],
['Розенбаум','Брат мой'],
]
entries=['artist','track']
playlist=pd.DataFrame(data=music, columns=entries)
print (playlist)
У вас есть набор данных. Чтобы начать работу с ним, данные нужно прочитать. Давайте разберёмся, как это сделать.
Знакомому формату электронной таблицы Excel в Pandas соответствует структура данных DataFrame. Аналитики обычно называют такие объекты просто DataFrame.
В рабочей практике вы столкнётесь с тем, что данные хранят в файлах разных форматов. Из них самый распространённый – CSV (от англ. Comma-Separated Values, «значения, разделённые запятой»). Каждая строка такого файла представляет собой одну строку таблицы, где данные разделены запятыми. В первой строке собраны заголовки столбцов (если они есть).
Посмотрите, как одинаковые данные выглядят в Excel (снизу) и CSV (сверху):
image
Файлы CSV удобнее всего открывать вызовом метода read_csv() из библиотеки Pandas.
import pandas as pd
df = pd.read_csv('music_log.csv') # аргумент - путь к файлу
Обратите внимание, что содержимое файла CSV сохраняется в переменной df. Это имя, которое будет встречаться постоянно — общепринятое сокращение от DataFrame.
Теперь все данные из файла можно напечатать на экране командой print(df), но это не всегда нужно делать — не исключено, что таблица огромна и неудобна для изучения. Для знакомства с данными запрашивают несколько строк из начала или конца таблицы, вызывая специальные методы head() и tail(). По умолчанию head() возвращает первые 5 строк набора данных, а метод tail() – последние 5 строк. Когда нужно не 5, количество строк передаётся этим методам как аргумент. Например, head(10) вернёт первые 10 строк. Давайте возьмёмся за поставленную менеджером задачу и откроем файл с данными сервиса Яндекс.Музыка. Получим первый десяток строк этой обширной таблицы:
print(df.head(10))
USER_ID TOTAL PLAY ARTIST GENRE TRACK
0 BF6EA5AF 92.851388 Marina Rei pop Musica
1 FB1E568E 282.981000 Stive Morgan ambient Love Planet
2 FB1E568E 282.981000 Stive Morgan ambient Love Planet
3 EF15C7BA 8.966000 NaN dance Loving Every Minute
4 82F52E69 193.776327 Rixton pop Me And My Broken Heart
5 4166D680 3.007000 Henry Hall & His Gleneagles Hotel Band jazz Home
6 F4F5677 0.100000 NaN classicmetal NaN
7 386FE1ED 211.880000 NaN electronic Riviera
8 A5E0D927 3.161000 Andrew Paul Woodworth pop The Name of This Next Song Is Called
9 E9E8A0CA 274.390000 Pillar Point indie Dove
TASK_1_2
Прочитайте файл music_log.csv и сохраните его в переменной df. Сохраните первые 5 строк с данными из music_log.csv в переменной music_head и выведите значение переменной на экран.
SOLUTION
TASK_2_2
SOLUTION
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment