绘制Seaborn中的重采样数据

时间:2018-08-28 11:55:23

标签: pandas time-series seaborn resampling

我有一个带有一些财务操作的熊猫数据框。列之一是“日期”。我将每日数据重新采样了几个月。

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”对象没有属性“ get”

如果我尝试绘制整个数据框,则x轴显示天,但是我想将它们分为几个月。是否可以从Seaborn内部进行重新采样或让Seaborn处理我的重新采样数据?

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

  

{'附加说明':{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')},'费用说明':{Timestamp('2017-01-02 00:00:00'):'Opłataza zleceniestałe'},'费用类别(标签)':{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}}

1 个答案:

答案 0 :(得分:0)

我认为对于sum中的列,需要一些聚合函数,例如meanDatetimeIndexreset_index

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'
                      )