Python----数据分析(足球运动员数据分析)
一、数据展示
1.1、数据

1.2、列名
| 字段名 | 备注 |
|---|---|
| Name | 姓名 |
| Nationality | 国籍 |
| National_Position | 国家队位置 |
| National_Kit | 国家队号码 |
| Club | 所在俱乐部 |
| Club_Position | 所在俱乐部位置 |
| Club_Kit | 俱乐部号码 |
| Club_Joining | 加入俱乐部时间 |
| Contract_Expiry | 合同到期时间 |
| Rating | 评分 |
| Height | 身高 |
| Weight | 体重 |
| Preffered_Foot | 擅长左(右)脚 |
| Birth_Date | 出生日期 |
| Age | 年龄 |
| Preffered_Position | 擅长位置 |
| Work_Rate | 工作效率 |
| Weak_foot | 非惯用脚使用频率 |
| Skill_Moves | 技术等级 |
| Ball_Control | 控球技术 |
| Dribbling | 盘球(带球)能力 |
| Marking | 盯人能力 |
| Sliding_Tackle | 铲球 |
| Standing_Tackle | 逼抢能力 |
| Aggression | 攻击能力 |
| Reactions | 反映 |
| Attacking_Position | 攻击性跑位 |
| Interceptions | 抢断 |
| Vision | 视野 |
| Composure | 镇静 |
| Crossing | 下底传中 |
| Short_Pass | 短传 |
| Long_Pass | 长传 |
| Acceleration | 加速度 |
| Speed | 速度 |
| Stamina | 体力 |
| Strength | 强壮 |
| Balance | 平衡 |
| Agility | 敏捷度 |
| Jumping | 跳跃 |
| Heading | 投球 |
| Shot_Power | 射门力量 |
| Finishing | 射门 |
| Long_Shots | 远射 |
| Curve | 弧线 |
| Freekick_Accuracy | 任意球精准度 |
| Penalties | 点球 |
| Volleys | 凌空能力 |
| GK_Positioning | 门将位置感 |
| GK_Diving | 扑救能力 |
| GK_Kicking | 门将踢球能力 |
| GK_Handling | 扑球脱手几率 |
| GK_Reflexes | 门将反应度 |
二、加载数据
2.1、加载足球运动员数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv('FullData.csv')
2.2、设置中文和负数不显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
三、数据清洗
3.1、缺值处理
3.1.1、查看缺失值
df.info()

从上述示例可以看到总共17588行,但National_Position(国家队位置) 是1075行,Club_Position (俱乐部位置)17587行。我们知道有的足球运动员是没有进入国家队的,所以National_Position缺值是正常情况。但Club_Position缺值需要处理。
3.1.2、显示缺失值的数据
df[df['所在俱乐部位置'].isna()]
或
df[df['所在俱乐部位置'].notna()]
3.1.3、获取未缺失值的数据
df2 = df[~df['所在俱乐部位置'].isna()]
或
df2 = df[df['所在俱乐部位置'].notna()]
或
df2 = df[df['所在俱乐部位置'].notnull()]
3.2、异常值处理
3.2.1、数据描述统计信息
describe方法得到数据的描述性统计信息,比如max min,mean,std进行异常值分析
df2.describe()

3.2.2、使用箱线图辅助查看异常值
df2.boxplot(column='评分')
plt.show()

3.3、重复值处理
3.3.1、查看重复数据
df.duplicated().any()
3.3.2、查看没有重复的数据
df[~df.duplicated()]
3.3.3、删除重复的数据
df.drop_duplicates()
3.3.4、指定列重复才删除
df.drop_duplicates(subset=['姓名'])
3.3.5、替换原有的df数据
df.drop_duplicates(inplace=True)
四、数据可视化
4.1、运动员的体重分布情况
从查看数据结果可以看到运动员身高Height、体重Weight的数据后都添加了相应的单位。要分析运动员身高和体重的分布,首先需要将身高Height和Weight数据的单位去掉。

