一、目标
现在我们有全球排名靠前的10000本书的数据,那么请统计一下下面几个问题:
1、不同年份书的数量
2、不同年份的书的平均评分情况
二、获取数据
import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom matplotlib import font_managermy_font = font_manager.FontProperties(fname=\"C:\\Windows\\Fonts\\simfang.ttf\")df = pd.read_csv(\"./books.csv\")
三、实现目标1
df = df[pd.notnull(df[\"original_publication_year\"])].groupby(by=\"original_publication_year\").count().iloc[:,0]plt.figure(figsize=(20,8),dpi=80)_x = df.index_y = df.valuesplt.bar(list(range(len(_x))),_y,color=\"green\")plt.xticks(list(range(len(_x)))[::10],_x[::10].astype(int),rotation=45)plt.xlabel(\"年份\",fontproperties=my_font)plt.ylabel(\"当年书的数量\",fontproperties=my_font)plt.title(\"不同年份出版书的数量(样本:10000本)\",fontproperties=my_font)plt.show()
四、实现目标2
# 验证公元前1750年的那本书的平均分是否为3.63分# t= df[df[\"original_publication_year\"]==-1750.0]# print(t[\"average_rating\"])df=df[pd.notnull(df[\"original_publication_year\"])].groupby(\"original_publication_year\").mean()[\"average_rating\"]# 绘图plt.figure(figsize=(20,8),dpi=80)_x = df.index_y = df.valuesplt.plot(range(len(_x)),_y,color=\"green\")plt.xticks(list(range(len(_x)))[::10],_x[::10].astype(int),rotation=45)plt.xlabel(\"年份\",fontproperties=my_font)plt.ylabel(\"书的平均评分\",fontproperties=my_font)plt.title(\"不同年份书的平均评分情况(样本:10000本书)\",fontproperties=my_font)plt.show()