Как я могу использовать mean () во временных рядах и перенести его в столбцы?

#python #pandas #time-series

#python #pandas #временные ряды

Вопрос:

У меня такая проблема:

 bitcoin = pd.read_csv('./Bitcoin/BTC-USD.csv')
bitcoin
  

И тогда у меня есть значения для биткойнов за каждый день… Но на самом деле мне нужно среднее значение за каждый месяц в 2018 и 2019 годах:

 bitcoin['Date']=pd.to_datetime(bitcoin['Date'],format="%Y-%m-%d")

bitcoin = bitcoin[(bitcoin['Date']>'2018-01-01') amp; (bitcoin['Date']<'2020-01-01')]

bitcoin_mean =bitcoin['High'].groupby([bitcoin['Date'].dt.year,bitcoin['Date'].dt.month]).mean()

bitcoin_mean

  

введите описание изображения здесь

Это нормально, но на самом деле я хочу, чтобы это было в 3 разных столбцах, потому что я хочу отобразить это, что-то вроде ‘Year’, ‘Day’ и ‘Averaged_price’ в целых числах, как я мог это сделать?

Заранее спасибо!

Комментарии:

1. вы могли бы попробовать .transform('mean') в конце вашей groupby вернуть только значения, которые вы можете присвоить как bitcoin [‘mean’] = bitcoin [‘High’].gropuby(……).transform(‘mean)

2. используйте stack(0) , и годы станут столбцами

Ответ №1:

 import pandas as pd
  

Загружайте BTC-USD.csv отсюда, я также разместил это на Github Gists.

Чтение в dataframe:

 df = pd.read_csv('BTC-USD.csv')
  

Тогда вы можете получить среднее значение за каждый месяц:

 df.groupby(df['Date'].apply(lambda row: row.split('-')[1])).mean()
  

что даст вам:

введите описание изображения здесь

(Первый столбец — это месяцы, 01 — январь, 02 — февраль и т.д. )


Почему это работает

df['Date'].apply(lambda row: row.split('-')[1]) является ли ряд:

 0      08
1      08
2      08
3      08
4      08
       ..
362    08
363    08
364    08
365    08
366    08
Name: Date, Length: 367, dtype: object
  

Он берет дату из каждой строки, т. Е. 2019-08-24 , split() разделяет ее на - , так что получается список: [‘2019′,’08’,’24]. Он принимает 1-индексированный (т. Е. второй) элемент из этого списка, т. Е. месяц. Мы группируем эту переменную с помощью функции groupby() mean() , а затем берем mean() для вычисления среднего значения групп (ищем здесь,,,).