生成python按图分组的条形图时间序列
Posted
技术标签:
【中文标题】生成python按图分组的条形图时间序列【英文标题】:Generating a python plotly grouped bar chart timeseries 【发布时间】:2020-12-07 15:08:12 【问题描述】:我正在尝试从分组的 df 中生成一个绘图条形图。我有 groupby python 语句排序的数据。数据排列得当,但我无法生成绘图条形图。
python 给出一个值错误 ValueError:“x”的值不是“data_frame”中列的名称。应为 ['amount'] 之一,但收到:Issued_Date
此外,我希望条形图可以堆叠。例如,第 0 行和第 5 行是相同的日期,所以我想要堆叠条形
df_A = df_pre.groupby(['Transaction','Type'])["amount"].resample('M').sum().to_frame('amount')
fig = px.bar(df_A, x='Issued_Date', y='amount', color='Type',
title='Timeseries amount',
barmode='group',
height=600
)
fig.show()
df_A.to_dict('split')
'index': [('No', 'B', Timestamp('2019-03-31 00:00:00')),
('No', 'E', Timestamp('2018-10-31 00:00:00')),
('No', 'H', Timestamp('2019-07-31 00:00:00')),
('So', 'B', Timestamp('2018-12-31 00:00:00')),
('So', 'E', Timestamp('2018-12-31 00:00:00')),
('So', 'H', Timestamp('2019-03-31 00:00:00')),
('So', 'H', Timestamp('2019-05-31 00:00:00')),
('So', 'H', Timestamp('2019-06-30 00:00:00')),
('So', 'H', Timestamp('2019-07-31 00:00:00'))],
'columns': ['amount'],
'data': [[39.21],
[64.49],
[572.78],
[13.46],
[44.54],
[13.96],
[0.0],
[46.76],
[13.28]]
【问题讨论】:
这是dfA
的截图吗?还是别的什么?
是的。我不知道如何提交表格,所以我导出到 csv 然后复制截图。此 csv 导出仅用于屏幕截图。希望有帮助
请分享您的数据,如this
'个人': ('No', 'E', Timestamp('2018-10-31 00:00:00')): 64.49, ('No', 'H' , Timestamp('2019-07-31 00:00:00')): 572.78, ('So', 'H', Timestamp('2018-12-31 00:00:00')): 58.0, (' So', 'H', Timestamp('2019-01-31 00:00:00')): 0.0, ('So', 'H', Timestamp('2019-02-28 00:00:00') ): 0.0, ('So', 'H', Timestamp('2019-03-31 00:00:00')): 39.21, ('So', 'E', Timestamp('2019-07-31 00' :00:00')): 13.28
我编辑了这篇文章。再次感谢。
【参考方案1】:
我提到了official reference,看到你的问题适用于它。
import pandas as pd
import numpy as np
import io
data = '''
Transaction Type Issued_date Value
Div H 2020-2-9 84.5
Div H 2020-5-10 84.49
Div H 2020-6-7 78.13
Div I 2020-4-5 124.04
Div A 2020-2-9 40.65
Div A 2020-3-8 38.51
Div A 2020-11-12 39.99
Shell B 2020-9-16 -463.29
'''
df = pd.read_csv(io.StringIO(data), sep='\s+')
import plotly.express as px
fig = px.bar(df, x="Issued_date", y="Value", color="Type", title="Transaction", barmode='group', height=600)
fig.show()
【讨论】:
太棒了。虽然,我会更清楚,我宁愿直接从多索引 df 生成图形并消除导出和导入。不过,此导出和导入将是不必要的步骤。以上是关于生成python按图分组的条形图时间序列的主要内容,如果未能解决你的问题,请参考以下文章
Python使用seaborn可视化分组条形图并且在分组条形图的条形上添加数值标签(seaborn grouped bar plot add labels)
Pandas:按日历周分组,然后为实际日期时间绘制分组条形图
Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图
Python使用seaborn可视化分组条形图(side by side)并且在分组条形图的条形上添加数值标签(seaborn grouped bar plot add labels)