【问题标题】: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 用于转置数据帧????

标签: pandas dataframe matplotlib multi-index


【解决方案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
猜你喜欢
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 2017-02-22
  • 2019-05-21
  • 2019-03-18
相关资源
最近更新 更多