Python----数据分析(足球运动员数据分析)

news2025/4/1 8:52:35

一、数据展示

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 plt


df = 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)

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

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

相关文章

matplotlib——南丁格尔玫瑰

南丁格尔玫瑰图(Nightingale Rose Chart),是一种特殊形式的柱状图,它以南丁格尔(Florence Nightingale)命名,她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…

Django与网页表单

我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲网页表单 网页表单又叫做HTML表单,用来处理用户从页面输入发送到服务器的数据,页面表单通常会提供复选框、单选按钮和文本字段,方便用户填写各种形式…

ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常

社区王牌专栏《一问一实验:AI 版》改版以来已发布多期(51-60),展现了 ChatDBA 在多种场景下解决问题的效果。 下面让我们正式进入《一问一实验:AI 版》第 62 期,看看 ChatDBA 最新效果以及与热门大模型 De…

Python----计算机视觉处理(Opencv:图像边缘检测:非极大值抑制,双阈值筛选)

一、 高斯滤波 边缘检测本身属于锐化操作,对噪点比较敏感,所以需要进行平滑处理。这里使用的是一个5*5的高斯 核对图像进行消除噪声。 二、计算图像的梯度和方向 三、非极大值抑制 在得到每个边缘的方向之后,其实把它们连起来边缘检测就算完了…

基于Kubernetes部署Prometheus监控平台

#作者:stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…

往期项目shader着色器实践效果应用合集

1、管路混色 2、水管水流效果 3、水管流入到流完效果 4、加热冷却 两 色混色 示意 XX、毒蘑菇测试效果

绿色暴政:Relax Max如何用军工科技定义环保新标准

《绿色暴政:Relax Max如何用军工科技定义环保新标准》 ——从隐形战斗机涂层到零碳卫浴的降维打击 (洛克希德马丁实验室,2023年)当F-35战斗机的隐形涂料配方被改写为卫浴釉料时,环保产业迎来了最硬核的颠覆者。Relax…

第十三届蓝桥杯单片机省赛程序设计试题

目录 试题 各程序块代码 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窗口&#xff0c;并且需要实现加载模型后重新渲染更新窗口的功能&#xff0c;但是一直无法更新被卡住了&#xff0c;现在把问题解决了总结一下整个实现过程。 创建一个自己的OpenGLWidget类 QOp…

ESP32驱动BMP280和MQ4传感器

文章目录 前言 一、硬件准备 所需组件 连接方式&#xff1a; 二、软件实现 1.所需库 2.代码实现 效果演示 三、上传Qt端 前言 在物联网和环境监测应用中&#xff0c;传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器…

MQTT协议笔记

消息格式 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的消息协议&#xff0c;专为低带宽、高延迟或不可靠的网络设计&#xff0c;广泛应用于物联网&#xff08;IoT&#xff09;设备之间的通信。MQTT消息体的结构遵循MQTT协议规范&#xff0…

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…

如何使用VS中的Android Game Development Extension (AGDE) 来查看安卓 Logcat 日志

一、首先按照以下 指引 中的 第1、2步骤&#xff0c;安装一下 AGDE &#xff0c;AGDE 的安装包可以在官网上找到。 UE4 使用AndroidGameDevelopmentExtension&#xff08;AGDE&#xff09;对安卓客户端做“断点调试”与“代码热更”-CSDN博客 在执行第二步骤前&#xff0c;记得…

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智能问答小程序开发——完整项目&#xff08;含完整前端后端代码&#xff09;【Spring AI】基于专属知识库的RAG智能问答小程序开发——代码逐行精讲&#xff1a;核心ChatClient对象相关构造函数【Spring AI】基于专属知识库的R…

Solr-搜索引擎-入门到精通

以下是对 Apache Solr 的简介及其常用语法的快速入门指南&#xff1a; 一、Solr 是什么&#xff1f; • 核心定位&#xff1a;Apache Solr 是一个基于 Lucene 的高性能、开源的搜索平台&#xff0c;支持全文检索、分词、高亮、聚合统计等功能。 • 核心功能&#xff1a; • 全…

07_GRU模型

GRU模型 双向GRU笔记:https://blog.csdn.net/weixin_44579176/article/details/146459952 概念 GRU&#xff08;Gated Recurrent Unit&#xff09;也称为门控循环单元&#xff0c;是一种改进版的RNN。与LSTM一样能够有效捕捉长序列之间的语义关联&#xff0c;通过引入两个&qu…

【大模型基础_毛玉仁】3.4 Prompt 技巧

目录 3.4 Prompt 技巧3.4.1 规范Prompt 编写1&#xff09;任务说明要明确2&#xff09;上下文丰富且清晰3&#xff09;输出格式要规范4&#xff09;排版要清晰 3.4.2 合理归纳提问1&#xff09;复杂问题拆解2&#xff09;追问 3.4.3 适时使用CoT1&#xff09;何时使用CoT2&…

探索PyMOL新插件NRGSuite-Qt:全面提升分子对接、结合位点预测与动力学模拟的研究效率

随着分子建模和计算生物学的快速发展&#xff0c;分子对接&#xff08;Molecular Docking&#xff09;、结合位点预测、相互作用分析以及动力学研究等领域的工具越来越重要。这些工具不仅帮助研究人员理解分子间的相互作用机制&#xff0c;还能加速药物设计和优化过程。NRGSuit…

wokwi arduino mega 2560 - 键盘与LCD显示

截图&#xff1a; 链接&#xff1a; https://wokwi.com/projects/414520193913760769 代码&#xff1a; //cslg lcd key #include <LiquidCrystal.h> // 引入LiquidCrystal库&#xff0c;用于LCD显示 #include <Keypad.h> // 引入Keypad库&#xff0c;用于键盘输…