代码为:
#!/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’这一列设置为了新的索引,
设置前后的索引对比效果如下:
新索引设置前:
在设置新的索引之后,效果如下: