在 seaborn 中绘制重采样数据

Posted

技术标签:

【中文标题】在 seaborn 中绘制重采样数据【英文标题】:Plotting resampled data in seaborn 【发布时间】:2019-02-03 01:14:55 【问题描述】:

我有一个带有一些财务操作的 pandas 数据框。其中一列是“日期”。我将每日数据重新采样为几个月。

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łata za zlecenie stał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'): 南

【问题讨论】:

【参考方案1】:

我认为需要一些聚合函数,例如 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'
                      )

【讨论】:

我试过了。使用 .sum() 我得到以下错误: > ValueError: Could not translate input 'Date' With .count 它显示一个图,但 x 轴不再是时间序列,而是一些其他数字,可能是计算日期 评论太长了,我来编辑一下OP 它与 .sum() 一起工作,但在 .count() 上失败。我想看看每月交易次数如何随时间变化 >AttributeError: 'DatetimeIndexResampler' 对象没有属性 'reset_index' @kuleje - 哎呀,我的错字,需要monthly = transfers_all.resample('M', on='Date').size().reset_index(name='count')

以上是关于在 seaborn 中绘制重采样数据的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎样对数据进行重采样

关于重采样后栅格数据行列数不一致的问题

求助ArcGIS高手!!!重采样和矢量化啥关系?

ArcGis重采样

如何使用音频重采样器对 IF 信号进行重采样

音频重采样