You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib饼图中对相同标签的数值求和并合并占比?

合并饼图中相同标签的数值

方法1:在数据库查询阶段完成合并(推荐)

直接修改SQL语句,用GROUP BY按商品名称分组,同时对sztuki求和,从数据库拿到的就是已经合并好的数据,无需额外处理:

# 修改查询语句,分组求和商品数量
query = "SELECT towar, SUM(sztuki) AS suma_sztuk, SUM(zysk) AS suma_zysku FROM sklep GROUP BY towar"
mycr.execute(query)
wyniki = mycr.fetchall()

nazwy = []
sztuki = []
for a in wyniki:
    nazwy.append(a[0])
    sztuki.append(a[1])

plt.pie(sztuki, labels=nazwy, autopct='%.1f%%')
plt.show()

方法2:在Python代码中处理查询结果

如果不想修改SQL,可以用字典遍历查询结果,累加相同标签对应的数值:

query = "SELECT towar, sztuki, zysk FROM sklep"
mycr.execute(query)
wyniki = mycr.fetchall()

# 用字典存储合并后的商品名称与对应数量
towar_sztuki = {}
for a in wyniki:
    towar = a[0]
    ilosc = a[1]
    if towar in towar_sztuki:
        towar_sztuki[towar] += ilosc
    else:
        towar_sztuki[towar] = ilosc

# 提取字典的键和值作为饼图的标签与数据
nazwy = list(towar_sztuki.keys())
sztuki = list(towar_sztuki.values())

plt.pie(sztuki, labels=nazwy, autopct='%.1f%%')
plt.show()

两种方法都能实现相同标签的数值合并,优先选择方法1——数据库的聚合操作比Python循环处理更高效,尤其是数据量较大时。

内容的提问来源于stack exchange,提问作者Michał

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:39:34