数据分析项目复习(FIFA2018)

本文回顾了对FIFA2018数据进行的全面分析项目,涉及球员属性统计、比赛结果预测及球队实力评估等多个方面,通过数据挖掘揭示了比赛背后隐藏的模式和趋势,为理解和优化足球策略提供了有价值的见解。
摘要由CSDN通过智能技术生成
import numpy as np
import pandas as pd
import matplotlib as plt
#加载数据文件
df = pd.read_csv('D:\桌面\Python\pythonCourse\第九章-四个实例\Python案例数据\Python妗堜緥\FIFA_2018_player.csv')
#简单浏览数据信息:重点看看列名,数据类型
df.head()
#浏览数据的整体情况(也是用来看看异常值的基本手段)
df.describe()
#看看名字这一列有没有空值
df[df.name.isnull()]
#看看全名这一列有没有空值
df[df.full_name.isnull()]
#看看国籍这一列有没有空值
df[df.nationality.isnull()]
#看看联赛这一列又没有空值
df[df.league.isnull()]
#删除联赛名为空的数据 通过.index锁定行(也就是某条数据)
df.drop(df[df.league.isnull()].index, inplace=True)
#看看删除成功没有呢
df[df.league.isnull()]
#看看俱乐部有没有空值
df[df.club.isnull()]
#在前面的describe中我们注意到年龄的最小值是16,那么有没有问题呢?
df[df.age == 16] #df[df['age'] == 16]
#在前面的describe注意到薪酬的最小值出现0,重点来看看这些数据
df[df['eur_value'] < 1000]
#用薪酬的平均值来填充这些薪酬为0的数据列,如果数据量少也可以直接删除
df['eur_value'].replace(0,df['eur_value'].mean(), inplace = True)
#看看填充后还有没有异常情况
df[df['eur_value'] < 1000]
#周薪是否也有过小的情况
df[df['eur_wage'] < 1000]
#看看数据中有没有完全重复的数据
df[df.duplicated()]
#看看以下的列有没有重复值
df[df.loc[:,['full_name', 'nationality', 'league', 'club', 'birth_date']].duplicated()]
#全名这一列是唯一值的条数与总数据的条数的比较:这样可以快速知道全名有多少个重复值
len(df.full_name.unique()), len(df)
#也可以通过.duplicated这个方法来看
df[df.full_name.duplicated(keep=False)]
#取出其中的一个重复值的判断~
df[df.full_name == 'Lars Bender']

#数据清洗完毕
#通过df.count()来查看各列的数据完整性
df.count()
#也可以通过df.describe来粗略地看看
df.describe()
#总国籍这个维度上来看看每个国家的足球运动员有数量并以降序排列
nationality_data = df.groupby('nationality', as_index = False).count()

[['nationality', 'ID']]

nationality_data.rename(columns={'ID':'player_count'}, inplace = True)

nationality_sorted_data = nationality_data.sort_values('player_count', ascending=False)

nationality_sorted_data[nationality_sorted_data.player_count > 100]

league_data = df.groupby('league', as_index=False).count()[['league','ID']].sort_values('ID',ascending = False)
league_data

df.groupby('club',as_index = False).mean()[['club', 'eur_wage']].sort_values('eur_wage', ascending = False)

bins = np.arange(15, 50, 5)
bins_data = pd.cut(df['age'], bins)

bin_counts = df['age'].groupby(bins_data).count()
bin_counts
bin_counts

bin_counts.index = [str(x.left) + '-' + str(x.right) for x in bin_counts.index]

# print(bin_counts.plot(kind='pie'))

bin_counts.plot(kind = 'bar', alpha = 1, rot = 0)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值