题目链接:https://www.kesci.com/home/project/5f1815b594d484002d2ba46a
题目数据连接里找,官方的答案有些错误,这里是个人的答案以及一些总结。
问题一:步骤1 导入必要的库
import pandas as pd
(不做说明了)
步骤2 从如下地址导入数据集
步骤3 将数据集存入一个名为chipo的数据框内
(这里一步做了)
chipo = pd.read_csv(r'C:\Users\G\Desktop\exercise_data\chipotle.tsv',sep = '\t')
(这个数据文件不是csv格式的而是tsv格式的,有关这两者的区别
tsv与csv的区别:tsv采用的是制表分隔符也就是’\t’,而csv采用的是逗号分隔符’,‘所以sep的参数也就设置为了’\t’)
步骤4 查看前10行内容
chipo.head()
chipo.tail()
默认查看5行,括号里填写查看的行数,10,20等
步骤6 数据集中有多少个列(columns)
chipo.shape[1]
shape[]中的参数,查找列为1,查找行为0,关于对DateFrame中1和0的理解:DateFrame中的1和0是按照行列式来设计的,0为行,1为列。
#shape传入0表示行的形状也就是数量,1则表示列的形状也就是有多个列
步骤7 打印出全部的列名称
chipo.columns
#在DateFrame中的对行的操作基本都是columns
步骤8 数据集的索引是怎样的
chipo.index
步骤9 被下单数最多商品(item)是什么?
解法一:
c = chipo[['item_name','quantity']].groupby(['item_name'],as_index = False).agg({
'quantity':sum})
c.sort_values(['quantity'],ascending = False,inplace = True)
c.head()
解法二:
c = chipo.groupby('item_name').sum()
c.sort_values('quantity',ascending=False).head()
步骤10 在item_name这一列中,一共有多少种商品被下单?
chipo['item_name'].nunique()
chipo['item_name'].unique()
nunique()查看有多少不同的种类,返回的是数量
unique()返回的名称
步骤11 在choice_description中,下单次数最多的商品是什么?
官方的答案有问题
解法一:和刚才的一样
c1 = chipo[['choice_description','quantity']].groupby(['choice_description'],as_index = False).agg({
'quantity':sum})
c1.sort_values(['quantity'],ascending = False).head()
解法二:
c3 = chipo.groupby('choice_description').sum()
c3.sort_values('quantity',ascending=False).head()
步骤12 一共有多少商品被下单?
chipo['quantity'].sum()
sum() pandas中的统计函数
步骤13 将item_price转换为浮点数
dollarizer = lambda x : float(x[1:-1])
chipo['item_price'] = chipo['item_price'].apply(dollarizer)
说明:x: float(x[1:-1]) 表示函数的传入参数为x,从第一行到最后一行。
apply为应用函数调用自己写好的函数。
步骤14 在该数据集对应的时期内,收入(revenue)是多少
chipo['sub_total'] = round(chipo['quantity'] * chipo['item_price'],2)
chipo['sub_total'].sum()
round(A,B)函数,A为数,B为保留小数点后几位。也就是将A的数值保留为小数点后B位
步骤15 在该数据集对应的时期内,一共有多少订单?
chipo['order_id'].nunique()
步骤16 每一单(order)对应的平均总价是多少?
chipo['sub_total'].sum() / chipo['order_id'].nunique()
chipo[['order_id','sub_total']].groupby('order_id').agg({
'sub_total':'sum'})['sub_total'].mean()
步骤17 一共有多少种不同的商品被售出?
chipo['item_name'].nunique()