Автор материала: Екатерина Демидова, Data Scientist @ Segmento. Материал распространяется на условиях лицензии Creative Commons CC BY-NC-SA 4.0. Можно использовать в любых целях (редактировать, поправлять и брать за основу), кроме коммерческих, но с обязательным упоминанием автора материала. Автор материала:
Заполните код в клетках и ответьте на вопросы в веб-форме.
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
Для работы вам понадобятся предобработанные данные нашего учебного конкурса на kaggle «Прогноз популярности статьи на Хабре». Скачайте данные соревнования (данные были удалены с Kaggle ради организации последующего идентичного соревнования, так что тут ссылка на Google Drive).
# при необходимости поменяйте путь к данным
df = pd.read_csv("../../data/howpop_train.csv")
df.shape
df.head(3).T
Избавимся сразу от переменных, названия которых заканчиваются на _lognorm
(нужны для соревнования на Kaggle). Выберем их с помощью filter()
и удалим drop
-ом:
df.drop(
filter(lambda c: c.endswith("_lognorm"), df.columns),
axis=1, # axis = 1: столбцы
inplace=True,
) # избавляет от необходимости сохранять датасет
df.describe().T
df.describe(include=["object", "bool"]).T # бинарные и категориальные переменные
# настройка внешнего вида графиков в seaborn
sns.set_style("dark")
sns.set_palette("RdBu")
sns.set_context(
"notebook", font_scale=1.5, rc={"figure.figsize": (15, 5), "axes.titlesize": 18}
)
Столбец published
(время публикации) содержит строки. Чтобы мы могли работать с этими данными как с датой/временем публикации, приведём их к типу datetime
:
print(df.published.dtype)
df["published"] = pd.to_datetime(df.published, yearfirst=True)
print(df.published.dtype)
Создадим несколько столбцов на основе данных о времени публикации:
df["year"] = [d.year for d in df.published]
df["month"] = [d.month for d in df.published]
df["dayofweek"] = [d.isoweekday() for d in df.published]
df["hour"] = [d.hour for d in df.published]
Теперь Ваша очередь. В каждом пункте предлагается построить картинку и с ее помощью ответить на вопрос в форме. Конечно, можно попытаться ответить на все вопросы только с Pandas, без картинок, но мы советуем Вам потренироваться строить (красивые) визуализации.
Выберите один или несколько вариантов:
Подсказки: постройте график зависимости числа публикаций от дня; используйте параметр hue
; не заморачивайтесь сильно с ответами и не ищите скрытого смысла :)
Правда ли, что по субботам авторы пишут в основном днём, а по понедельникам — в основном вечером?