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

[an error occurred while processing the directive]

案例分析练习:

FIFA2018球员数据分析

# 引入要使用的库

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

一、首先要明确分析的目标

当获取一份数据集时,应该对数据信息做个总体的了解。

1、加载数据文件

# 加载数据文件

df = pd.read_csv('FIFA_2018_player.csv')

2、简单查看下数据,有哪些列,都是什么类型的值

# 简单查看下数据,有哪些列,都是什么类型的值

df.head()

head方法默认显示头部的5行

数据字段信息

* name:球员姓名

* full_name:球员姓名全称

* nationality:国家

* league:联赛

* club:俱乐部

* age:年龄

* birth_date:出生日期

* height_cm:身高

* weight_kg:体重

* eur_value:身价

* eur_wage:工资

3、看下数据整体统计信息,了解下数据总体分布。

# 看下数据的整体信息

df.describe()

二、对数据进行预处理

所有需要分析的数据都需要查看,对于数值型,可以看describe⽅法输出的信息,重点关注最⼤值、最⼩值、平均值、行数等数据。

1、对需要分析的字段依次查看是否有null值

# name是否有null值

df[df.name.isnull()]

执行显示:name没有null值

# full_name是否有null值

df[df.full_name.isnull()]

执行显示:full_name没有null值

# nationality是否有空值

df[df.nationality.isnull()]

执行显示:nationality没有null值

# league是否有空值

df[df.league.isnull()]

执行显示:league有253条null值数据,需要进行处理

所在联赛、俱乐部都没有值,身价和周薪也是0,253条数据对于一万多条数据来说影响还好,可以删除。

删除数据一般放在后面进行,这里因为其他列数据也是异常,所以可以先删掉

2、使用drop方法删除league空值数据

# 删除league的null值数据

df.drop(df[df.league.isnull()].index, inplace=True)

检查一下是否已删除成功

# 在看一下是否删除成功

df[df.league.isnull()]

在查看下club是否还有空值

# club是否有空值

df[df.club.isnull()]

3、如果觉得age最小值有问题,单独输出来看下;其他列处理方法类似。

# 如果觉得age最小值有问题,可以输出看下

# 其他列类似

df[df['age'] == 16]

# eur_value列最小值是0,需要看下

df[df['eur_value'] < 1000]

4、 eur_value为0的列可以使用平均值来填充(只有几条数据,也可以删除)

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

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

查看eur_value为0的列是否填充成功

# 在看下是否填充成功

df[df['eur_value'] < 1000]

df.loc[3272]

df[df.ID == 176900]

eur_wage列最⼩值也是0,也需要检查下

# eur_wage列最⼩值是0,也需要看下

df[df['eur_wage'] < 1000]

5、最后看下有⽆重复值(如果有可以⽤drop_duplicates处理)

# 最后看下有⽆重复值(如果有可以⽤drop_duplicates处理)

df[df.duplicated()]

指定列判断是否有重复值

# 对指定的列判断是否有重复值

df[df.loc[:,['full_name', 'nationality', 'league', 'club','birth_date']].duplicated()]

也可以单独查看full_name是否有重复值

# 也单独看下full_name是否有重复值,同名的有很多,所以不用处理

len(df.full_name.unique()), len(df)

df[df.full_name.duplicated()]

随便找条full_name重复的记录看下

# 随便找条full_name重复的记录看下

df[df['full_name'] == 'Gonzalo Castro']

数据清洗完毕,开始分析

三、确定分析维度和指标

1、查看数据样本总数

# 查看样本总数

df.count()

2、对于数值类型列的⼀些常⻅的统计学指标,使用describe方法查看

# 数值类型列的⼀些常⻅的统计学指标

df.describe()

3、对于离散类型数据,直接使用groupby分组,如:国家、俱乐部等维度

# 国家维度的运动员数

# 使用groupby分组,并计算总和

nationality_data = df.groupby('nationality', as_index=False).count()[['nationality','ID']]

nationality_data

将ID列重命名为player_count

# 重命名ID列

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

nationality_data

使用sort_values()函数按照运动员数量进行排序

pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。

# 按照运动员数量排名

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

nationality_sorted_data

运动员数量⼤于100的国家列表

# 运动员数量⼤于100的国家列表

nationality_sorted_data[nationality_sorted_data.player_count > 100]

使用league列进行分组统计各⼤联赛得运动员数量

# 各⼤联赛得运动员数量

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).head(50)

使用groupby先对club进行分组,再用mean()方法求得英超联赛English Premier League各个俱乐部球员的平均⽉薪,然后排序sort_values()

# 英超联赛English Premier League各个俱乐部球员的平均⽉薪

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

4、对于连续型数据,通常使用分区间的方式;如:年龄、时间等维度,使用pd.cut()方法分区间进行统计。

使用numpy的arange()函数生成等差的数组用于分段统计

# 球员年龄段分布

# 生成桶, 5岁一个分桶,最小16岁, 最大47

bins = np.arange(15, 50, 5)

bins

使用cut()将数据进行分区间

bins_data = pd.cut(df['age'], bins)

bins_data

以年龄的维度,对已分出区间的数据进行groupby分组统计。

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

bins_counts

四、可视化展示

简单的折线图展示:

bins_counts.plot()

为了使图标展示更好看处理index

# 为了图标展示好看处理index

bins_counts.index = [str(x.left) + '~' + str(x.right) for x in bins_counts.index]

bins_counts.index

柱状图展示:

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

plt.show()

[an error occurred while processing the directive]
Copyright © 2088 世界杯篮球|足球世界杯视频|泛努山塔拉幸福世界杯和谐之约站|rahayupancanusantara.com All Rights Reserved.
友情链接