import pandas as pd df = pd.read_csv('lending.dat') df['year'] = pd.to_datetime(df['date']).dt.year df_book_count = df[['bid', 'title']].drop_duplicates().merge( df.groupby('bid').size().reset_index(name='count'), on='bid') top5_books = pd.DataFrame() for year in df['year'].unique(): df_year = df[df['year'] == year] if len(df_year) >= 5: # 只有当年份至少有 5 本书籍时,才计算前 5 本最受欢迎的书籍 # 按照每个书籍的借阅次数进行排序,并选择前 5 本书籍 df_year_sorted = df_book_count[df_book_count['bid'].isin(df_year['bid'])].sort_values('count', ascending=False).head(5) # 将年份信息添加到 DataFrame 中 df_year_sorted['year'] = year top5_books = pd.concat([top5_books, df_year_sorted], ignore_index=True) # 输出结果 print(top5_books[['year', 'title', 'count']])统计每年借阅量排前五的图书及其借阅量对其进行新颖的可视化展示
时间: 2023-08-09 07:05:03 浏览: 221
python中时间转换datetime和pd.to_datetime详析
对于这个问题,可以使用Python中的数据可视化工具Matplotlib或者Seaborn来实现。以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
import seaborn as sns
# 使用Seaborn设置样式
sns.set_style("whitegrid")
# 绘制柱状图
fig, ax = plt.subplots(figsize=(10, 6))
sns.barplot(x='year', y='count', hue='title', data=top5_books, ax=ax)
# 设置标题和标签
ax.set_title('Top 5 Books Borrowed Each Year')
ax.set_xlabel('Year')
ax.set_ylabel('Number of Borrows')
# 添加图例
ax.legend(loc='upper right')
# 显示图形
plt.show()
```
这个代码会生成一个柱状图,横轴是年份,纵轴是借阅量,每个颜色代表一本图书。你可以根据实际需要调整图形的大小、颜色、字体等参数。
阅读全文