Как я могу реализовать это преобразование?
Прежде всего, вам не нужно . При правильном использовании plotly предлагает широкий спектр подходов, в которых вы можете визуализировать свой набор данных в том виде, в каком вы видите его данные в третьем примере:
AGE_GROUP shop_id count_of_member
1 10 12 57615
2 20 1 186
3 30 1 175
4 40 1 171
5 40 12 313758
6 50 1 158
7 60 1 168
Нет необходимости применять pandas к добраться до структуры четвертого образца. Вам не ясно, что вы хотели бы сделать с этим образцом, но я подозреваю, что вы хотели бы показать накопленное count_of_member
за age group
, разделенное на shop_id
, как это?
Вы можете удивиться, почему синие полосы для shop_id1
не отображаются. Но это только потому, что размер чисел так сильно отличается. Если вы замените miniscule count_of_member
на shop_id=1
на что-то более сопоставимое с shop_id=12
, вы получите вместо этого:
Ниже приведен полный фрагмент кода, в котором измененный набор данных закомментирован. Используемый набор данных остается таким же, как в третьем образце данных.
Полный код:
# imports
import plotly.graph_objects as go
import pandas as pd
data = {'AGE_GROUP': {0: 10, 1: 10, 2: 20, 4: 30, 5: 30, 6: 40, 7: 40, 8: 50, 10: 60},
'shop_id': {0: 1, 1: 12, 2: 1, 4: 1, 5: 12, 6: 1, 7: 12, 8: 1, 10: 1},
'count_of_member': {0: 40,
1: 57615,
2: 186,
4: 175,
5: 322458,
6: 171,
7: 313758,
8: 158,
10: 168}}
## Optional dataset
# data = {'AGE_GROUP': {0: 10, 1: 10, 2: 20, 4: 30, 5: 30, 6: 40, 7: 40, 8: 50, 10: 60},
# 'shop_id': {0: 1, 1: 12, 2: 1, 4: 1, 5: 12, 6: 1, 7: 12, 8: 1, 10: 1},
# 'count_of_member': {0: 40,
# 1: 57615,
# 2: 186000,
# 4: 175000,
# 5: 322458,
# 6: 171000,
# 7: 313758,
# 8: 158000,
# 10: 168000}}
# # Create DataFrame
df = pd.DataFrame(data)
# Manage shop_id
shops = df['shop_id'].unique()
# set up plotly figure
fig = go.Figure()
# add one trace per NAR type and show counts per hospital
for shop in shops:
# subset dataframe by shop_id
df_ply=df[df['shop_id']==shop]
# add trace
fig.add_trace(go.Bar(x=df_ply['AGE_GROUP'], y=df_ply['count_of_member'], name='shop_id'+str(shop)))
fig.show()
РЕДАКТИРОВАТЬ:
Если вам по какой-то причине по-прежнему необходимо структурировать данные, как в четвертом примере, я предлагаю вам задать еще один вопрос и специально пометить его только с [pandas]
и [python]
и сосредоточиться исключительно на части вопроса о преобразовании данных.