Using pandas crosstab to create a bar plot(使用 pandas 交叉表创建条形图)
本文介绍了使用 pandas 交叉表创建条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用我的数据框在海运中创建堆叠条形图。
我首先在 pandas 中生成了一个交叉表,如下所示:
pd.crosstab(df['Period'], df['Mark'])
返回:
Mark False True
Period BASELINE 583 132
WEEK 12 721 0
WEEK 24 589 132
WEEK 4 721 0
我想使用海运为全余创建一个堆叠的条形图,这就是我在我的图表的睡觉中使用的。但是,我很难做到这一点,因为我无法为交叉表编制索引。
我已经能够使用.plot.barh(stacked=True)
在 pandas 身上制作我想要的情节,但在海运方面没有运气。你知道我该怎么做吗?
推荐答案
- 如您所说,您可以使用 pandas 创建堆叠条形图。您想要有一个海运绘图的论点是无关紧要的,因为每个海运绘图和每个 pandas 绘图最终都只是matplotlib对象,因为这两个库的绘图工具仅仅是matplotlib包装器。
- 这里有一个完整的解决方案(使用@Andrew_Reess的答案创建数据)。
- 测试于
python 3.8.11
、pandas 1.3.2
、matplotlib 3.4.3
、seaborn 0.11.2
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
n = 500
np.random.seed(365)
mark = np.random.choice([True, False], n)
periods = np.random.choice(['BASELINE', 'WEEK 12', 'WEEK 24', 'WEEK 4'], n)
df = pd.DataFrame({'mark': mark, 'period': periods})
ct = pd.crosstab(df.period, df.mark)
ax = ct.plot(kind='bar', stacked=True, rot=0)
ax.legend(title="bWFyaw==", bbox_to_anchor=(1, 1.02), loc='upper left')
# add annotations if desired
for c in ax.containers:
# set the bar label
ax.bar_label(c, label_type='center')
这篇关于使用 pandas 交叉表创建条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:使用 pandas 交叉表创建条形图


猜你喜欢
- python-m http.server 443--使用SSL? 2022-01-01
- 如何在 Python 的元组列表中对每个元组中的第一个值求和? 2022-01-01
- 沿轴计算直方图 2022-01-01
- 分析异常:路径不存在:dbfs:/databricks/python/lib/python3.7/site-packages/sampleFolder/data; 2022-01-01
- python check_output 失败,退出状态为 1,但 Popen 适用于相同的命令 2022-01-01
- padding='same' 转换为 PyTorch padding=# 2022-01-01
- 如何在 python3 中将 OrderedDict 转换为常规字典 2022-01-01
- 使用Heroku上托管的Selenium登录Instagram时,找不到元素';用户名'; 2022-01-01
- 如何将一个类的函数分成多个文件? 2022-01-01
- pytorch 中的自适应池是如何工作的? 2022-07-12