Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 256 Мб | |
Максимальный балл: | 1 |
Требуется на языке Python реализовать функцию fillna_date
. Функция должна иметь следующий интерфейс:
import pandas as pd
def fillna_date(data: pd.DataFrame, function: str = 'mean') -> pd.DataFrame:
'''Fills NaN values in every column in `data` with values obtained by applying aggregate `function` over a month.
If every value within a month is NaN the fill value is obtained over a year.
If every value within a year is NaN the fill value is obtained over the whole column.
Arguments:
data: a pandas DataFrame, with datetime index
function: aggregate function to be used for obtaining fill value.
Possible values are: "mean", "median", "max", "min"
Returns:
a new pandas DataFrame with NaN values replaced
'''
pass
Датафрейм data
содержит несколько вещественнозначных колонок, индексируемых объектами типа datetime
. Функция fillna_date
заменяет значения NaN
в каждом столбце датафрейма data
на значение, полученное путём применения функции агрегации function
внутри соответствующего месяца. Если все значения в этом месяцы равны NaN
, новое значение получается из соответствующего года. Если же и все значения в году равны NaN
, значение получается из всего столбца. Гарантируется, что в каждом столбце хотя бы одно значение не равно NaN
.
Допустимыми значениями параметра function
являются строки: "mean", "median", "max", "min"
.
При решении задачи запрещено применять операторы циклов и условий языка Python для обработки датафрейма.
Входные данные из примера можно скачать здесь.
Код решения должен содержать только импортируемые модули, определение и реализацию класса.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 | data = pd.read_csv('input.csv', index_col='date')
data = fillna_date(data)
data.to_csv('output.csv')
|
output.csv |