在 seaborn 中绘制重采样数据

Plotting resampled data in seaborn

我有一个包含一些财务操作的 pandas 数据框。其中一列是 'Date'。我将每日数据重新采样为几个月。

transfers_all.set_index(pd.DatetimeIndex(transfers_all['Date']), inplace = True)

monthly = transfers_all.resample('M')

然而,当我尝试像这样用 Seaborn 绘制这些数据时

monthly_plot = sns.lineplot(data = monthly,
                      x = 'Date',
                      y = 'Amount'
                      )

我收到一个错误:

AttributeError: 'DatetimeIndexResampler' object has no attribute 'get'

如果我尝试绘制整个数据框,x 轴显示天数,但我想将它们分组为月数。有没有办法从 Seaborn 中重新采样或让 Seaborn 处理我的重新采样数据?

运行 print (transfers_all.head().to_dict()) 给出以下输出:

{'Additional remarks': {Timestamp('2017-01-02 00:00:00'): nan}, 'Data faktur': {Timestamp('2017-01-02 00:00:00'): nan}, 'Data faktury': {Timestamp('2017-01-02 00:00:00'): '-'}, 'Date': {Timestamp('2017-01-02 00:00:00'): Timestamp('2017-01-02 00:00:00')}, 'Expense description': {Timestamp('2017-01-02 00:00:00'): 'Opłata za zlecenie stałe'}, 'Expenses category (tag)': {Timestamp('2017-01-02 00:00:00'): 'ADMIN'}, 'Komu zwrot': {Timestamp('2017-01-02 00:00:00'): 'KG'}, 'Kwota (PLN)': {Timestamp('2017-01-02 00:00:00'): 3.0}, 'Kwota VAT (PLN)': {Timestamp('2017-01-02 00:00:00'): nan}, 'Kwota w walucie oryginalnej': {Timestamp('2017-01-02 00:00:00'): nan}, 'Nazwa sprzedawcy': {Timestamp('2017-01-02 00:00:00'): '-'}, 'Numer faktury': {Timestamp('2017-01-02 00:00:00'): '-'}, 'Opis wydatku': {Timestamp('2017-01-02 00:00:00'): nan}}

我认为需要一些聚合函数,例如 summeanreset_index 来自 DatetimeIndex 的列:

transfers_all['Date'] = pd.to_datetime(transfers_all['Date'])
monthly = transfers_all.resample('M', on='Date').size().reset_index(name='count')

monthly_plot = sns.lineplot(data = monthly,
                      x = 'Date',
                      y = 'count'
                      )