1.明确数据分析的目的:了解FIFA2018球员整体情况
2.获得数据(一般来源于公司或网络等)
3.数据清洗(选用不同的工具,可使用excel,python,R,mysql等,本次分析使用python语言进行清洗和分析,使用的工具为jupyter notebook)
4.选择不同的维度对数据进行分析
import numpy as np import pandas as pd import matplotlib.pyplot as plt df=pd.read_csv('./FIFA_2018_player.csv') #数据的总体描述 df.describe()
#计算每列的行数,可以看出有没有null值 df.count()
ID 17994 name 17994 full_name 17994 nationality 17994 league 17741 club 17741 age 17994 birth_date 17994 height_cm 17994 weight_kg 17994 eur_value 17994 eur_wage 17994 dtype: int64
#获取league为null的数据 df[df['league'].isnull()] #删除league为null的数据 df.drop(df[df.league.isnull()].index,inplace=True)
#使用平均值填充 df['eur_value'].replace(0,df['eur_value'].mean(),inplace=True)
#分析的维度和指标(平均数,最大数,最小数......) #维度:从数据选出一列或多列作为一个维度,例如国家,国家 俱乐部 离散型 和 连续型的 #离散型的维度 按照groupby 进行计算指标 nationality_data=df.groupby('nationality',as_index=False).count()[['nationality','name']] nationality_data.rename(columns={'name':'player_count'},inplace=True) #按照运动员数量排名 nationality_sorted_data=nationality_data.sort_values('player_count',ascending=False) #运动员数量大于100的国家列表 nationality_sorted_data[nationality_sorted_data['player_count']>100]
#连续型的维度统计指标 年龄 bins=np.arange(15,50,5) #使用cut将age归为具体的组 bins_data=pd.cut(df['age'],bins) #然后按照归好的组将数据进行分组,统计每组的数据 bins_count=df['age'].groupby(bins_data).count() bins_count #画直方图 #plt.hist(df['age'],bins)
#各大联赛运动员数量 league_data=df.groupby('league',as_index=False).count()[['league','ID']].sort_values('ID',ascending=False) league_data.rename(columns={'ID':'player_count'},inplace=True) league_data