#python #pandas #time-series
#python #pandas #временные ряды
Вопрос:
У меня есть данные о недвижимости (ежемесячные данные о розничной продаже домов), и я хочу получать ежегодные продажи домов для каждого региона по временным рядам. Для меня не интуитивно понятно, как получить среднее / медианное значение для данных временных рядов. Кто-нибудь укажет мне, как это сделать?
Вот как выглядят мои данные временных рядов:
Кроме того, здесь я поделился примером набора данных с хостом онлайн-обмена файлами: пример фрагмента данных
описание данных:
в этих данных о недвижимости строка — регионы, столбцы — ежемесячная статистика розничной торговли. Я хочу получить среднее / медианное значение за год для этих данных о недвижимости. Как я могу это сделать? есть идеи?
желаемый результат:
вот эскиз желаемого результата, который я хочу получить.
region 2012_mean 2012_median 2013_mean 2013_median
Chicago, IL metro area xxx xxx xxx xxx
Chicago, IL xxx xxx xxx xxx
Chicago, IL - Albany Park xxx xxx xxx xxx
Chicago, IL - Andersonville xxx xxx xxx xxx
Chicago, IL - Arcadia Terrace xxx xxx xxx xxx
Комментарии:
1. Где ваша попытка его кодирования? Мне кажется, вам нужно использовать Google means в pandas и медианы в pandas , сделать попытку самостоятельно, а затем вернуться с более прямым вопросом о том, насколько недостаточно документации в Интернете
Ответ №1:
Сначала убедитесь, что ваши столбцы являются datetime
объектом, делайте с groupby
df.columns=df.columns.str.strip()
df=df.set_index('Region')
s=df.T.groupby(df.columns.year).agg(['mean','median']).T.unstack()
s.columns=s.columns.map('_'.join)
Комментарии:
1. Спасибо за вашу помощь. Но я получил `AttributeError: объект ‘Index’ не имеет атрибута ‘year’. Не могли бы вы попробовать примеры фрагментов данных?
2. @Jerry df.set_index(
region
,inplace=True);df.columns=pd.to_datetime(df.columns);3. @Jerry ты запускал
df.set_index('region',inplace=True)
4. У меня возникла эта ошибка после того, как я попробовал ваше решение:
TypeError: sequence item 0: expected str instance, int found
, почему это? Спасибо за вашу помощь5. @Jerry df.reset_index(inplace= True)