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

devtools/2025/3/31 11:14:31/

一、数据展示

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、加载足球运动员数据

python">import numpy as np
import pandas as pd
import matplotlib.pyplot as pltdf = pd.read_csv('FullData.csv')

2.2、设置中文和负数不显示问题

python">plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

三、数据清洗

3.1、缺值处理

3.1.1、查看缺失值

python">df.info()

 

从上述示例可以看到总共17588行,但National_Position(国家队位置) 是1075行,Club_Position (俱乐部位置)17587行。我们知道有的足球运动员是没有进入国家队的,所以National_Position缺值是正常情况。但Club_Position缺值需要处理。 

3.1.2、显示缺失值的数据

python">df[df['所在俱乐部位置'].isna()]

或 

python">df[df['所在俱乐部位置'].notna()]

 3.1.3、获取未缺失值的数据

python">df2 = df[~df['所在俱乐部位置'].isna()]

或 

python">df2 = df[df['所在俱乐部位置'].notna()]

 或 

python">df2 = df[df['所在俱乐部位置'].notnull()]

3.2、异常值处理

3.2.1、数据描述统计信息 

describe方法得到数据的描述性统计信息,比如max min,mean,std进行异常值分析

python">df2.describe()

 3.2.2、使用箱线图辅助查看异常值

python">df2.boxplot(column='评分')
plt.show()

 

3.3、重复值处理

3.3.1、查看重复数据

python">df.duplicated().any()

3.3.2、查看没有重复的数据

python">df[~df.duplicated()]

3.3.3、删除重复的数据

python">df.drop_duplicates()

3.3.4、指定列重复才删除

python">df.drop_duplicates(subset=['姓名'])

3.3.5、替换原有的df数据

python">df.drop_duplicates(inplace=True)

四、数据可视化

4.1、运动员的体重分布情况

从查看数据结果可以看到运动员身高Height、体重Weight的数据后都添加了相应的单位。要分析运动员身高和体重的分布,首先需要将身高Height和Weight数据的单位去掉。

 4.1.1、身高与体重处理

4.1.1.1、通过字符串的替换
python">df3['身高']=df3['身高'].str.replace('cm','').astype('int')
df3['体重']=df3['体重'].str.replace('kg','').astype('int')
4.1.1.2、通过apply方式
python">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
python">df3['身高'].apply(lambda x:int(x.replace('cm','')))
df3['体重'].apply(lambda x:int(x.replace('kg','')))

4.1.2、 查看身高体重_数据分布情况

python">df3[['身高','体重']].describe()

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

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

 

python">df3['体重'].plot(kind='kde')
plt.title('体重')
plt.show()

4.2、使用左右脚分析

4.2.1、使用饼状图来显示

python">df3['擅长左(右)脚'].value_counts().plot(kind='pie',autopct='%.2f%%',fontsize=16)
plt.legend()
plt.show()

4.2.2、value_counts()方法

python">df3['擅长左(右)脚'].value_counts()

4.2.3、 使用条形图

python">df3['擅长左(右)脚'].value_counts().plot(kind='bar')
plt.show()

4.3、俱乐部评分分析

4.3.1、获取前10的 俱乐部,根据球员的评分

python">dfg1=df3.groupby('所在俱乐部')
dfg1['评分'].mean().sort_values(ascending=False).head()

4.3.2、对俱乐部人数大于25人的俱乐部,平均评分进行排序取前10

python"># 查看俱乐部的球员人数,球员的平均分
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、获取足球运动员出生日期

python">data=df3['出生日期'].str.split('/',expand=True)

观察出生年和足球运动员数量关系

python">data['年'].value_counts().plot()
plt.xlabel('年')
plt.show()

观察出生月和足球运动员数量关系 

python">data['月'].value_counts().plot()
plt.xlabel('月')
plt.show()

 观察出生日和足球运动员数量关系 

python">data['日'].value_counts().plot()
plt.xlabel('日')
plt.show()

4.4.2、评分大于等于80与出生日期关系

