【飞桨AI-Python小白逆袭大神课程】作业3-《青春有你2》选手数据分析

news2024/11/16 17:41:08

目录

一、数据准备

1、文件数据以json文件格式保存:

二、数据分析 

2、数据分析四剑客:

 (1)Numpy

 (2)pandas

 (3)Matplotlib

 (4)PIL

 (5)总结:

3、绘制选手区域分布柱状图

4、对选手体重分布进行可视化,绘制饼状图


一、数据准备

链接:https://pan.baidu.com/s/1r130i8S8Kjo0XdnfRtlHyg 
提取码:smw8 
--来自百度网盘超级会员V1000的分享

1、文件数据以json文件格式保存:

二、数据分析 

2、数据分析四剑客:

3、 数据分析四剑客详解:

 (1)Numpy

 

 (2)pandas

 

 (3)Matplotlib

 (4)PIL

(5)总结:

Numpy常用数据结构——ndarray

Pandas常用数据结构——Series、DataFrame

Matplotlib常用模块——import matplotlib.pyloy as plt

PIL常用模块——from PIL import image

3、绘制选手区域分布柱状图

参考代码一:

使用JSON反序列化获取文件数据:

#绘制选手区域分布柱状图
import matplotlib.pyplot as plt
import numpy as np
import json

with open('data/data31557/20200422.json', 'r', encoding='UTF-8') as file:
         json_array = json.loads(file.read())#json.loads解码JSON 数据。该函数返回Python 字段的数据类型

print(json_array)
#绘制小姐姐区域分布柱状图,x轴为地区,y轴为该区域的小姐姐数量
zones=[]
for star in json_array:
    zones.append(star['zone'])
#print(len(zones))

x_zone=[]
y_number=[]
for zone in zones:
    if zone not in x_zone:
        count  = zones.count(zone)#统计某个地名出现的次数
        x_zone.append(zone)#将统计过的地名加入x轴
        y_number.append(count)#将出现的重复地名个数设为y值

#print(x_zone)
#print(y_number)

# 设置显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
#设置图片大小
plt.figure(figsize=(20,15))

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

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

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

输出样例:

参考代码二:

使用pandas库serie结构处理数据:

#绘制选手区域分布柱状图
import matplotlib.pyplot as plt
import numpy as np
import json
import pandas as pd

#读取json数据,df变量类型DataFram(表格数据结构)
df = pd.read_json('data/data31557/20200422.json')
#按照不同区域对名字进行分组,grouped是Series是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成
grouped=df['name'].groupby(df['zone'])
s = grouped.count()
#print(s)
x_zone = s.index
y_number = s.values

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

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

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

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

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

输出样例:

4、对选手体重分布进行可视化,绘制饼状图

参考代码一:

使用pandas库serie结构处理数据:

#对选手体重分布进行可视化,绘制饼状图
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import json

#导入数据
#读取json数据,df变量类型DataFram(表格数据结构)
df = pd.read_json('data/data31557/20200422.json')
#数据处理
#定义一个serie变量是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成
roles = pd.Series(df['weight'].values)#体重是值
roles.index = df['name'].values#名字是索引

#根据键值排序
roles = roles.sort_values()
print(roles)

#x轴:姓名
x_names = roles.index
#y轴:体重
y_weight = roles.values

#显示图片
#设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.figure(figsize=(20,15))
plt.bar(range(len(y_weight)), y_weight,color='r',tick_label=x_names,facecolor='#9999ff',edgecolor='white')

# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=5)
plt.yticks(fontsize=24)
#保存图片
plt.title('''《青春有你2》参赛选手''',fontsize = 24)
plt.savefig('./work/result/bar_result03.jpg')
plt.show()

输出样例:

参考代码二:

使用JSON反序列化获取文件数据:

#对选手体重分布进行可视化,绘制饼状图
#<45、45~50、50~55、>55
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import json
#1、导入数据
with open('data/data31557/20200422.json', 'r', encoding='UTF-8') as file:
    json_array = json.loads(file.read())  # json.loads解码JSON 数据。该函数返回Python 字段的数据类型

