我有作者和各自书名的数据集。样本数据如下:
Author Title
A abc
B xyz
C pqr
E asd
R wer
我想绘制一个图表,显示每个作者写书的频率。为此,我首先使用 value_counts() 函数。
books_df.Author.value_counts()
我得到这个输出:
A 6
C 4
R 3
D 3
E 3
S 1
B 1
Name: Author, dtype: int64
我可以使用以下代码轻松获取条形图:
plt.bar(books_df.Author.unique(),books_df.Author.value_counts())
但是当我尝试使用它生成饼图时:
plt.pie(books_df.value_counts())
我收到错误“DataFrame”对象没有属性“value_counts”
我在哪里做拧?
预期输出:
包含图书比例、作者姓名以及图书数量最多的作者的饼图应该脱颖而出。
最佳答案
你在这里犯了一个愚蠢的错误。您应该使用 plt.pie(books_df.Author.value_counts())
,而不是使用 plt.pie(books_df.value_counts())
。您忘记在此处添加“作者”。
现在,根据您的输出要求,您可以按照以下步骤操作:
1) 创建一个包含唯一作者列表的标签:
label = books_df.Author.value_counts().index
2)创建尺寸:
sizes = (books_df.Author.value_counts()).tolist()
3) 要突出显示书籍数量最多的作者部分:
explode = (0.1, 0, 0, 0,0,0,0)
4)绘制图表:
plt.pie(sizes, explode=explode, labels=labels,
autopct='%1.1f%%',shadow=True, startangle=140)
plt.axis('equal')
plt.show()
5)你会得到这样的结果:
关于python - 绘制饼图时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806136/