python小白逆袭大神_python小白逆天(3),Python,小白逆袭,大神,三

该博客通过Python对《青春有你2》选手体重数据进行处理,利用matplotlib库绘制饼状图进行可视化展示。首先读取json文件,提取体重数据并转换为数值形式,然后根据体重范围统计数量,创建标签并分配大小。最后调用pie函数绘制饼图,设置各种参数如阴影、起始角度等,实现了体重分布的直观展示。
摘要由CSDN通过智能技术生成

Python小白逆袭大神 作业三

作业:

对《青春有你2》对选手体重分布进行可视化,绘制饼状图

这个作业是根据第二天爬取获得的json文件进行数据的处理课可视化。

with open('data/data31557/20200422.json','r',encoding='UTF-8') as file:

json_arraay = json.loads(file.read())

先是读取json文件,json_array的内容是:

[{‘name’: ‘刘亚楠’, ‘link’: ‘https://baike.baidu.com/item/%E5%88%98%E4%BA%9A%E6%A5%A0/24271343’, ‘zone’: ‘中国湖北’, ‘constellation’: ‘白羊座’, ‘height’: ‘168cm’, ‘weight’: ‘46kg’, ‘flower_word’: ‘西兰花-看起来和吃起来的味道一样就像我将情绪都挂脸上’, ‘company’: ‘华谊兄弟’},…]

weights = []

for star in json_arraay:

weight = float(star['weight'].replace('kg',''))

weights.append(weight)

接下来for循环访问每个选手的weight选项里面的内容,例如第一个循环里,weight里的内容是字符串格式,并且含有’Kg’字母,所以用空字符替换掉’kg’,比如上面的’46Kg’就变成了‘46’,再用float(‘46’)将字符串数据转化为单精度数据。这样将所有选手的体重以数字的形式存到了 列表weights[] 里面。

size1 = 0

size2 = 0

size3 = 0

size4 = 0

for weight in weights:

if weight <=45:

size1+=1

elif 45< weight <=50:

size2+=1

elif 50< weight <= 55:

size3+=1

else:

size4+=1

sizes = [size1,size2,size3,size4]

labels = '<=45kg','45~50kg','50~55kg','>50kg'

这里就是判断体重的范围,并计数,比如第一个数据46,满足45< weight <=50,所以size2就加一,这里size1-size4最终结果就是各个体重范围的人数,后面定义好元组label。

接下来就是要绘图,调用的函数的文档可以在这个网址上查看:

添加链接描述

fig1,ax1 = plt.subplots()

ax1.pie(sizes,explode=None,labels=labels,autopct='%1.1f%%',

shadow = True,startangle=90)

plt.show()

这三句代码就可以将数据画成圆了,格式主要看第二句,

Axes.pie(self, x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, \*, data=None)[source]

x:就是这里的填的的sizes,是要显示的内容。

explode:默认为None,如果想要显示的某个扇形偏移圆心的话,就可以设置,设置为[0.1,0.1,0.1,0.1]就是每个扇形偏移中心圆点01.*半径的长度。

labels:x对应的图标

autopct:是指按照指定的格式将各个扇形所占比例显示在扇形内部,不设置默认为None,不显示比例。这里‘%1.1f’是比例输出的格式,‘%%’是为了显示百分号。

shadow:为True显示阴影,为False不显示。

startangle:这个参数是表示以x轴为标准,旋转多少度开始画扇形,这里90就是从x轴逆时针旋转90度方向开始绘制图形。

还有其他参数就不介绍了,有兴趣的可以去看下。

这里为了显示的是个正圆,要加上代码:

ax1.axis('equal')

保存显示的图片的时候,会有错误,那是因为没有文件夹,在相应的路径下建好文件夹就可以了。

最后整体的代码是:

import matplotlib.pyplot as plt

import numpy as np

import json

import matplotlib.font_manager as font_manager

%matplotlib inline

with open('data/data31557/20200422.json','r',encoding='UTF-8') as file:

json_arraay = json.loads(file.read())

weights = []

for star in json_arraay:

weight = float(star['weight'].replace('kg',''))

weights.append(weight)

size1 = 0

size2 = 0

size3 = 0

size4 = 0

for weight in weights:

if weight <=45:

size1+=1

elif 45< weight <=50:

size2+=1

elif 50< weight <= 55:

size3+=1

else:

size4+=1

labels = '<=45kg','45~50kg','50~55kg','>50kg'

sizes = [size1,size2,size3,size4]

explode = (0.1,0.1,0.2,0)

fig1,ax1 = plt.subplots()

ax1.pie(sizes,explode=explode,labels=labels,autopct='%1.1f%%',

shadow = True,startangle=90)

ax1.axis('equal')

plt.savefig('/home/aistudio/work/result/pie_result.jpg')#保存图片

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值