使用matplotlib将Pandas数据框绘制成饼图

20

是否有可能使用matplotlib将DataFrame打印为饼图? Pandas文档中的图表可视化说明了许多图表类型,包括条形图、直方图、散点图等。但饼图却不见了?

3个回答

31

要从数据框 df 绘制饼图,您可以使用Pandas的plot.pie

df.plot.pie(y='column_name')

例子:

import pandas as pd

df = pd.DataFrame({'activity': ['Work', 'Sleep', 'Play'],
                   'hours': [8, 10, 6]})
df.set_index('activity', inplace=True)
print(df)
#               hours
# activity       
# Work          8
# Sleep        10
# Play          6
plot = df.plot.pie(y='hours', figsize=(7, 7))
请注意,饼图的标签是索引条目,这就是使用set_index将索引设置为activity的原因。 要为绘图添加样式,可以使用可传递给DataFrame.plot()的所有参数。这里是一个显示百分比的示例:
plot = df.plot.pie(y='hours', title="Title", legend=False, \
                   autopct='%1.1f%%', explode=(0, 0, 0.1), \
                   shadow=True, startangle=0)

Pandas数据框饼图


2
有趣的是,你的是唯一一个带有图像的。它还突出了其他有用的参数。这应该是最佳答案。 - Dave Liu

22
Pandas内置了pd.DataFrame.plot()方法用于绘制图表。你只需要使用kind='pie'参数并指定需要绘制饼图的列(或使用subplots=True来绘制所有列),它会自动为你添加标签,甚至还会添加百分比标签。
import matplotlib.pyplot as plt

df.Data.plot(kind='pie')

为了使其更加可自定义,您可以这样做:

fig = plt.figure(figsize=(6,6), dpi=200)
ax = plt.subplot(111)

df.Data.plot(kind='pie', ax=ax, autopct='%1.1f%%', startangle=270, fontsize=17)

当您告诉DataFrame使用ax=ax时,您还可以像上面展示的那样使用所有常规的matplotlib plt.pie()标志。


1
这个解决方案很混乱,而且你好像假设了很多东西。df是什么?Data是什么? - Olu Adeyemo

7
import matplotlib.pyplot as plt
plt.pie(DataFrame([1,2,3]))

看起来按预期工作。如果DataFrame有多列,则会引发错误。


1
非常感谢您的回答。它很好用。但是如何根据DataFrame列名放置图表标签呢? - Nilani Algiriyage
1
阅读“pie”的文档,并使用DataFrame的“.columns”。 - Dan Allan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接