/
Nikolai999
/
Python
Обзор
Документация
Войти
/
Nikolai999
/
Python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Pandas/datetime.py
66 строк
5 KB
Николай
update 03.02.2022
03 фев 2022, 19:39
03 фев 2022, 19:39
6157ccd
Код
Авторство
О чём код?
# ФОРМАТ DATETIME # Для преобразовывания в формат datetime функция pandas.to_datetime(). # Преобразуем столбец Date в формат datetime: df['Date'] = pd.to_datetime(df['Date']) # ВЫДЕЛЕНИЕ АТРИБУТОВ DATETIME # Тип данных datetime позволяет с помощью специального аксессора dt выделять составляющие времени из каждого элемента столбца, такие как: # date — дата; # year, month, day — год, месяц, день; # time — время; # hour, minute, second — час, минута, секунда; # dayofweek — номер дня недели, от 0 до 6, где 0 — понедельник, 6 — воскресенье; # day_name — название дня недели; # dayofyear — порядковый день года; # quarter — квартал (интервал в три месяца). # Например, обратившись по атрибуту dt.year в столбце Date, мы можем «достать» год продажи # и понять, за какой интервал времени (в годах) у нас представлены данные, years_sold = df['Date'].dt.year # В результате обращения к атрибуту datetime df['Date'].dt.year мы получаем объект Series, # в котором в качестве значений выступают годы. # Мы можем занести результат в переменную year_sold и далее работать с ней как с обычным столбцом Series — вычислять максимум, минимум и модальное значение. # а также на какой год приходится наибольшее число продаж: print('Min year sold:', years_sold.min()) print('Max year sold:', years_sold.max()) # Примечание. Так как модальных значений в столбце может быть несколько, # метод mode() возвращает объект Series, даже если мода в данных только одна. # Чтобы сохранить стилистику вывода информации о годе продажи и выводить только число, а не Series, # мы обращаемся к результату работы метода mode() по индексу 0. print('Mode year sold:', years_sold.mode()[0]) # Теперь попробуем понять, на какие месяцы приходится пик продаж объектов недвижимости # Для этого выделим атрибут dt.month и на этот раз занесём результат в столбец MonthSale # найдём относительную частоту продаж для каждого месяца от общего количества продаж # — для этого используем метод value_counts() с параметром normalize (вывод в долях): melb_df['MonthSale'] = melb_df['Date'].dt.month print(melb_df['MonthSale'].value_counts(normalize=True)) #РАБОТА С ИНТЕРВАЛАМИ # можно вычислить, сколько дней прошло с 1 января 2016 года до момента продажи объекта. # Для этого можно просто найти разницу между датами продаж и заявленной '2016-01-01': delta_days = melb_df['Date'] - pd.to_datetime('2016-01-01') # Чтобы превратить количество дней из формата интервала в формат целого числа дней, можно воспользоваться аксессором dt для формата timedelta # и извлечь из него атрибут days: print(delta_days.dt.days) # Создадим признак возраста объекта недвижимости в годах на момент продажи. # Для этого выделим из столбца с датой продажи год и вычтем из него год постройки здания. # Результат оформим в виде столбца AgeBuilding: melb_df['AgeBuilding'] = melb_df['Date'].dt.year - melb_df['YearBuilt'] # столбец AgeBuilding дублирует информацию столбца YearBuilt, так как, зная год постройки здания, мы автоматически знаем его возраст # Такие признаки не стоит оставлять вместе melb_df = melb_df.drop('YearBuilt', axis=1)