对FIFA2018球员做数据分析

整体思路:

1、确定分析目标
2、导入数据文件
3、查看数据
4、确定分析维度和指标
5、清理需要的数据
6、利用数据做分析
7、根据需要做图

首先要对FIFA_2018中球员信息做个总体了解

1. 导入所需要的库/包:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
2. 加载数据文件(FIFA_2018_player.csv)
df = pd.read_csv('./FIFA_2018_player.csv')
3. 简单查看数据,有哪些列,都是什么类型的值
df.head()


有哪些列:

name:球员姓名
full_name:球员姓名全称
nationality:国家
league:联赛
club:俱乐部
age:年龄
birth_date:出生日期
height_cm:身高
weight_kg:体重
eur_value:身价
eur_wage:工资

4. 看下数据的整体信息 (包括count、mean、min、max等)
df.describe()


在数据的整体信息中,也可以看出哪些数据是不太正常的。
像身价eur_value最小值为0,可以后续查看是否异常。
年龄age最小值是16岁,也可以查看是否正常等。

5. 开始数据清理

所有需要分析的数据都需要查看,是否有缺失或者不正常的数据。
对于数值型,可以看下describe⽅法输出的信息,重点关注最⼤值、最⼩值、平均值、⾏数等数据。

6.查看name是否有null值
df[df.name.isnull()]
#df.name.isnull()

isnull返回的是布尔类型的值,如果没有null值返回的就是False

name没有null值

7.full_name是否有null值
df[df.full_name.isnull()]
8.nationality是否有null值
df[df.nationality.isnull()]
9. league是否有null值
df[df.league.isnull()]
10.可以通过count查看总数(非null数量)以及查看对应列有没有null值。
df.count()


总数是17994条,可以看到 league和club 中有null值。

11.查看league和club的null值
df[df.league.isnull()]


可以看到league列中有253条null值。
此时我们可以对存在的null值做处理。
①如果不需要联赛league或者俱乐部club的信息那么我们可以删掉,因为null值的数量也不是很多;
②如果我们做分析时需要用到league或者club的值,在数据量小的情况下可以在了解真实数据后进行重新赋值。
253条数据对于⼀万多条数据来说影响还好,可以删掉,那么我们要把league和club中的null值删掉。

12.删除league联赛缺失的数据
df.drop(df[df.league.isnull()].index,inplace=True)

查看是否删除成功:df[df.league.isnull()]
club俱乐部的缺失值也可以删除,方法和删除联赛league一样。
删除:df.drop(df[df.club.isnull()].index,inplace=True)
查看:df[df.club.isnull()]

13.根据4.查看数据的描述性信息describe可知,如果觉得age列最⼩值有问题,可以输出查看下,其他的类似
df[df['age'] == 16]


可以看出age年龄最小的16的数据没有问题。

14.身价eur_value列最⼩值是0,也需要看一下
df[df['eur_value'] < 1000]
#df[df['eur_value'] == 0]


eur_value为0的列可以使⽤平均值填充(只有⼏条数据,也可以删除)

df['eur_value'].replace(0,df['eur_value'].mean(),inplace=True)

填充完查看是否填充成功

df[df['eur_value']<1000]
# df.loc[7734]  #通过索引查看
# df[df.ID==148745]  #通过ID查看

填充成功,eur_value为0的数据已经没有了。
eur_wage列最⼩值是0,也需要看下
df[df['eur_wage'] < 1000]

df[df['eur_wage'] == 0] 查看,处理方法类似。

15.最后看下有⽆重复值(如果有可以⽤drop_duplicates处理)
df[df.duplicated()]
16.对指定的列判断是否有重复值
df[df.loc[:,['full_name', 'nationality', 'league', 'club','birth_date']].duplicated()]
17.我们还可以查看下name姓名、全称full_name以及出生日期等有没有重复的值,对应数据查看有没有一样的数据,如果有的话可以进行删除操作。
df[df.full_name.duplicated()]


可以看到有102条全称的名字有重复值
我们可以随便找一条重复记录看一下:

df[df['full_name'] == 'Carlos Sánchez']


可以看到虽然全称名字一样,但是国家、俱乐部,出生日期等都不一样,所以就是简单的重名而已。

数据清洗完毕,可以开始分析

1.查看样本总数
df.count()

2.数值类型列的⼀些常⻅的统计学指标
df.describe()

分析最主要的就是确定维度和指标
什么是维度和指标呢?
维度指的就是一列或者多列,指标就是统计值或者数据

3.统计不同国家的人数
nationality_data = df.groupby('nationality', as_index=False).count()[['nationality', 'ID']]
nationality_data

我们不需要将国家作为索引,所以要加 as_index=False

这样也不利于查看,我们一般将统计后的数据要进行排序,方便我们查看,升序或者降序排列要根据需求定。(查看下面的4.小题)
现在显示的是ID,我们其实求出来的是人员数量,我们需要给其重命名一下:

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

4.按照运动员数量排名,sort_values排序
nationality_sorted_data = nationality_data.sort_values('player_count',ascending=False)
nationality_sorted_data

ascending=False 从大到小排序

5.运动员数量⼤于100的国家列表
nationality_sorted_data[nationality_sorted_data.player_count > 100]
6.各⼤联赛得运动员数量

要根据联赛league分组

