在 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}}
我认为需要一些聚合函数,例如 sum
、mean
和 reset_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'
)
我有一个包含一些财务操作的 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}}
我认为需要一些聚合函数,例如 sum
、mean
和 reset_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'
)