#2、分析数据
#<45、45~50、50~55、>55
numbers = [0,0,0,0]
for kg in json_array:
    n = kg['weight'].replace('kg','')
    if (n.isdigit()):#是整数
        n = int(n)
        if n < 45:
            numbers[0] += 1
        elif n >= 45 and n < 50:
            numbers[1] += 1
        elif n >= 50 and n < 55:
            numbers[2] += 1
        elif n >= 55:
            numbers[3] += 1
    else:
        n = float(n)
        if n < 45:
            numbers[0] += 1
        elif n >= 45 and n < 50:
            numbers[1] += 1
        elif n >= 50 and n < 55:
            numbers[2] += 1
        elif n >= 55:
            numbers[3] += 1

#print(numbers)

#<45、45~50、50~55、>55
#3、显示图像
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
labels = '<45','45~50','50~55','>55'
explode = (0, 0.1, 0, 0)
plt.pie(numbers,explode=explode,labels=labels,autopct='%1.1f%%',shadow=True,startangle=90)
plt.axis('equal')

#4、保存图像
plt.title('''《青春有你2》参赛选手体重分布''',fontsize = 24)
plt.savefig('./work/result/pie_result04.jpg')
plt.show()


输出样例:

 参考链接:

飞桨AI Studio - 人工智能学习与实训社区

飞桨AI Studio - 人工智能学习与实训社区

飞桨AI Studio - 人工智能学习与实训社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统题目收录(十一)

1、操作系统采用分页存储管理方式&#xff0c;要求&#xff08;&#xff09;。 A&#xff1a;每个进程拥有一张页表&#xff0c;且进程的页表驻留在内存中B&#xff1a;每个进程拥有一张页表&#xff0c;但只有执行进程的页表驻留在内存中C&#xff1a;所有进程共享一张页表&a…

django项目实战(django+bootstrap实现增删改查)

目录 一、创建django项目 二、修改默认配置 三、配置数据库连接 四、创建表结构 五、在app当中创建静态文件 六、页面实战-部门管理 1、实现一个部门列表页面 2、实现新增部门页面 3、实现删除部门 4、实现部门编辑功能 七、模版的继承 1、创建模板layout.html 1&…

Django框架之模型视图--Session

Session 1 启用Session Django项目默认启用Session。 可以在settings.py文件中查看&#xff0c;如图所示 如需禁用session&#xff0c;将上图中的session中间件注释掉即可。 2 存储方式 在settings.py文件中&#xff0c;可以设置session数据的存储方式&#xff0c;可以保存…

基于springboot的网上图书商城的设计与实现(程序+详细设计文档)

大家好✌&#xff01;我是CZ淡陌。在这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路&#xff01; &#x1f345;更多优质项目&#x1f447;&…

Rust学习入门--【17】Rust Slice(切片)类型

系列文章目录 Rust 语言是一种高效、可靠的通用高级语言&#xff0c;效率可以媲美 C / C 。本系列文件记录博主自学Rust的过程。欢迎大家一同学习。 Rust学习入门–【1】引言 Rust学习入门–【2】Rust 开发环境配置 Rust学习入门–【3】Cargo介绍 Rust学习入门–【4】Rust 输…

RocketMQ云服务器和本地基础安装搭建及可视化控制台安装使用

一起学编程&#xff0c;让生活更随和&#xff01; 如果你觉得是个同道中人&#xff0c;欢迎关注博主gzh&#xff1a;【随和的皮蛋桑】。 专注于Java基础、进阶、面试以及计算机基础知识分享&#x1f433;。偶尔认知思考、日常水文&#x1f40c;。 目录一、RocketMQ 介绍1、Ro…

分布式事务--理论基础

1、事务基础 1.1、什么是事务 事务可以看做是一次大的活动&#xff0c;它由不同的小活动组成&#xff0c;这些活动要么全部成功&#xff0c;要么全部失败。 1.2、本地事务 在同一个进程内&#xff0c;控制同一数据源的事务&#xff0c;称为本地事务。例如数据库事务。 在计…

PyTorch 并行训练 DistributedDataParallel完整代码示例

使用大型数据集训练大型深度神经网络 (DNN) 的问题是深度学习领域的主要挑战。 随着 DNN 和数据集规模的增加&#xff0c;训练这些模型的计算和内存需求也会增加。 这使得在计算资源有限的单台机器上训练这些模型变得困难甚至不可能。 使用大型数据集训练大型 DNN 的一些主要挑…

