提前感谢那些愿意帮助我的人。这是我第一次提出问题,我已经在这个问题上苦苦挣扎了好几天!对于帮助我的人,永远的荣耀!
让我用几行代码和屏幕来解释我的问题。
我想创建一个树状图,显示两个日期之间值的增长情况。为了更精确,我希望这个树状图: - 拥有一个大小与日期2上的值x成比例的正方形,并且根据从日期1到日期2的值x的增长情况着色。
让我们考虑以下示例:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import plotly.express as px
import plotly
data = {'variable': ['a', 'b', 'c'],
'parent': ['I', 'I', 'II'],
'value_1': [1,4,5],
'value_2': [4,2,5]
}
df = pd.DataFrame(data)
df['growth'] = 100 * (df['value_2'] / df['value_1'] - 1)
fig = px.treemap(df, path=['parent', 'variable'], values = 'value_2', color='growth',
color_continuous_scale='plasma')
fig.show()
它在这里为我提供了美丽的树状图:增长树状图
但是问题在于这里。正如您在下面的屏幕上看到的那样,I的增长率为183%:一个错误的增长率!
然而,当手动计算时,从1到4,b从4到2,增长应该是:1/5 * 300% + 4/5 * -50% = 20%(我从5变成6)。
这是因为所做的计算是4/6 * 300% + 2/6 * -50% = 183%。该方法是根据新系数计算加权平均值,而不是理论上应该根据旧系数计算。
是否有一种方法,在聚合到父类时获得正确的增长率?
非常感谢您的帮助,如果需要进一步帮助,请告诉我。