数据准备
参考:https://github.com/zhoujinhai/pandasData/blob/master/Euro2012.csv
import pandas as pd
# 将数据集存入一个名为 euro12 的数据框内。
euro12 = pd.read_csv('data_analysis/Euro2012.csv')
数据基本信息
# 将数据集存入一个名为 euro12 的数据框内。
euro12 = pd.read_csv('data_analysis/Euro2012.csv')
# 获取基本信息
euro12['Goals']
euro12[['Team', 'Goals']] # 单列/多列数据的访问
euro12.iloc[0, 0] # iloc是通过位置索引/切片(左闭右开区间) 输出结果为0行0列的:'Croatia'
euro12.iloc[0:2, 0:2] # 输出为0、1行,0、1列的数据
euro12.iloc[0:1, :] # 输出为0行,所有列的数据,shape为[1 rows x 35 columns]
euro12.shape # 输出euro12的形状:(16, 35)
euro12.loc[0, 'Team'] # loc是通过行列名称进行索引/切片(闭区间)
euro12.loc[0:2, 'Team':'Goals']
euro12.loc[:, 'Team']
# 有多少球队参与了 2012 欧洲杯?
# 不去重
euro12['Team'].nunique()
# 去重
euro12['Team'].unique()
# 该数据集中一共有多少列(columns)?
euro12.shape[1]
分析数据
# 将数据集中的列 Team, Yellow Cards 和 Red Cards 单独存为一个名叫 discipline 的数据框。
discipline = euro12[['Team', 'Yellow Cards', 'Red Cards']]
print(discipline)
# 对数据框 discipline 按照先 Red Cards 再 Yellow Cards 进行排序。
# sort_values按值进行排序
discipline.sort_values(by=['Red Cards', 'Yellow Cards'])
# 按照Team的名字升序排序
discipline.sort_values(by=['Team'])
# 计算每个球队拿到的黄牌数的平均值。
# 采用分组聚合的操作,计算每个球队获得黄牌数的平均值
discipline.groupby('Team').agg({'Yellow Cards': ['sum', 'mean']})
# 采用分组聚合的操作,计算全部球队获得黄牌数的平均值
discipline.groupby('Team').agg({'Yellow Cards': 'sum'}).mean()
# 找到进球数 Goals 超过 6 的球队数据。
index = euro12['Goals'] > 6
# 以下两种形式等效
euro12.loc[index, :]
euro12[index]
#euro12.iloc[] #非法访问
# 选取以字母 G 开头的球队数据。
euro12[euro12['Team'].str[0] == 'G']
# 选取前 7 列。
euro12.iloc[:, :7]
# 选取除了最后 3 列之外的全部列。
euro12.iloc[:, 0:-3]
# 找到 英格兰 (England)、意 大利 (Italy)和俄罗斯(Russia)的 射正率(Shooting Accuracy)。
# 通过索引加速访问
euro12.set_index('Team', inplace=True)
euro12.loc[['England', 'Italy', 'Russia'], 'Shooting Accuracy'] #通过索引直接访问数据
v