python - 绘制饼图时出现问题

标签 python pandas dataframe matplotlib

我有作者和各自书名的数据集。样本数据如下:

  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)你会得到这样的结果:

enter image description here

关于python - 绘制饼图时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806136/

相关文章:

python - Pandas :将一列与数据框的所有其他列进行比较

python - 崩溃后重新连接到套接字

python - 如果-else if-else语句,您将如何解析标准? (使用RPLY)

python - pandas : pd. concat 导致重复的列

python - 在 Python 中使用 prints 创建数据框

python - 如果至少有一个值低于阈值,则选择给定 2 列的行

python - 寻找一种更快的方法在包含另一列行中的字典值的数据框中创建新列

python - 如何在 ubuntu 10.04 中为 django 框架安装 libmemcached

python - 从包含 dict 的 pandas 列中提取有用的信息

python - 在 Pandas 中按整数天计算滚动平均值