练习题Kesci链接: link
文章目录
练习1-开始了解你的数据
探索Chipotle快餐数据
步骤9 被下单数最多商品(item)是什么?
思路:
- 对象:DataFrame
- 提取感兴趣的列。
!注意:中括号内传入单个列名,如chipo['item_name']
,则产生一个Series(不能传入多个列名);
中括号内传入数组,如chipo[['item_name','quantity']]
,则产生一个DataFrame。 - 分组,groupby括号内传入列名的数组(一个或多个),产生一个group对象。(
as_index=False
表示分组键不作为index,如果传入group_keys=False
在后面的运算中会把分组键重新置为index——不清楚什么原因) - 对group对象应用函数。
答案的做法是——.agg({'quantity':sum})
我的做法是(相同效果)——[['quantity']].sum()
都是生成DataFrame对象 - 排序 使用sort_index和sort_values效果差不多,但是系统推荐后者。传入
inplace=True
实现原地排序 - 显示最大值
步骤10 在item_name这一列中,一共有多少种商品被下单?
统计不重复的对象的个数
答案:chipo['item_name'].nunique()
我:len(chipo['item_name'].unique())
步骤13 将item_price转换为浮点数
chipo['item_price']
中每个对象的格式是string(‘$’+数字),如果直接用.astype(float)
则会出错,因为str无法转换成为float。
解决办法:利用可调用函数处理每个对象,并将函数传入apply。
dollarizer = lambda x: float(x[1:-1])#去除'$'符号并将数字传唤成为float
chipo['item_price'].apply(dollarizer)
步骤14 在该数据集对应的时期内,收入(revenue)是多少
round()
返回括号内浮点数的四舍五入值。
步骤16 每一单(order)对应的平均总价是多少?
思路:
- 对象:DataFrame
- 提取感兴趣的列。
chipo[['order_id','sub_total']]
- 分组。
.groupby(by=['order_id'])
- 对group对象应用函数。
.agg({'sub_total':'sum'})
- 提取感兴趣的列。
['sub_total']
- 对列应用函数。
.mean()
练习2-数据过滤与排序
探索2012欧洲杯数据
步骤5 有多少球队参与了2012欧洲杯?
.shape(0)
DataFrame的shape函数,输出括号内(0代表0轴,1代表1轴…)的大小。
步骤8 对数据框discipline按照先Red Cards再Yellow Cards进行排序
.sort_values(by=['A','B'])
sort_value函数按照A,B的先后顺序对A,B先后排序。
步骤11 选取以字母G开头的球队数据
处理字符串对象用str函数
答案:euro12[euro12.Team.str.startswith('G')]
我:euro12[euro12['Team'].apply(lambda x: x[0]=='G')]
步骤12 选取前7列
.iloc
按整数索引选取子行和子列
loc
按轴标签(行名或列名)选取子行和子列
步骤14 找到英格兰(England)、意大利(Italy)和俄罗斯(Russia)的射正率(Shooting Accuracy)
.isin()
函数可用于选取某一列中的几个对象所在的行作为行索引,函数返回的是bool类型的Series。
练习3-数据分组
探索酒类消费数据
步骤8 打印出每个大陆对spirit饮品消耗的平均值,最大值和最小值
思路:
- 对象:DataFrame
- 分组。
drinks.groupby('continent')
- 提取感兴趣的列。
.spirit_servings
- 应用函数。
agg(['mean', 'min', 'max'])