百度飞桨学院小白逆袭大神第三天题目解析

Sylvia ·
更新时间:2024-11-11
· 729 次阅读

百度飞桨学院小白逆袭大神第三天题目解析题目题目解析题目案例方法一:方法案例解析2饼状图解析

json文件点击下载

题目

!!!作业说明!!!
请在下方提示位置,补充代码,对《青春有你2》对选手体重分布进行可视化,绘制饼状图,如下图所示:
不要求跟下图样式一模一样
在这里插入图片描述

任务描述:
基于第二天实践使用Python来爬去百度百科中《青春有你2》所有参赛选手的信息,进行数据可视化分析。
在这里插入图片描述

题目解析 题目案例方法一: #导入第三方库 import matplotlib.pyplot as plt import numpy as np import json import matplotlib.font_manager as font_manager #显示matplotlib生成的图形 %matplotlib inline#线下测试会报错 #打开文档并用loads()处理保存数据 with open('data/data31557/20200422.json', 'r', encoding='UTF-8') as file: json_array = json.loads(file.read()) #绘制小姐姐区域分布柱状图,x轴为地区,y轴为该区域的小姐姐数量 zones = [] #循环列表,把'zone'的值存入zones for star in json_array: zone = star['zone'] zones.append(zone) print(len(zones)) print(zones) zone_list = [] count_list = [] #循环列表 for zone in zones: if zone not in zone_list: count = zones.count(zone)#判断个数 zone_list.append(zone)#存入名称 count_list.append(count)#存入个数 print(zone_list) print(count_list) # 设置显示中文 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)#x轴 plt.yticks(fontsize=20)#y轴 plt.legend()#图例 plt.title('''《青春有你2》参赛选手''',fontsize = 24)#标题 plt.savefig('/home/aistudio/work/result/bar_result.jpg')#保存地址 #地址线下自行修改 plt.show()#进行查看

输出结果:

['中国湖北', '中国四川', '中国山东', '中国浙江', '中国山东', '中国台湾', '中国陕西', '中国广东', '中国黑龙江', '中国上海', '中国四川', '中国山东', '中国安徽', '中国安徽', '中国安徽', '中国北京', '中国贵州', '中国吉林', '中国四川', '中国四川', '中国江苏', '中国山东', '中国山东', '中国山东', '中国山东', '中国江苏', '中国四川', '中国山东', '中国山东', '中国广东', '中国浙江', '中国河南', '中国安徽', '中国河南', '中国北京', '中国北京', '马来西亚', '中国湖北', '中国四川', '中国天津', '中国黑龙江', '中国四川', '中国陕西', '中国辽宁', '中国湖南', '中国上海', '中国贵州', '中国山东', '中国湖北', '中国黑龙江', '中国黑龙江', '中国上海', '中国浙江', '中国湖南', '中国台湾', '中国台湾', '中国台湾', '中国台湾', '中国山东', '中国北京', '中国北京', '中国浙江', '中国河南', '中国河南', '中国福建', '中国河南', '中国北京', '中国山东', '中国四川', '中国安徽', '中国河南', '中国四川', '中国湖北', '中国四川', '中国陕西', '中国湖南', '中国四川', '中国台湾', '中国湖北', '中国广西', '中国江西', '中国湖南', '中国湖北', '中国北京', '中国陕西', '中国上海', '中国四川', '中国山东', '中国辽宁', '中国辽宁', '中国台湾', '中国浙江', '中国北京', '中国黑龙江', '中国北京', '中国安徽', '中国河北', '马来西亚', '中国四川', '中国湖南', '中国台湾', '中国广东', '中国上海', '中国四川', '日本', '中国辽宁', '中国黑龙江', '中国浙江', '中国台湾'] ['中国湖北', '中国四川', '中国山东', '中国浙江', '中国台湾', '中国陕西', '中国广东', '中国黑龙江', '中国上海', '中国安徽', '中国北京', '中国贵州', '中国吉林', '中国江苏', '中国河南', '马来西亚', '中国天津', '中国辽宁', '中国湖南', '中国福建', '中国广西', '中国江西', '中国河北', '日本'] [6, 14, 13, 6, 9, 4, 3, 6, 5, 6, 9, 2, 1, 2, 6, 2, 1, 4, 5, 1, 1, 1, 1, 1]

在这里插入图片描述
这里面的图大小溢出(线下运行的问题)

方法案例解析2 #导入第三方库 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()

在这里插入图片描述

饼状图解析

主要是思路
原图
在这里插入图片描述

#导入第三方库 import matplotlib.pyplot as plt import numpy as np import json import matplotlib.font_manager as font_manager #显示matplotlib生成的图形 %matplotlib inline#线下测试会报错 #打开文档并用loads()处理保存数据 with open('data/data31557/20200422.json', 'r', encoding='UTF-8') as file: json_array = json.loads(file.read()) weight = [] #循环列表,把'zone'的值存入zones for star in json_array: weight = star['weight'] weight.append(weight) print(len(weight)) print(weight)

本着抄代码的原则,能不写绝对不写,不用改无所谓
这里生成的结果是小姐姐们的体重和数量

那么我们就根据需要分成4块,计算出他的人的数量
然后求出相应比例就好了

百度圆图的制作
这个是我的部分,你们自己看

name_list = ['55kg'] explode=[0,0.2,0,0] color=['RoyalBlue','DarkOrange','ForestGreen','Brown'] plt.axes(aspect='equal') plt.rcParams['font.sans-serif'] = ['SimHei'] plt.pie(x=ratio_list,labels=name_list,autopct='%.1f%%', explode =explode, colors=color, shadow=True, labeldistance=1.1, startangle = 90,pctdistance = 0.6)

其他的,自己看一下,这只是我的想法
我最开始想多来一百多行才出结果,后来经过点拨减了一半
如果有好的思路,欢迎留言!!!


作者:叁岁学编程



学院

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章