2021-03-27

这篇博客展示了如何利用python的matplotlib和pandas库将爬取的JSON数据转化为条形图进行可视化。首先导入所需库,然后读取JSON文件,通过groupby计算各区域的选手数量。接着,设置中文显示并创建条形图,调整横坐标倾斜角度和字体大小。最后,保存图形并展示。这种方法直观地呈现了《青春有你2》参赛选手地域分布情况。
摘要由CSDN通过智能技术生成

今天的任务是把昨天爬到的数据以图的形式展现出来,方便观察。

主要是利用matplotlib,pandas,numpy库来进行操作。

给大家百度给这三个库的教学链接,百度讲的挺简洁,如果有不懂的地方可以csdn,菜鸟教程
教学链接

百度给的第一个方法可以不用pandas,
先把保存数据的json文件导入,然后筛选信息,给它存到列表里,然后用matplotlib里的bar给他把图画出来。看看代码吧

对了,注意给matplotlib的字体改成中文,原字体是英文。
import matplotlib.pyplot as plt
import numpy as np 
import json
import matplotlib.font_manager as font_manager
import pandas as pd

#显示matplotlib生成的图形
%matplotlib inline


df = pd.read_json('data/data31557/20200422.json')
#print(df)

grouped=df['name'].groupby(df['zone'])
s = grouped.count()

zone_list = s.index
count_list = s.values


# 设置显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体

plt.figure(figsize=(20,15))

plt.bar(range(len(count_list)), count_list,color='r',tick_label=zone_list,facecolor='#9999ff',edgecolor='white')

# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=20)
plt.yticks(fontsize=20)

plt.legend()
plt.title('''《青春有你2》参赛选手''',fontsize = 24)
plt.savefig('/home/aistudio/work/result/bar_result02.jpg')
plt.show()

个人认为第二种更简单一点,用pandas来把json的数据给读进来,之后就会有列索引,再对目标数据进行聚合计数,然后和上面一样,用图表示出来。
看代码。


import matplotlib.pyplot as plt
import numpy as np 
import json
import matplotlib.font_manager as font_manager
import pandas as pd

#显示matplotlib生成的图形
%matplotlib inline


df = pd.read_json('data/data31557/20200422.json')
#print(df)

grouped=df['name'].groupby(df['zone'])
s = grouped.count()

zone_list = s.index
count_list = s.values


# 设置显示中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体

plt.figure(figsize=(20,15))

plt.bar(range(len(count_list)), count_list,color='r',tick_label=zone_list,facecolor='#9999ff',edgecolor='white')

# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=20)
plt.yticks(fontsize=20)

plt.legend()
plt.title('''《青春有你2》参赛选手''',fontsize = 24)
plt.savefig('/home/aistudio/work/result/bar_result02.jpg')
plt.show()

呃,要让我自己敲肯定敲不出来,我还是得多看代码,多实践,今天就这个样子吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值