league_data = df.groupby('league', as_index=False).count()[['league','ID']].sort_values('ID', ascending=False)
league_data.rename(columns={'ID':'people_count'},inplace=True)
league_data

分组groupby,排序sort_values,重命名rename

7.计算各俱乐部平均周薪(工资)

根据club分组,计算工资的平均值

df.groupby('club', as_index=False).mean()[['club','eur_wage']].sort_values('eur_wage', ascending=False).head(10)
#head(10)查看前10行

8.计算英超联赛English Premier League各个俱乐部球员的平均⽉薪
df[df.league == 'English Premier League'].groupby('club',as_index=False).mean()[['club', 'eur_wage']].sort_values('eur_wage',
ascending=False)

9.计算球员年龄段分布

我们要使用numpy的arange进行分段
使用cut进行区间划分,相关于分组,在arange的基础上

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

以年龄为维度,最小值15,最大值50,每5个划分一个区间

可以看出15-20岁的球员有3300个

简单的绘图

折线图:

bin_counts.plot


为了图标展示好看处理index
条形图:

bin_counts.index = [str(x.left) + '~' + str(x.right) for x in bin_counts.index]
bin_counts.plot(kind='bar', alpha=1, rot=0)


饼图:

bin_counts.plot(kind='pie')
plt.show()

案例:FIFA2018球员数据分析相关推荐

  1. 案例分析:FIFA2018球员数据分析

    案例分析练习: FIFA2018球员数据分析 # 引入要使用的库 import numpy as np import pandas as pd import matplotlib.pyplot as ...

  2. Python数据分析-FIFA2018球员数据分析

    #!/usr/bin/env python # coding: utf-8 # TI=FIFA2018球员数据分析 # 明确分析目的 # 运动员数量前十名的国家,以及平均身价 # 各大联赛运动员数量, ...

  3. 人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统

    1. seaborn 作用:更高效地绘图 #安装 pip3 install seaborn#导入 import seaborn as sns 单变量:直方图或核密度曲线 双变量:散点图.二维直方图. ...

  4. 【球迷福利】NBA球员数据分析

    数据分析综合实战 前言 数据解释 数据分析 效率值相关性分析 球员数据分析 基本数据排名分析 薪资最高的10名球星 效率值最高的10名球星 出场时间最高的10名球星 Seaborn常用的三个数据可视化 ...

  5. 9.NBA球员数据分析

    NBA球员数据分析 1.导入库 2.获取数据 3.数据分析 3.1 数据相关性--heatmap() 3.2 球员数据分析 3.3 seaborn常用的三个可视化方法 3.3.1 单变量--distp ...

  6. nba球员数据分析和可视化_可视化NBA球员统计

    nba球员数据分析和可视化 I haven't written a post in a while. I had a lot to do for university and my hobbies l ...

  7. 数据可视化案例 :球员能力图

    数据可视化案例 :球员能力图 如果要在python的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python会默认使用ASCII编码并且在字体前面+u. #_*_ conding:ut ...

  8. 大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...

    壹 猫眼Top100电影数据分析概述 从这一节开始,我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目.在这些实际的项目案例中,我们将会看到一个完整的数据分析流程:数据清理--数 ...

  9. 分享 :用五个趣味案例教你数据分析的基本思想

    今天和大家分享一下数据分析的一些基本思想,我给它起了个名字叫做用数据说话.内容都是个人的一些心得,比较肤浅!如有不足之处,希望大家谅解!废话不说了,现在咱正式开始. 用数据说话,就是用真实的数据说真实 ...

最新文章

  1. B1277 [HNOI2002]Tinux系统 树形dp
  2. 跳出圈子易,再入围城难,重新学编程,且学且珍惜
  3. 【翻译自mos中文文章】重建控制文件的方法
  4. 【C++grammar】结构化绑定
  5. JEECG支付服务窗专题 - 支付窗激活开发者模式
  6. android融云自定义消息界面大小,融云自定义消息通知栏显示
  7. Python为什么要self
  8. Python Imaging Library: ImageGrab Module(图像采集模块)
  9. 物联网云平台有哪些优势
  10. linux下的终端利器----tmux
  11. iphone 控制 android手机,苹果手机如何远程控制安卓手机
  12. win98装python_Windows 上的 Python安装
  13. C语言实现简单的小游戏之三子棋
  14. pytorch_预训练Se_resnet50_自定义类别数量_源码分享
  15. Multisim里导入没有的元器件(以NPN型三极管2N9013为例)
  16. linux grep命令要查找的内容有双引号
  17. 华硕AC68U路由器APP远程控制设置方法
  18. #Paper Reading#Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
  19. python项目练习四:新闻聚合
  20. H5 audio 音频标签自定义样式修改以及添加播放控制事件

热门文章

  1. Adobe acrobat 打开pdf文件字体模糊的解决办法
  2. Android imagebutton美化+edittext美化 实现登录界面美化
  3. 基于51 手机遥控的蓝牙小车(HC-05)
  4. 《计算机程序的构造和解释》阅读笔记:准备(3)【python3简单实现lisp解释器(3)】
  5. vue-cli 原理分析
  6. 【干货】程序员必备的中文在线编程学习网站!
  7. 领导的艺术:工作里怎么样做,才是包容
  8. java串口读取数据设置超时时间,附详细答案
  9. 查看主机oracle 版本,CentOS下查看Oracle数据库版本
  10. freebsd jail nginx php-fpm mysql weberp安装