SpringBoot监控

文章目录一、PrometheusGrafana监控Springboot1、简介2、SpringBoot应用镜像搭建2.1 springboot应用创建2.2 镜像创建3、Prometheus3.1 概述3.2 Prometheus创建4、Grafana可视化监控4.1 可视化4.2 告警设置二、轻量级日志系统Loki1、简介1.1 介绍1.2 与ELK差异2、grafana loki日…

linux宝塔安装和部署node全栈项目

使用服务器:阿里云ECS系列 服务器操作系统: Alibaba Cloud Linux 2.1903 LTS 64位 连接服务器方式: Workbench远程连接 使用公网IP登录 Workbench远程桌面&#xff0c;使用命令安装linux宝塔面板操作服务器: 1.登录linux宝塔面板&#xff0c;使用终端命令安装linux宝塔 yum i…

【操作系统】计算机系统概述

文章目录操作系统的概念、功能和目标熟悉的操作系统计算机系统的层次结构操作系统的概念操作系统的功能和目标作为系统资源的管理者作为用户和计算机之间的接口作为最接近硬件的层次操作系统的四个特征并发共享并发和共享的关系虚拟异步操作系统的发展和分类手工操作阶段单道批…

1207. 大臣的旅费/树的直径【AcWing】

1207. 大臣的旅费 很久以前&#xff0c;T王国空前繁荣。 为了更好地管理国家&#xff0c;王国修建了大量的快速路&#xff0c;用于连接首都和王国内的各大城市。 为节省经费&#xff0c;T国的大臣们经过思考&#xff0c;制定了一套优秀的修建方案&#xff0c;使得任何一个大…

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试&#xff0c;故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…

Python 使用 pip 安装 matplotlib 模块(秒解版)

长话短说&#xff1a;本人下载 matplotlib 花了大概三个半小时屡屡碰壁&#xff0c;险些暴走。为了不让新来的小伙伴走我的弯路&#xff0c;特意创作本片文章指明方向。 1.首先需要下载 python 我直接是在电脑自带的软件商店里下载的&#xff0c;图方便&#xff0c;当然在官网下…

操作系统 四(设备管理)

I/O系统功能 隐藏I/O设备的细节&#xff1b;保证设备无关性&#xff1b;提高处理机和I/O设备的利用率&#xff1b;对I/O设备进行控制&#xff1b;确保对设备的正确共享&#xff1b;处理错误。中断、通道、DMA概念 中断&#xff1a;CPU对I/O设备发来的中断信号的一种响应DMA&am…

【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

超详细讲解文件函数

超详细讲解文件函数&#xff01;&#xff01;&#xff01;&#xff01;字符输入/输出函数fgetcfputc文本行输入/输出函数fgetsfputs格式化输入/输出函数fscanffprintf二进制输入/输出函数freadfwrite打开/关闭文件函数fopenfclose字符输入/输出函数 fgetc fgetc函数可以从指定…

个人谈谈对ThreadLocal内存泄露的理解

个人谈谈对ThreadLocal内存泄露的理解ThreadLocal作用ThreadLocalMap内存泄露解释为什么要这样设计ThreadLocalMap的实现思路ThreadLocal作用 平时我们会使用ThreadLocal来存放当前线程的副本数据&#xff0c;让当前线程执行流中各个位置&#xff0c;都可以从ThreadLocal中获取…

Java SPI 机制详解

在面向对象的设计原则中&#xff0c;一般推荐模块之间基于接口编程&#xff0c;通常情况下调用方模块是不会感知到被调用方模块的内部具体实现。一旦代码里面涉及具体实现类&#xff0c;就违反了开闭原则。如果需要替换一种实现&#xff0c;就需要修改代码。 为了实现在模块装…

使用packetbeat对MySQL进行网络抓包

文章目录一、Packetbeat 简介二、packetbeat部署和使用2.1 官方下载解压2.2 修改配置文件2.3 导入索引模板和dashboard2.4 启动packetbeat三、效果展示一、Packetbeat 简介 Packetbeat 是一款轻量型实时网络数据包分析器&#xff0c;能够将主机和容器中的数据发送至 Logstash 或…