本次实验内容为欧洲杯数据的分析,数据请见:https://pan.baidu.com/s/1tL7FE5lxs-gb6Phf8XRu_Q,文件夹:data_analysis,下面的文件:Euro2012.csv 本次实验主要是对python中的数据进行基本操作。

代码为:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import pandas as pd

# 1. 将数据集存入一个名为 euro12 的数据框内。
euro12 = pd.read_csv('data_analysis/Euro2012.csv')

# 2. 只选取 Goals 这一列。
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']
# iloc和loc的区别可以参见:https://blog.csdn.net/sushangchun/article/details/83514803

# 3. 有多少球队参与了 2012 欧洲杯?
euro12['Team'].nunique()   # nunique()函数用于统计Team这一列中不重复的数量,得到结果为:16
euro12['Team'].unique()    # unique()函数用于统计出Team这一列中具体有哪些不重复的数据,结果为:
# array(['Croatia', 'Czech Republic', 'Denmark', 'England', 'France',
#        'Germany', 'Greece', 'Italy', 'Netherlands', 'Poland', 'Portugal',
#        'Republic of Ireland', 'Russia', 'Spain', 'Sweden', 'Ukraine'],
#       dtype=object)

# 4. 该数据集中一共有多少列(columns)?
euro12.shape[1]

# 5. 将数据集中的列 Team, Yellow Cards 和 Red Cards 单独存为一个名叫 discipline 的数据框。
discipline = euro12[['Team', 'Yellow Cards', 'Red Cards']]
print(discipline)

# 6. 对数据框 discipline 按照先 Red Cards 再 Yellow Cards 进行排序。
discipline.sort_values(by=['Red Cards', 'Yellow Cards'])  # sort_values按值进行排序
# discipline.sort_values(by=['Team']) 按照Team的名字升序排序
# sort_index是按照索引进行排序,具体区别参照:https://blog.csdn.net/wendaomudong_l2d4/article/details/80648633

# 7. 计算每个球队拿到的黄牌数的平均值。
discipline.groupby('Team').agg({'Yellow Cards': ['sum', 'mean']})   # 采用分组聚合的操作,计算每个球队获得黄牌数的平均值
# discipline.groupby('Team').agg({'Yellow Cards': 'sum'}).mean()   # 采用分组聚合的操作,计算全部球队获得黄牌数的平均值

# 8. 找到进球数 Goals 超过 6 的球队数据。
index = euro12['Goals'] > 6   # 逻辑值的访问
index.shape    # 得到结果为(16,),表明此时得到的index是一个16行的逻辑值
print(index[0])    # 得到结果为:False
euro12.loc[index, :]
euro12[index]
#euro12.iloc[]  #非法访问

#9. 选取以字母 G 开头的球队数据。
euro12[euro12['Team'].str[0] == 'G']

#10. 选取前 7 列。
euro12.iloc[:, :7]

#11. 选取除了最后 3 列之外的全部列。
euro12.iloc[:, 0:-3]

#12. 找到 英格兰 (England)、意 大利 (Italy)和俄罗斯(Russia)的 射正率(Shooting Accuracy)。
euro12.set_index('Team', inplace=True)  #设置索引  并直接修改了原始数据 inplace=True
euro12.loc[['England', 'Italy', 'Russia'], 'Shooting Accuracy']    #通过索引直接访问数据
# 关于set_index和reset_index的使用请参见:https://www.jianshu.com/p/abf38d68829c

文件‘Euro2012.csv’中的数据截图为:
在这里插入图片描述
选择需要运行的行,按键盘shift+Alt+E,就可以运行指定的行了。并且在Pycharm的python console可以看到实时输出:
在这里插入图片描述
变量可以通过如下的方式查看:
在这里插入图片描述
值得注意的是:
最后一个代码:

#12. 找到 英格兰 (England)、意 大利 (Italy)和俄罗斯(Russia)的 射正率(Shooting Accuracy)。
euro12.set_index('Team', inplace=True)  #设置索引  并直接修改了原始数据 inplace=True
euro12.loc[['England', 'Italy', 'Russia'], 'Shooting Accuracy']    #通过索引直接访问数据
# 关于set_index和reset_index的使用请参见:https://www.jianshu.com/p/abf38d68829c

这个代码的功能是将数据euro12的索引进行了设置,也就是将’Team’这一列设置为了新的索引,
设置前后的索引对比效果如下:
新索引设置前:
在这里插入图片描述
在设置新的索引之后,效果如下:
在这里插入图片描述

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