for data in tqdm(DATA): '''从DATA中每次获取一个小数据集''' # 每个小数据集分别统计省份专利分布 counts_dict = data['省份'].value_counts().to_dict() for name, num in counts_dict.items(): if name in Counts.keys(): Counts[name] += num else: Counts[name] = num # 累加得到统计值的总和,可以验证是否统计了全部数据 # 若结果等于大数据集的行数,说明已经统计了全部数据的专利分布 print(sum(list(Counts.values()))) # 输出:36996264 此时所得结果 Counts 是一个字典:我们将它转化为 DataFrame,代码如下:array = [[k,v] for k,v in Counts.items()] Target = pd.DataFrame(array, columns=['省份', '专利数量']) # 根据专利数量排序,由大到小 Target = Target.sort_values(by='专利数量', ascending=False) Target.head(8) 顺便绘制一个专利分布柱状图:import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置字体为楷体 plt.rcParams['figure.figsize'] = (10, 5) # 调整生成的图表最大尺寸 plt.rcParams['figure.dpi'] = 500 # 每英寸点数
# 设置横轴标签 xticks_labels = ['\n'.join(N) for N in Target['省份']] xticks(np.linspace(0,34,34,endpoint=False), xticks_labels) # 设置纵轴标签 yticks_labels = ['{}百万'.format(i) if i > 0 else'0'for i in range(0,7)] yticks(np.linspace(0,6000000,7,endpoint=True), yticks_labels) # 绘制柱状图 plt.bar(Target['省份'],Target['专利数量']) # 设置图标题 plt.title('全国专利分布') plt.show()