在Python中合并并可视化多个groupby聚合条形图

在Python中合并并可视化多个groupby聚合条形图

本文详细介绍了如何使用Pandas和Matplotlib将两个基于相同分组但聚合方式不同的数据集(例如,平均值和总和)合并,并在一个条形图中进行并排可视化。通过数据框合并、Matplotlib的子图功能以及精细的轴标签设置,用户可以清晰地对比不同聚合结果,提升数据分析报告的可读性和专业性。

在数据分析工作中,我们经常需要对数据进行分组聚合,并对不同聚合结果进行比较。例如,我们可能需要同时查看某个类别下数据的平均值和总和。虽然pandas的groupby().agg().plot.barh()可以方便地生成单个聚合的条形图,但要将两个或更多聚合结果并排展示在一个图中,则需要更灵活的方法。本教程将指导您如何通过数据合并和matplotlib的强大功能实现这一目标。

问题场景

假设我们有一个名为day_df的数据集,其中包含年份(yr)、季节(season)和天气情况(weathersit)等分类变量,以及一个数值变量cnt(计数)。我们希望同时可视化按这三个分类变量分组后的cnt的平均值和总和。

直接尝试将两个groupby().agg().plot.barh()的结果合并到一个图中通常会失败,因为它们生成的是独立的图表。此外,如果尝试手动使用plt.bar()或plt.barh(),可能会遇到索引对齐和标签设置的挑战,尤其是在处理多层索引时。

解决方案核心思路

解决此问题的关键在于:

独立聚合数据: 分别计算每个分组的平均值和总和。合并聚合结果: 将这些独立的聚合结果合并到一个Pandas DataFrame中。使用Matplotlib绘制: 利用Matplotlib的barh()(或bar())函数在同一个坐标轴上绘制合并后的数据,并通过调整条形的位置和宽度实现并排显示。

详细步骤与代码示例

1. 准备数据并进行分组聚合

首先,我们需要对原始数据进行两次分组聚合,一次计算cnt的平均值,另一次计算cnt的总和。为了方便后续合并,聚合后需要使用reset_index()将多层索引转换为普通列。

立即学习“Python免费学习笔记(深入)”;

Remusic Remusic

Remusic – 免费的AI音乐、歌曲生成工具

Remusic 514 查看详情 Remusic

import pandas as pdimport numpy as npimport matplotlib.pyplot as plt# 假设 day_df 是您的原始数据框# 为了教程的可运行性,这里创建一个模拟数据框data = {    'yr': np.random.choice([0, 1], 100),    'season': np.random.choice([1, 2, 3, 4], 100),    'weathersit': np.random.choice([1, 2, 3], 100),    'cnt': np.random.randint(100, 1000, 100)}day_df = pd.DataFrame(data)# 计算每个分组的平均值并重置索引day_mean_dataframe = day_df.groupby(by=["yr", "season", "weathersit"]).agg({"cnt": "mean"}).reset_index()# 计算每个分组的总和并重置索引day_sum_dataframe = day_df.groupby(by=["yr", "season", "weathersit"]).agg({"cnt": "sum"}).reset_index()print("平均值数据框(部分):")print(day_mean_dataframe.head())print("n总和数据框(部分):")print(day_sum_dataframe.head())

2. 合并聚合后的数据框

接下来,我们将这两个聚合后的数据框合并。由于它们共享相同的分组键(yr, season, weathersit),我们可以使用pd.merge()函数进行内连接。为了区分聚合结果,我们使用suffixes参数为cnt列添加后缀。

# 合并两个数据框merged_df = pd.merge(day_mean_dataframe, day_sum_dataframe,                      on=["yr", "season", "weathersit"],                      suffixes=('_mean', '_sum'))print("n合并后的数据框(部分):")print(merged_df.head())

merged_df现在包含每个分组的cnt_mean和cnt_sum两列,方便我们进行统一绘图。

3. 使用Matplotlib绘制并排条形图

现在,我们可以使用Matplotlib的barh()函数来绘制水平并排条形图。

