足球运动员分析

加载数据及数据集介绍

17589条数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#解决中文乱码
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
player= pd.read_csv('FullData.csv')
player

显示几行数据

#head() 显示前几行 默认五行
player.head()  # head(8) 显示8行
#tail()后几行	
player.tail() # tail(8) 显示8行
#sample 随机采样一行
player.sample() # sample(5) 随机5行
#设置显示的列
pd.set_option('display.max_columns',4)
player.head()

处理缺失值

# 查看列名
player.info()
# 查看缺失值
player[player['Club_Position'].isnull()]  # 或 isna()
# 处理缺值
player = player[player['Club_Position'].notnull()]  # 或 notna()   或~取反想·

异常值处理

#获取描述统计信息
player.describe()       # 或player.plot.box()
# 筛选
player[(player['Rating']<0) & (player['Rating']>100)]

重复值处理

#查看是否有重复值
player.duplicated().any()
#获取重复值
player[player.duplicated()] 
player[player.duplicated(keep='first')]	# 获取不包括第一条重复值  keep='last'获取不包括最后一条重复值	keep=False获取所有重复数据
#删除重复数据
player.drop_duplicates(keep='first',inplace=True) #last  False 
player[~player.duplicated()]

身高体重数据处理

# 删除单位并转换类型
# 普通方式
player['Height'] = player['Height'].str.replace('cm','')
player['Weight'] = player['Weight'].str.replace('kg','')
player['Height'] = player['Height'].astype(int)
player['Weight'] = player['Weight'].astype(int)
#使用apply()函数
def handle(m:str) ->int:
    return int(m.replace('cm',''))
player['Height'] = player['Height'].apply(handle)
#匿名函数
player['Weight'] = player['Weight'].apply(lambda m :int(m.replace('kg','')))

身高体重评分数据分布

#调用describe()查看
player['Height'].describe()
player['Weight'].describe()
#绘制直方图
plt.hist(player['Height'])	#1.使用matplotlib进行绘制
player['Height'].plot(kind='hist',bins=10)	#2.pandas绘制 hist直方图  bins分组数

足球运动员左脚右脚使用分析

#对Preffered_Foot进行分组并统计
group_foot = player.groupby('Preffered_Foot')
result = group_foot['Preffered_Foot'].count()
#或者 用value_counts() 
result = player['Preffered_Foot'].value_counts()  # 结果默认降序
#去掉左侧名称
result.name=' '
#绘制饼图
result.plot(kind='pie',autopct='%.2f',fontsize=20,figsize=(10,8))

俱乐部球员评分分析

#按俱乐部分组
group = player.groupby('Club')
#俱乐部平均评分前10 且俱乐部人数大于30
result = group['Rating'].agg(['mean','count']) # 平均值、总人数
.sort_values('mean',ascending=False) # 按平均评分排序  默认升序
result[result['count']>30].head(10).plot(kind='bar')

在这里插入图片描述

足球运动员数是否与出生日期相关

#评分大于等于80的球员数据
result = player[player['Rating']>80]
# 获取出生日期并分割
data = result ['Birth_Date'].str.split('/',expand=True) # expand返回df
#月份并绘制条形图
data[0].value_counts().plot(kind='bar')

相关性分析

#绘制散点图  分析身高和体重
player.plot(kind='scatter',x='Height',y='Weight')
#计算身高和体重相关系数 越接近1越相关
player['Height'].corr(player['Weight'])
#DataFrame对象 corr()生成相关系数矩阵

与评分相关性强的指标有哪些

#DataFrame对象 corr()生成相关系数矩阵
player.corr()

在这里插入图片描述

# 获取评分列
player.corr()['Rating'].sort_values(ascending=False)

年龄与评分相关性分析

#新增一列,对年龄进行分组并设置标签
player['Age2'] = pd.cut(player['Age'],bins=4,labels=['少年队','青年队','中年队','老年队'])	# bins参数指定分成4组 默认平分  自定义分组:bins=[10,30,40,50]
#绘制图形
player.groupby('Age2')['Rating'].mean().plot(kind='line',marker='o') # marker 圆点标记
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_59812342

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值