首页 > 解决方案 > Python/Dash by Plotly:按日期分组案例

问题描述

我只能为发生的总案例绘制条形图,而不是使用此代码按发生日期对案例进行分组:

 trace1=go.Bar(
    x=pd.to_datetime(dfb['date']),
    y=dfb.set_index('date').resample('M')["enrolled"].sum(),
    )

如何进行分组日期?数据集如下

date    enrolled
6/29/2018   1
6/29/2018   1
6/29/2018   
6/29/2018   1
6/20/2018   1
6/22/2018   1
6/19/2018   1
6/27/2018   1
6/28/2018   
6/27/2018   1
6/19/2018   1
6/20/2018   1
6/27/2018   1
6/27/2018   
6/26/2018   1
6/27/2018   
6/27/2018   1

谢谢

标签: pythonplotlyplotly-dash

解决方案


我在我的中使用了以下内容data.csv

date   enrolled
6/29/2018   1
6/29/2018   1
6/29/2018   0
6/29/2018   1
6/20/2018   1
6/22/2018   1
6/19/2018   1
6/27/2018   1
6/28/2018   0
6/27/2018   1
6/19/2018   1
6/20/2018   1
6/27/2018   1
6/27/2018   0
6/26/2018   1
6/27/2018   0
6/27/2018   1

这是解决您的问题的一种可能的解决方案:

import plotly
import plotly.graph_objs as go

import pandas as pd

# Read in data (might be already given in your code)
df = pd.read_csv('data.csv', delimiter='   ')
groups = df.groupby(['date'])

xData = []
yData = []

# Group data by keys and get sum
for group, data in df.groupby(['date']):
    xData.append(group)
    yData.append(data['enrolled'].sum())

data = [go.Bar(
            x=xData,
            y=yData
    )]

plotly.offline.plot(data, filename='a-simple-plot') 

此示例使用 dash 发布图形:

import pandas as pd

# Read in data (might be already given in your code)
df = pd.read_csv('data.csv', delimiter='   ')
groups = df.groupby(['date'])

xData = []
yData = []

# Group data by keys and get sum
for group, data in df.groupby(['date']):
    xData.append(group)
    yData.append(data['enrolled'].sum())

# Dash specific stuff
import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(children=[
    html.H1(
        children='Hello Dash',
    ),

    html.Div(children='Dash: A web application framework for Python.', style={
        'textAlign': 'center'
    }),

    dcc.Graph(
        id='example-graph-2',
        figure={
            'data': [
                {'x':xData, 'y': yData, 'type': 'bar'},
            ],
            'layout': {}
            }

    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

推荐阅读