首页 > 解决方案 > data.plot.bar() 混合索引标签

问题描述

我有以下代码可以在 jupyter 笔记本中为我提供图表,但它似乎错误地标记了类别。当我对节点中断列中应归类为低流量单元格的单元格进行数据更改时,它正在更改标记为中间流量的栏。查看数据,我似乎根据我的切点分配了正确的 user_category,所以当我在节点中断列中将 0 更改为 1 时,我看不出它为什么会影响中间流量条。有人有想法么?PS这是我在论坛上的第一个问题,所以如果我没有提供所需的帮助,请告诉我。谢谢!(X 出来的数据是专有的,但应该与这里的问题无关)

train.head(10)

site    past_alarms          weather_event  max_users   node_outage
xxxxxx  xxxxxxxxxxxxxxxx     Thunderstorm   341         N
xxxxxx  xxxxxxxxxxxxxxxx     Tornado        71          Y
xxxxxx  xxxxxxxxxxxxxxxx     None           294         N
xxxxxx  None                 None           395         N
xxxxxx  None                 None           422         N
xxxxxx  None                 None           331         N
xxxxxx  None                 Tornado        260         N
xxxxxx  None                 None           79          N
xxxxxx  None                 None           240         N
xxxxxx  None                 None           370         N

def process_users(df,cut_points,label_names):
    df["user_categories"] = pd.cut(df["max_users"],cut_points,labels=label_names)
    return df

cut_points = [1, 100, 350, 550]
label_names  = ["Low_Traffic","Mid_Traffic","High_Traffic"]

train = process_users(train,cut_points,label_names)

users_cat_pivot = 
train.pivot_table(index="user_categories",values="node_outage")
users_cat_pivot.plot.bar()
plt.show()

<graph shown here>

标签: pythonpandaspivot-tablejupyterkaggle

解决方案


如果将来碰巧帮助其他人,我能够确定这里发生的事情。它发生的事情是它根据它看到的第一件事创建索引,所以如果你注意到上面数据中的第一行将根据我拥有的切点被归类为中间流量,它命名为第一列图中间。如果我在导入训练之前对数据进行重新排序,以使低位排​​在第一位,它会正确地对索引进行排序。我相信还有一种方法可以在线编写代码,如果有人碰巧知道可以随时回复,但至少我知道它为什么会发生。


推荐阅读