# 创建图和子图对象fig, ax = plt.subplots(figsize=(12, 8)) # 调整图大小以适应更多标签# 为每个分组创建一个位置数组r1 = np.arange(len(merged_df))height1 = 0.4 # 设置条形的高度,用于 barh# 绘制平均值条形ax.barh(r1, merged_df["cnt_mean"], height=height1, label='平均值 (Mean)', color='skyblue')# 绘制总和条形,将其位置偏移,实现并排效果ax.barh(r1 + height1, merged_df["cnt_sum"], height=height1, label='总和 (Sum)', color='lightcoral')# 设置Y轴刻度标签# 将刻度放在两个条形之间ax.set_yticks(r1 + height1 / 2) # 生成可读性强的Y轴标签,结合所有分组键ax.set_yticklabels([f'年份: {row.yr}, 季节: {row.season}, 天气: {row.weathersit}'                     for _, row in merged_df.iterrows()])# 添加图例、轴标签和标题ax.set_xlabel('计数 (Count)')ax.set_ylabel('分组类别 (Group Categories)')ax.set_title('不同分组下计数平均值与总和的对比')ax.legend()# 调整布局,防止标签重叠plt.tight_layout()plt.show()

代码说明与注意事项

reset_index()的重要性: 在groupby().agg()之后调用reset_index()是关键一步。它将多层索引转换为普通列,使得后续的pd.merge()操作更加直接,并且在设置yticklabels时也能方便地访问各个分组键。pd.merge()的suffixes参数: 使用suffixes=(‘_mean’, ‘_sum’)可以避免合并后出现同名列冲突,并清晰地标识出每个聚合结果的来源。np.arange(len(merged_df)): 这创建了一个等差数列,作为每个分组在Y轴上的基准位置。height1和位置偏移: height1定义了每个水平条形的高度。通过将第二个条形的位置设置为r1 + height1,可以使其紧邻第一个条形并排显示。如果使用plt.bar()绘制垂直条形图,则需要调整width和x轴位置。ax.set_yticks()和ax.set_yticklabels(): 对于水平条形图,Y轴代表分组类别。我们需要手动设置Y轴的刻度位置(r1 + height1 / 2将刻度标签置于两个条形之间)和刻度标签。通过遍历merged_df并格式化字符串,可以创建包含所有分组信息的清晰标签。plt.tight_layout(): 这个函数会自动调整子图参数,以给定的填充方式,使之适应图的布局,通常用于防止标签或标题重叠。可读性: 选择合适的figsize、height(或width)、颜色和字体大小,可以显著提升图表的可读性。对于分组类别较多的情况,水平条形图(barh)通常比垂直条形图(bar)更适合显示长标签。

总结

通过上述步骤,我们成功地将两个基于相同分组但聚合方式不同的数据集(平均值和总和)合并,并在一个清晰的水平条形图中进行了并排可视化。这种方法不仅解决了直接绘制的难题,还提供了高度的灵活性和定制性,使您能够创建专业且易于理解的数据分析图表。掌握这种技术,对于进行多维度数据比较和报告展示非常有价值。

以上就是在Python中合并并可视化多个groupby聚合条形图的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/857406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 20:56:34
下一篇 2025年11月27日 20:56:55

