You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Matplotlib报错:can't multiply sequence by non-int of type 'float' 求助

解决Matplotlib饼图报错:can't multiply sequence by non-int of type 'float'

嘿,这个问题我太熟了!你遇到的错误根源完全不在数据类型转换上,而是**plt.pie()的参数传递顺序搞错了**。

错误原因拆解

Matplotlib的plt.pie()函数参数是有严格顺序的:

  • 第一个参数是必填的数值数据(也就是你这里的df3.total_cases
  • 第二个参数是explode,用来设置饼块和中心的分离距离(默认是None)

而你直接把df3.index放在了第二个参数的位置,函数会把这个索引序列当成explode参数处理。后续autopct='%1.1f%%'在内部进行格式计算时,会尝试对这个序列做浮点数乘法,自然就抛出了“不能用浮点数乘序列”的错误。

修正后的代码

你只需要把df3.index通过**关键字参数labels=**明确传递给饼图,就能解决问题:

import pandas as pd
import matplotlib.pyplot as plt

# 计算各大洲总病例数(你的原有代码)
df3 = pd.DataFrame(df.groupby(by="continent")['total_cases'].sum())

plt.figure(figsize=(15, 8))
plt.title('Total case for each continent')
# 关键:用labels=指定索引为饼图标签,而不是靠位置传递
plt.pie(df3.total_cases, labels=df3.index, shadow=True, autopct='%1.1f%%', startangle=90)
plt.show()

额外小贴士

以后调用Matplotlib的复杂函数时,尽量多用关键字参数来传递非必填项,不仅能避免参数顺序出错,代码可读性也会更高~

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

火山引擎 最新活动