使用Python:将Excel中的数据制作成圆饼图

3

我是Python的新手,已经在网络上搜索了很多关于我的问题的内容,但是却一无所获。

我有一个文件,它有3列:

Issue_id
Type
Status

现在我想创建一个饼图,以显示Excel表格中所有问题的状态。
我已经使用了以下代码并获得了结果,但在饼图中,我只得到了数值而没有状态。
from matplotlib import pyplot as plt
import pandas as pd

fig=plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.axis('equal')

wb=pd.read_csv('Book1.csv')

a = wb.groupby('Status').Status.count()
print(type(a))
print(a)

ax.pie(a, labels=a, autopct='%1.1f%%')

#print(b)
plt.show()

请问我缺少什么?

Excel :

Excel


你遇到了什么错误?你能提供一个能够重现你的错误的数据示例吗? - TYZ
只需添加 import matplotlib.pyplot as plt - Kurohige
3个回答

0

从我的测试中,问题在于您如何传递标签:

ax.pie(a, labels=a, autopct='%1.1f%%')

你应该传递计数对象的索引以获取相应的标签。通过将 a 传递到 labels 中,你只是传递了计数。显式地传递 a.index 将传递你正在计数的名称。
ax.pie(a, labels=a.index, autopct='%1.1f%%')

0

使用您的代码

import pandas as pd
import matplotlib.pyplot as plt

fig=plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.axis('equal')
wb=pd.read_csv('Book1.csv')
a = wb.groupby('Status').Status.count()
b = wb.Status.unique()
ax.pie(a, labels=b, autopct='%1.1f%%')
plt.show()

使用以下数据

Issue_Name,Type,Status A,1,Active C,2,Resolved C,2,Resolved B,2,Proposed B,2,Proposed B,2,Proposed

你应该得到这个output


谢谢!我在任何地方都找不到unique函数,它看起来是一个简单的解决方案,但很难找到。 - Himanshu Bakshi

0

关于标签,你错了,应该使用a.keys()来获取正确的标签。

fig1, ax = plt.subplots()
ax.pie(a, labels=a.keys(), autopct='%1.1f%%')
ax.axis('equal')
plt.show()

enter image description here


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