4.1.1、身高与体重处理
4.1.1.1、通过字符串的替换
df3['身高']=df3['身高'].str.replace('cm','').astype('int')
df3['体重']=df3['体重'].str.replace('kg','').astype('int')
4.1.1.2、通过apply方式
def handle_cm(v:str)-> int:return int(v.replace('cm',''))
def handle_kg(v:str)-> int:return int(v.replace('kg',''))
4.1.1.3、使用匿名函数的方式 lambda
df3['身高'].apply(lambda x:int(x.replace('cm','')))
df3['体重'].apply(lambda x:int(x.replace('kg','')))
4.1.2、 查看身高体重_数据分布情况
df3[['身高','体重']].describe()

直方图
plt.hist(df3['身高'],bins=20)
plt.title('身高')
plt.show()


plt.hist(df3['体重'],bins=20)
plt.title('体重')
plt.show()
画密度图
df3['身高'].plot(kind='kde')
plt.title('身高')
plt.show()


df3['体重'].plot(kind='kde')
plt.title('体重')
plt.show()
4.2、使用左右脚分析
4.2.1、使用饼状图来显示
df3['擅长左(右)脚'].value_counts().plot(kind='pie',autopct='%.2f%%',fontsize=16)
plt.legend()
plt.show()

4.2.2、value_counts()方法
df3['擅长左(右)脚'].value_counts()

4.2.3、 使用条形图
df3['擅长左(右)脚'].value_counts().plot(kind='bar')
plt.show()

4.3、俱乐部评分分析
4.3.1、获取前10的 俱乐部,根据球员的评分
dfg1=df3.groupby('所在俱乐部')
dfg1['评分'].mean().sort_values(ascending=False).head()

4.3.2、对俱乐部人数大于25人的俱乐部,平均评分进行排序取前10
# 查看俱乐部的球员人数,球员的平均分
rs1 = dfg1['评分'].agg(['mean','count'])
# 查看俱乐部的球员人数,球员的平均分,过滤掉人数小于25
rs1['count']>=25
# 查看俱乐部的球员人数,球员的平均分,过滤掉人数小于25,排名前10的俱乐部
rs1[rs1['count']>=25].sort_values(by='mean',ascending=False).head(10)
# 根据排名进行绘制图表
rs1[rs1['count']>=25].sort_values(by='mean',ascending=False).head(10).plot(kind='bar')


4.4、运动员与出生日期是否相关
4.4.1、获取足球运动员出生日期
data=df3['出生日期'].str.split('/',expand=True)

观察出生年和足球运动员数量关系
data['年'].value_counts().plot() plt.xlabel('年') plt.show()
观察出生月和足球运动员数量关系
data['月'].value_counts().plot() plt.xlabel('月') plt.show()
观察出生日和足球运动员数量关系
data['日'].value_counts().plot() plt.xlabel('日') plt.show()
4.4.2、评分大于等于80与出生日期关系
df4=df3[df3['评分']>80]
data2=df4['出生日期'].str.split('/',expand=True)
data2.columns = ['月', '日', '年']

观察出生年和足球运动员数量关系
data2['年'].value_counts().plot() plt.xlabel('年') plt.show()
观察出生月和足球运动员数量关系
data2['月'].value_counts().plot() plt.xlabel('月') plt.show()
观察出生日和足球运动员数量关系
data2['日'].value_counts().plot() plt.xlabel('日') plt.show()
4.5、身高与体重相关性
df3.plot(kind='scatter',x='身高',y='体重')
plt.show()

df3['身高'].corr(df3['体重'])corr查看相关性
np.float64(0.7582641987537077)
4.6、年龄与评分相关性
df3['age']=pd.cut(df3['年龄'],bins=4,labels=['青年','中年','壮年','老年'])
df3.groupby('age')['评分'].mean().plot()
plt.show()

4.7、分析数据之间的相关性
df3.select_dtypes(include=['number']).corr()