相关推荐

  • 模因硬币的兴起及其文化影响

    加密货币是一个庞大且快速变化的领域,新概念层出不穷。在这个领域中,有一个引人入胜的部分被称为模因币。 加密货币是一个广阔且持续变化的领域,新想法经常涌现。这个领域中的一个有趣方面是模因币,它们是以网络笑话和流行元素为灵感的数字货币。 不同于那些通常专注于复杂技术和金融的传统加密货币,模因币更加轻松、…

    2025年12月8日
    000
  • 随着市场势头的发展,交易者再次问:这是购买加密货币的最佳时机吗?

    两个知名代币展现出积极趋势,恒星(stellar)稳定在0.29美元,而咒语(mantra)近期攀升至0.5美元。 随着市场动力增强,交易者再次询问:现在是投资加密货币的最佳时机吗?这两个知名代币发出积极信号,恒星维持在0.29美元,咒语持续上涨,最近达到0.5美元。它们都提供熟悉的故事线,但第三个…

    2025年12月8日
    000
  • Floki(Floki)继续以看涨的结构进行贸易

    floki继续保持其积极的交易态势,尽管面临更大范围市场的低迷压力。在关键的支持交汇点,这一阶段正为潜在的大幅增长做准备。 即便是在较为脆弱的市场环境中,Floki依然展现了强劲的实力。其价格走势依旧保持上涨趋势,并且自3月份以来一直在一个持续上行的交易通道内运行。 此通道的下限已经过多次检验与认可…

    2025年12月8日
    000
  • 美国财政

    美国财政部正密切关注稳定币的发展动态,而ripple的rlusd如今已跻身tether(usdt)和circle(usdc)等业界领先者的行列。 近期,美国财政部在向美国财政部借贷咨询委员会(TBAC)发表的演讲中,对四大稳定币进行了详细分析:Tether的USDT、Circle的USDC、Ripp…

    2025年12月8日
    000
  • Solaxy(Solx)筹集了令人惊叹的4,150万美元的预售资金,针对Solana的拥塞问题

    该项目现已筹集了惊人的4,150万美元的预售资金 – 在过去三天内,超过150万美元 加密货币新闻网站Cryptonews报告说,Solaxy(Solx)是Solana上的第2层解决方案,已迅速成为加密货币世界中的热门话题。 该项目现在已经筹集了惊人的4,150万美元的预售资金 &#82…

    2025年12月8日
    000
  • Qubetics($ TICS)是现在投资的最好的加密硬币之一

    即便众多数字资产更多依赖于短期热度,新兴的加密项目正逐渐赢得认可,因其能够提供实质性的工具和服务。 在数字资产领域中,尽管很多项目因短期炒作而受到关注,但一些新的加密项目正崭露头角,以提供实用工具、开发者解决方案及企业级基础设施而闻名。与那些单纯依赖品牌宣传的项目不同,这些项目通过技术创新和独特的应…

    2025年12月8日
    000
  • MiningCoop – 用于移动用户的领先的免费云挖掘平台

    以下是伪原创后的版本: 本文盘点了2025年备受青睐、合规且适合新手的五大加密收益平台。无论你是刚入门还是有一定经验,这些平台都能帮助你在低门槛下实现数字资产的增长。 在2025年的加密货币市场中,随着比特币价格的波动以及挖矿设备的成本居高不下,“免矿机挖矿”、“移动云挖矿”等概念逐渐兴起。以下是五…

    2025年12月8日
    000
  • 鲸鱼正在悄悄购买$ wai,这就是为什么重要的

    这是下一轮突破前的布局吗? xrp的价格结构刚刚攀升至2.34美元,cme期货现已上线,etf的期待值也在上升。 主要标题:CME期货推动XRP价格结构进入焦点,Stellar(XLM)成交量峰值达16% 加密货币市场依旧是热议的话题,特别是随着CME集团(NYSE:CME)推出的XRP期货。首日交…

    2025年12月8日
    000
  • 比特币要来卡尔达诺。这次,这不是包裹的令牌。

    多年来,比特币始终是加密货币领域中坚不可摧的领军者——强大、去中心化但略显顽固。它似乎不太愿意与其他系统协作。 多年来,比特币依然是加密货币领域的王者——性能卓越、去中心化但有些固执。它并不热衷于与其他系统互动。然而,众所周知,在可编程性和互操作性方面存在局限性。不过,这种情况可能会发生变化,因为比…

    2025年12月8日
    000
  • 2025-W未流通的美国银鹰以创纪录的$ 91价格首次亮相

    美国造币局推出了2025-W未发行的美国银鹰,售价为91美元,这一价格创造了硬币历史上的新高点。 ![](data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIi…

    2025年12月8日
    000
  • 比特币第2层解决方案MERLIN链(MERL)价格飙升,binance Futures列表

    比特币第二层解决方案merlin chain(merl)在binance的重要声明后经历了显著的价格上涨。 在Binance的重要公告之后,Merlin Chain(Merl)的价格呈现出了明显的上升趋势。 5月28日,Binance宣布推出了以美元计价的MERL(MERL)永续合约。 这一消息推动…

    2025年12月8日
    000
  • 最佳的5个AI模因硬币在2025年关注

    随着人工智能逐渐渗透到我们数字生活的各个角落,其对金融领域,尤其是加密货币生态的影响变得愈发显著。 在这个人工智能深度嵌入数字世界的时代,它在金融领域的存在感,特别是对加密货币市场的影响力,不容忽视。其中一项令人瞩目的发展便是所谓的“人工智能模因币”。 这类新型数字货币不仅融合了模因文化的趣味性与病…

    2025年12月8日
    000
  • 顶级加密预售

    aurealone是近期推出的区块链项目,致力于优化游戏和元视频的多个方面。 在加密货币领域中,新项目层出不穷,预售为早期投资者提供了独特的参与机会及潜在的增长空间。当投资者寻找当前最具潜力的加密货币时,对一些顶尖加密预售项目的分析显示了一些令人期待的选择。 2024年最佳加密预售项目概览:深入剖析…

    2025年12月8日
    000
  • 忘记比特币,这是AI驱动的加密货币的新市场机会

    如果您想弄清楚要爆炸的下一个加密货币,可能是时候缩小并查看更大的局面了。 如果您想弄清楚要爆炸的下一个加密货币,可能是时候缩小并查看更大的局面了。现在,令牌引起了严重的关注,不仅仅是炒作,它们与AI,Energy和基础设施之类的真实趋势息息相关。 像Dawgz AI这样的项目通过倾斜这种转变而获得了…

    2025年12月8日
    000
  • 数以百万计的短裤被清算,因为放屁币爆炸更高,它可以撕成月球还是只留出气味?

    the explosive rally of fartcoin has wiped out millions of dollars worth of short positions, while floppypepe (fppe) is catching the attention of inves…

    2025年12月8日
    000
  • 由于更广泛的Memecoin市场轨迹,Fartcoin(Fartcoin)的价格下跌了5%

    周三清晨,dogecoin、shiba inu以及pepe等多款主流meme币集体遭遇滑铁卢。 周三清晨,dogecoin、shiba inu以及pepe等多款主流meme币集体遭遇滑铁卢。 近期表现抢眼的Fartcoin(Fartcoin)也未能幸免于难,其价格在过去24小时内下跌了5%。 近七天…

    2025年12月8日
    000
  • 根据南非的交换控制条例,加密货币不是“资本”

    在一项具有开创性意义的判决中,标准银行诉南非储备银行一案由比勒陀利亚高等法院裁定,加密货币不属于“资本”的范畴。 比勒陀利亚高等法院判定,在南非的外汇管制法规下,加密货币并不被视为“资本”。 简而言之 在一项对南非加密货币行业具有深远影响的标志性判决中,比勒陀利亚高等法院裁定,依据外汇管制法规,加密…

    2025年12月8日
    000
  • 令牌! (以前是Coinagenda)为比特币和Web3,加密思想领导者和30个有前途的早期区块链创业公司提供了领先的投资者

    经过12年的历程,tokenize(原名coinagenda)如今已成为展示比特币与web3、加密思想领袖及30家早期区块链创业公司的顶级平台。 今年,Tokenize!(前身为Coinagenda)将在5月29日至31日于拉斯维加斯举办其第二届年度全球峰会。此次活动将涵盖比特币与Web3、加密思想…

    2025年12月8日
    000
  • 比特币(BTC)价格调情,$ 109,400,交易费下降到$ 1.50以下

    比特币价格持续上涨,但加密网络的交易费用却呈现出截然不同的走势。实际上,这些费用已降至1.5美元以下。 比特币的价格目前在109,000美元附近徘徊。然而,一种反常现象正吸引着加密投资者的目光:区块链交易费用的显著下滑。这是一个耐人寻味的悖论!以下是更详细的分析。 比特币价格上涨,但网络使用减少 比…

    2025年12月8日
    000
  • GameStop购买蘸酱,藏匿4,710个比特币

    5月28日,专业资产管理公司首席执行官安东尼·庞普里亚诺(anthony pompliano)在x平台上的帖子中对gamestop购入比特币的行为进行了评论。 专业资产管理公司首席执行官安东尼·庞普里亚诺对GameStop的最新行动作出了回应。 事件经过:周一,GameStop公司(纽交所代码:GM…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信