带有多索引熊猫数据框的条形图

Posted

技术标签:

【中文标题】带有多索引熊猫数据框的条形图【英文标题】:Barplot with multi-index pandas dataframe 【发布时间】:2021-08-28 22:17:54 【问题描述】:

有没有办法绘制 'client_nr' 与 'Credit Total':

例子:

当前代码:

credit_clients.iloc[-1].plot.bar()

产生:

Example 2

感谢您的帮助。

【问题讨论】:

df.iloc[-1].T.plot() ?? 这真的很接近@Nk03!你能详细说明一下.T吗? .T 用于转置数据帧???? 【参考方案1】: 已合成与您的数据框相似的数据 绘图很简单,只需使用.loc[]从索引中选择Client Total
import numpy as np
import pandas as pd

# synthesize data
i = pd.MultiIndex.from_product([pd.date_range("1-jan-2018", freq="M", periods=6), range(10)], names=["yearmonth","client_nr"])
df = pd.DataFrame(index=i, data=np.random.uniform(1,10, len(i))).unstack()
df.columns = df.columns.droplevel(0)
df.loc["Client Total"] = df.sum(axis=0)

# plot it...
df.loc["Client Total"].plot(kind="bar")

数据

yearmonth 0 1 2 3 4 5 6 7 8 9
2018-01-31 00:00:00 8.48257 9.38166 9.14367 7.52485 8.25407 4.9672 8.28687 2.96698 9.37681 2.36876
2018-02-28 00:00:00 5.99324 8.72813 6.06575 4.19694 8.03992 2.22363 9.56064 8.23965 6.97355 5.8883
2018-03-31 00:00:00 8.85086 8.48972 9.11997 7.91605 6.38338 9.33158 7.26467 8.00862 8.38145 6.81128
2018-04-30 00:00:00 7.69246 5.17472 7.73813 2.75313 7.12725 9.86623 2.16481 8.15056 6.81378 9.01334
2018-05-31 00:00:00 6.05941 3.29547 7.05862 9.83301 4.51411 4.11672 7.53534 5.52747 8.34065 3.13277
2018-06-30 00:00:00 9.7033 9.36859 4.35592 4.4328 5.61218 1.13454 9.63189 3.44345 6.60661 4.43206
Client Total 46.7818 44.4383 43.4821 36.6568 39.9309 31.6399 44.4442 36.3367 46.4928 31.6465

情节

由 client_nr 着色的条形 - 使用 plotly

import plotly.express as px
px.bar(df.loc["Client Total"].reset_index(), x="client_nr", y="Client Total", color="client_nr")

【讨论】:

美丽的@Rob Raymond!当 client_nr 很大时,有没有办法让条形图在视觉上更吸引人? 已更新 - 如果您想要更吸引人的图表,我建议您使用 plotly 而不是 matplotlib

以上是关于带有多索引熊猫数据框的条形图的主要内容,如果未能解决你的问题,请参考以下文章

使用具有多索引的数据框创建条形图

带有分组条形的熊猫堆积条形图[重复]

Pandas:如何绘制带有标签的数据框的条形图?

数据框的条形图

在多索引熊猫数据框的第二级填充 NaN

带有熊猫系列的matplotlib双条形图