查看哪些数据与评分相关性较强,得出前五名
df3.select_dtypes(include=['number']).corr()['评分'].sort_values(ascending=False).head(5)
相关文章:
Python----数据分析(足球运动员数据分析)
一、数据展示 1.1、数据 1.2、列名 字段名备注Name姓名Nationality国籍National_Position国家队位置National_Kit国家队号码Club所在俱乐部Club_Position所在俱乐部位置Club_Kit俱乐部号码Club_Joining加入俱乐部时间Contract_Expiry合同到期时间Rating评分Height身高Weight体…...
Day38 | 1365. 有多少小于当前数字的数字、941. 有效的山脉数组、1207. 独一无二的出现次数、283. 移动零、189. 轮转数组
1365. 有多少小于当前数字的数字 题目链接:1365. 有多少小、于当前数字的数字 - 力扣(LeetCode) 题目难度:简单 代码: class Solution {public int[] smallerNumbersThanCurrent(int[] nums) {Map<Integer,Inte…...
Docker-清理容器空间prune
docker system prune -a 是一个非常有用的命令,用于清理 Docker 系统中未使用的资源,包括停止的容器、未使用的网络、卷以及未被任何容器引用的镜像(悬空镜像和所有未使用的镜像)。以下是关于该命令的详细说明: 命令格…...
matplotlib——南丁格尔玫瑰
南丁格尔玫瑰图(Nightingale Rose Chart),是一种特殊形式的柱状图,它以南丁格尔(Florence Nightingale)命名,她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…...
Django与网页表单
我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单,用来处理用户从页面输入发送到服务器的数据,页面表单通常会提供复选框、单选按钮和文本字段,方便用户填写各种形式…...
Rust从入门到精通之入门篇:10.包和模块
包和模块 在本章中,我们将学习 Rust 的包和模块系统,它们是组织和重用代码的重要工具。随着项目规模的增长,良好的代码组织变得越来越重要,Rust 提供了一套强大的机制来管理代码结构。 包和 Crate Crate Crate 是 Rust 中最高…...
ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
社区王牌专栏《一问一实验:AI 版》改版以来已发布多期(51-60),展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验:AI 版》第 62 期,看看 ChatDBA 最新效果以及与热门大模型 De…...
dify忘记密码
特别好,非常好,一把年纪忘了dify的账号、密码了,very good!!! 参考如下教程 https://zhuanlan.zhihu.com/p/24515387167 rootbae577d82ec7:/# psql -U postgres psql: error: connection to server on so…...
Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)
一、 高斯滤波 边缘检测本身属于锐化操作,对噪点比较敏感,所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后,其实把它们连起来边缘检测就算完了…...
vue3(笔记)5.0--pinia工具的知识扩展
pinia工具 defineStore(创建pinia) 作用:用于定义一个 Pinia store。 用法: 接收一个唯一的 ID 和一个配置对象,配置对象中可以定义 state、getters 和 actions。state 是一个函数,返回初始状态。getters 类似于 Vue 组件中的计…...
基于Kubernetes部署Prometheus监控平台
#作者:stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…...
往期项目shader着色器实践效果应用合集
1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果...
如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载?
大白话如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载? 在 React 项目里,有时候组件功能多、体积大,要是一次性把所有组件都加载进来,网页加载速度就会变慢。而 React 提供了 React.lazy 和 Suspense 这两个好东西…...
绿色暴政:Relax Max如何用军工科技定义环保新标准
《绿色暴政:Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 (洛克希德马丁实验室,2023年)当F-35战斗机的隐形涂料配方被改写为卫浴釉料时,环保产业迎来了最硬核的颠覆者。Relax…...
蓝桥杯刷题 Day 4 栈与链表
蓝桥杯刷题 Day 4 栈与链表 文章目录 蓝桥杯刷题 Day 4 栈与链表前言一、栈1. 解题思路2. 拆解代码(不复杂,不拆了) 二、链表1. 解题思路1.1 主函数1.2 自定义列表类1.2.1 插入操作1.2.2 删除操作1.2.3 按要求输出 三、 题后收获3.1 知识点 前…...
第十三届蓝桥杯单片机省赛程序设计试题
目录 试题 各程序块代码 init.c main.c other.h other.c key.c seg.c onewire.c部分 ds1302.c部分 试题 各程序块代码 init.c #include "other.h"void init74hc138(unsigned char n){P2(P2&0x1f)|(n<<5);P2&0x1f; } void init(){P00x00;in…...
QOpenGLWidget动态加载功能实现教程(Qt+OpenGL)
QOpenGLWidget动态加载功能实现教程 我需要在Qt里面使用QOpenGLWidget显示OpenGL窗口,并且需要实现加载模型后重新渲染更新窗口的功能,但是一直无法更新被卡住了,现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…...
机器学习正则化技术:Ridge、Lasso与ElasticNet全解析
机器学习中的正则化技术 在机器学习中,正则化技术(如 Ridge 和 Lasso)主要用于解决过拟合问题,通过限制模型复杂度提高泛化能力。以下是详细说明及实例代码: 一、正则化解决的问题 过拟合:模型在训练集表…...
数字转换(c++)
【题目描述】 如果一个数 xx 的约数和 yy (不包括他本身)比他本身小,那么 xx 可以变成 yy ,yy 也可以变成 xx 。例如 44 可以变为 33 ,11 可以变为 77 。限定所有数字变换在不超过 nn 的正整数范围内进行,…...
ESP32驱动BMP280和MQ4传感器
文章目录 前言 一、硬件准备 所需组件 连接方式: 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中,传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…...
洛谷题单1-B2002 Hello,World!-python-流程图重构
题目描述 编写一个能够输出 Hello,World! 的程序。 提示: 使用英文标点符号;Hello,World! 逗号后面没有空格。H 和 W 为大写字母。 输入格式 无 输出格式 无 输入输出样例 #1 输入 #1 无输出 #1 Hello,World!方式-print() 代码 class Solut…...
MQTT协议笔记
消息格式 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息协议,专为低带宽、高延迟或不可靠的网络设计,广泛应用于物联网(IoT)设备之间的通信。MQTT消息体的结构遵循MQTT协议规范࿰…...
CentOS系统下安装tesseract-ocr5.x版本
CentOS系统下安装tesseract-ocr5.x版本 安装依赖包: yum update -y yum install autoconf automake libtool libjpeg-devel libpng-devel libtiff-devel zlib-devel yum install automake libtool bzip2 -y手动编译安装GCC(因系统默认安装的GCC版本比较…...
“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)
🚨📢 "征服HTML引号恶魔:“完全解析手册” 📢🚨 🎯 博客引言:当引号变成"恶魔" 😱 是否遇到过这种情况: 写HTML时满心欢喜输入<div title"他…...
如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志
一、首先按照以下 指引 中的 第1、2步骤,安装一下 AGDE ,AGDE 的安装包可以在官网上找到。 UE4 使用AndroidGameDevelopmentExtension(AGDE)对安卓客户端做“断点调试”与“代码热更”-CSDN博客 在执行第二步骤前,记得…...
VSCode 生成HTML 基本骨架
在VSCode 新建html文件中敲一个英文感叹号 ! <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><titl…...
【Spring AI】基于专属知识库的RAG智能问答小程序开发——功能优化:用户鉴权相关工具类代码
系列文章目录 【Spring AI】基于专属知识库的RAG智能问答小程序开发——完整项目(含完整前端后端代码)【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲:核心ChatClient对象相关构造函数【Spring AI】基于专属知识库的R…...
Solr-搜索引擎-入门到精通
以下是对 Apache Solr 的简介及其常用语法的快速入门指南: 一、Solr 是什么? • 核心定位:Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台,支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能: • 全…...
07_GRU模型
GRU模型 双向GRU笔记:https://blog.csdn.net/weixin_44579176/article/details/146459952 概念 GRU(Gated Recurrent Unit)也称为门控循环单元,是一种改进版的RNN。与LSTM一样能够有效捕捉长序列之间的语义关联,通过引入两个&qu…...
【字符设备驱动开发–IMX6ULL】(二)Linux 设备号
【字符设备驱动开发–IMX6ULL】(二)Linux 设备号 文章目录 【字符设备驱动开发–IMX6ULL】(二)Linux 设备号1 设备号的组成2.设备号的分配 1 设备号的组成 为了方便管理,Linux 中每个设备都有一个设备号,设…...






