Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # готовим данные для графика (moscow_places - наш датафрейм)
- moscow_places_chachains_by_category = moscow_places.groupby(['category', 'chain']).agg(count=(
- 'chain', 'count'
- )).reset_index().merge(moscow_places.groupby('category').agg(total=('category', 'count')).reset_index(), how='left')
- # рабочий вариант с форматом float
- moscow_places_chachains_by_category['share'] = (
- moscow_places_chachains_by_category['count'] / moscow_places_chachains_by_category['total'] * 100
- ).map(lambda x: "{0:.2f}".format(x)).astype('float')
- # # желаемый вариант с процентами
- # moscow_places_chachains_by_category['share'] = (
- # moscow_places_chachains_by_category['count'] / moscow_places_chachains_by_category['total']
- # ).map(lambda x: "{0:.2%}".format(x))
- moscow_places_chachains_by_category = moscow_places_chachains_by_category.sort_values(
- by=['chain', 'share'], ascending=False
- ).reset_index(drop=True)
- # функция для построения графика bar (с параметром color) средствами plotly.express
- def px_bar_stack(
- df, x, y, color, hover_data, title, xlabel, ylabel, legend_title, width=1100, height=900, yanchor='top', y_1=0.99
- ):
- fig = px.bar(
- df,
- x=x, y=y,
- color=color,
- hover_data=hover_data,
- barmode='stack',
- text_auto=True,
- title=title, # указываем заголовок
- width=width,
- height=height
- )
- fig.update_traces(textposition='inside')
- fig.update_xaxes(title_text=xlabel) # подпись для оси X
- fig.update_yaxes(title_text=ylabel) # подпись для оси Y
- fig.update_layout(legend=dict(
- yanchor='top',
- y=y_1,
- xanchor='right',
- x=0.99
- ), legend_title=legend_title)
- fig.show()
- px_bar_stack(
- moscow_places_chachains_by_category, 'category', 'share', 'chain',
- ['category', 'chain', 'count', 'total', 'share'], 'Доля сетевых заведений по категориям (%)',
- 'Категория', 'Доля сетевых заведений, %', 'Является сетью', 950, 400, 'bottom', 0.75
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement