pandas入门练习题:这十套练习,教你如何使用Pandas做数据分析,(第一套)

题目链接: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()

你可能感兴趣的:(数据分析练习题,python,csv,数据分析)