【问题标题】:Plotting resampled data in seaborn在 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'): 南}}

【问题讨论】:

    标签: pandas time-series seaborn resampling


    【解决方案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')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多