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

如何为DataFrame的数据类型绘制饼图?解决TypeError报错

可视化数据集数据类型饼图的报错解决

问题场景

现有如下行星数据集:

import pandas as pd
df_planet = pd.DataFrame({'mass': [0.330, 4.87 , 5.97],
                          'radius': [2439.7, 6051.8, 6378.1],
                          'planet': ['Mercury', 'Venus', 'Earth']})

查看数据类型:

df_planet.dtypes
# 输出:
# mass      float64
# radius    float64
# planet     object
# dtype: object

想要绘制数据类型占比的饼图(66.67% float64、33.33% object),但执行以下代码时报错:

import matplotlib.pyplot as plt
plt.pie(df_planet.dtypes, autopct='%.0f%%')

错误信息:

TypeError: float() argument must be a string or a number, not 'numpy.dtype[float64]'

报错原因

plt.pie()要求传入数值型数据作为各扇区的大小,但df_planet.dtypes返回的是numpy.dtype对象序列,不是每种类型的计数,因此无法被转换为浮点数用于绘图。

解决方法

先统计每种数据类型的出现次数,再将统计结果传给plt.pie():

完整实现代码

import pandas as pd
import matplotlib.pyplot as plt

# 创建数据集
df_planet = pd.DataFrame({'mass': [0.330, 4.87 , 5.97],
                          'radius': [2439.7, 6051.8, 6378.1],
                          'planet': ['Mercury', 'Venus', 'Earth']})

# 统计数据类型的频次
type_counts = df_planet.dtypes.value_counts()

# 绘制饼图
plt.pie(type_counts.values, labels=type_counts.index, autopct='%.2f%%')
plt.title('Dataset Data Type Distribution')
plt.show()

代码说明

  • df_planet.dtypes.value_counts():自动统计每种数据类型的列数,返回一个Series,索引为数据类型,值为对应列数。
  • type_counts.values:提取计数的数值,作为饼图各扇区的大小。
  • type_counts.index:提取数据类型名称,作为饼图的标签。
  • autopct='%.2f%%':设置百分比显示格式为保留两位小数,匹配需求中的66.67%和33.33%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:25:27