def avg_rating_by_location(df):
# 计算不同公司所在地的平均评分,并保留两位小数
avg_rating = df.groupby('company_location')['rating'].mean().round(2).reset_index()
top_five_locations = avg_rating.nlargest(5, 'rating')
bottom_five_locations = avg_rating.nsmallest(5, 'rating')
print('平均评分最高的五个公司所在地:')
print(top_five_locations)
print('平均评分最低的五个公司所在地:')
print(bottom_five_locations)
# 绘制柱状图
plt.figure(figsize=(12, 8))
plt.subplot(2, 1, 1)
plt.bar(top_five_locations['company_location'], top_five_locations['rating'])
for i, v in enumerate(top_five_locations['rating']):
plt.text(i, v, str(v), ha='center')
plt.title('平均评分最高的五个公司所在地')
plt.ylabel('平均评分')
plt.subplot(2, 1, 2)
plt.bar(bottom_five_locations['company_location'], bottom_five_locations['rating'])
for i, v in enumerate(bottom_five_locations['rating']):
plt.text(i, v, str(v), ha='center')
plt.title('平均评分最低的五个公司所在地')
plt.xlabel('公司所在地')
plt.ylabel('平均评分')
plt.tight_layout()
plt.show()
return top_five_locations, bottom_five_locations