已经有了图书借阅记录的数据,每个记录中包括了如下信息:uid,bid,title,date,结合图书借阅记录,将记录以来每年借的最多的书及其次数绘制成一张饼状图,次数为所占份额的python代码
时间: 2023-10-03 12:09:13 浏览: 118
以下是一个示例代码,假设数据以列表 `borrow_records` 存储,每个记录是一个字典,包含了 `uid`(用户ID)、`bid`(书籍ID)、`title`(书名)、`date`(借书日期)四个字段:
```python
from collections import defaultdict
import matplotlib.pyplot as plt
# 统计每年借阅最多的书
book_counts = defaultdict(int)
for record in borrow_records:
year = record['date'][:4]
book_counts[(year, record['bid'])] += 1
top_books = {}
for year in set([k[0] for k in book_counts.keys()]):
year_books = [(bid, count) for (y, bid), count in book_counts.items() if y == year]
top_books[year] = sorted(year_books, key=lambda x: x[1], reverse=True)[0]
# 绘制饼状图
sizes = []
labels = []
for year, (bid, count) in top_books.items():
sizes.append(count)
labels.append(f"{year}: {bid}")
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.show()
```
该代码会输出一个饼状图,其中每个扇形代表一本书,它的面积与它在整个数据集中的借阅次数占比成正比。每个扇形的标签格式为 `年份: 书籍ID`。
阅读全文