python">df4=df3[df3['评分']>80]
data2=df4['出生日期'].str.split('/',expand=True)
python">data2.columns = ['月', '日', '年']  

 观察出生年和足球运动员数量关系

python">data2['年'].value_counts().plot()
plt.xlabel('年')
plt.show()

观察出生月和足球运动员数量关系 

python">data2['月'].value_counts().plot()
plt.xlabel('月')
plt.show()

 观察出生日和足球运动员数量关系 

python">data2['日'].value_counts().plot()
plt.xlabel('日')
plt.show()

4.5、身高与体重相关性

python">df3.plot(kind='scatter',x='身高',y='体重')
plt.show()

python">df3['身高'].corr(df3['体重'])

 corr查看相关性

np.float64(0.7582641987537077)

4.6、年龄与评分相关性

python">df3['age']=pd.cut(df3['年龄'],bins=4,labels=['青年','中年','壮年','老年'])
python">df3.groupby('age')['评分'].mean().plot()
plt.show()

 

4.7、分析数据之间的相关性 

python">df3.select_dtypes(include=['number']).corr()

查看哪些数据与评分相关性较强,得出前五名

python">df3.select_dtypes(include=['number']).corr()['评分'].sort_values(ascending=False).head(5)

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

相关文章

印刷电路板 (PCB) 的影响何时重要?在模拟环境中导航

我和我的同事们经常被问到关于 PCB 效应的相同问题,例如: 仿真何时需要 PCB 效果? 为什么时域仿真需要 PCB 效应? 当 PCB 效应必须包含在仿真中时,频率是否重要? 设计人员应该在多大程度上关注 VRM 模型中包…

【AI大模型】搭建本地大模型GPT-J:详细步骤及常见问题

GPT-J本地部署:详细步骤指南 我将向您展示如何使用JavaScript/Node.js在本地设置和运行GPT-J模型。这种方法比设置复杂的Python环境更容易访问,并且对Web开发人员来说非常适用。 GPT-J概述 GPT-J是由EleutherAI创建的开源大型语言模型,拥有…

MyBatis-Plus 自动填充:优雅实现创建/更新时间自动更新!

目录 一、什么是 MyBatis-Plus 自动填充? 🤔二、自动填充的原理 ⚙️三、实际例子:创建时间和更新时间字段自动填充 ⏰四、注意事项 ⚠️五、总结 🎉 🌟我的其他文章也讲解的比较有趣😁,如果喜欢…

数据库基础知识点(系列五)

创建表,设置约束,修改表,删除表,表中数据的操作(insert,修改,删除) 1.在第5章习题创建的 “仓库库存”数据库中完成下列操作。 (1)创建“商品”表,表结构如表6-4: 表6-4 “goods”…

【transformer理论+实战(三)】必要的 Pytorch 知识

【Transformer理论实战(三)】必要的 Pytorch 知识 【Transformer理论实战(二)】Lora本地微调实战 --deepseek-r1蒸馏模型 【Transformer理论实战(一)】Transformer & LLaMA & Lora介绍 文章目录 Py…

Keil(ARMCC)编译改为Cmake(GNU)编译

1. 环境介绍: 某款ARM-M4芯片(应该芯片通用)cmkeGNUNinja(CLion) 2. 必备: 芯片启动文件 startup_xxxx.s链接文件 xxxx_flash.ldCMakeLists.txt 3. 具体修改步骤 第一步:观察启动文件…

Xenium | 细胞邻域(Cellular Neighborhood)分析(fixed k-nearest neighbor)

CN分析概念最早来源于空间单细胞蛋白组Codex文章,Coordinated Cellular Neighborhoods Orchestrate Antitumoral Immunity at the Colorectal Cancer Invasive Front。 定义 Cell Neighborhood(细胞邻域)指骨髓微环境中空间上邻近的细胞群体…

【Python-OpenCV】手势控制贪吃蛇

用手势玩转经典游戏:打造一个手势控制的贪吃蛇 你是否曾经想过,如果能用手势来控制游戏会是什么体验?今天,我要向大家介绍一个有趣的项目——手势控制贪吃蛇游戏。这个项目结合了计算机视觉和经典游戏,让你可以通过简单…