按四分法分组绘制Pandas数据帧

2024-06-14 20:47:37 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pandas,如何在一个索引列中按季度和年份分组datetime?在

我可以通过:df.groupby(by=[df.index.year, df.index.quarter])对日期进行分组。但是,由于它创建了两列,所以当我试图创建一个时间序列图时,我遇到了一个错误,我无法解决这个问题。在

下面是一个例子:

df0 = pd.DataFrame({'date':['2016-1-1', '2016-4-1', '2016-7-1', '2016-10-1', '2017-1-1', '2017-4-1', '2017-7-1', '2017-10-1'], 
               'value':[32141,1234,2134,2134,1234,2134,213,1234]})

df0['date'] = pd.to_datetime(df0['date'], format="%Y-%m-%d")
df0.index = df0['date']
df0 = df0.groupby(by=[df0.index.year, df0.index.quarter]).sum()

df0

enter image description here


Tags: pandasdfdatetimedateindexby时间year
1条回答
网友
1楼 · 发布于 2024-06-14 20:47:37

我在这里猜测,但是也许您希望应用一个transform()来保留行。试试这个例子:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'dates':pd.date_range(start='2018-01-01', end='2018-12-31'),
    'i': np.arange(365)
}).set_index('dates')

df.groupby(by=[df.index.year, df.index.quarter]).mean().plot(kind='bar')
df.groupby(by=[df.index.year, df.index.quarter]).transform('mean').plot()

退货:

enter image description here

相关问题 更多 >