Python练习一:开始了解你的数据
#练习一、开始了解你的数据
#探索Chipotle快餐数据
import numpy as np
import pandas as pd
# 设置显示的最大列、宽等参数,消掉打印不完全中间的省略号
# pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)#加了这一行那表格的一行就不会分段出现了
# pd.set_option('display.max_colwidth', 1000)
# pd.set_option('display.height', 1000)
#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
path1 = "D:/demo/data/exercise_data/chipotle.tsv"
chipo = pd.read_csv(path1,sep='\t')
# print(chipo.head()) #默认显示数据的前5行
# print(chipo.tail()) #默认显示数据的后5行
# print(chipo.sample(5)) #随机显示数据集的5行数据
#查看数据集的整体形状,即多少行多少列
# print(chipo.shape) #(4622, 5)
#打印输出全部的列名称
# print(chipo.columns)
#查看数据集的索引
# print(chipo.index)
#查看被下单最多的商品是什么?
c = chipo[['item_name','quantity']].groupby(['item_name'],as_index = False).agg({'quantity':sum})
c.sort_values('quantity',ascending = False,inplace = True)
# print(c.head())
#在item_name中,一共有多少商品被下单?
# print(chipo['item_name'].nunique()) #计算出被下单商品个数
# print(chipo['item_name'].unique()) #罗列出被下单的商品
#在choice_description中,被下单最多的商品是什么?
# print(chipo['choice_description'].value_counts().head())
#一共有多少商品被下单?
#商品下单的数量
total_items_orders = chipo['quantity'].sum()
# print(total_items_orders)
#一共下单了4972商品
#如何查看表的基本信息
# print(chipo.info())
# print(chipo['item_price'].dtype)
#观察到item_price的dtype为object
#将item_price转换为浮点数
# dollarizer = lambda x: float(x[1:-1])
# print(dollarizer(2.39))
#使用lambda转换数据类型
dollarizer = lambda x:float(x[1:-1])
#这里使用[1:-1]代表全部数据
chipo['item_price'] = chipo['item_price'].apply(dollarizer)
#查看数据转换是否成功
# print(chipo['item_price'])
#在数据集对应的时期,收入(revenue)为多少?
chipo['sub_total']= round(chipo['item_price']*chipo['quantity'],2)
revenue = chipo['sub_total'].sum()
# print(revenue)
#在该数据集对应的时期,一共有多少订单?
# print(chipo['order_id'].nunique()) #统计不重复的订单编号总数
# print(chipo['order_id'].unique()) #把每个不重复的订单编号罗列出来
#每一单(order)对应的平均总价是多少?
aa = chipo[['order_id','sub_total']].groupby(by = ['order_id'],as_index = False).agg({'sub_total':sum})
# print(aa.head())
# print(aa['sub_total'].mean())
#一共有多少种不同的商品被售出?
print(chipo['item_name'].nunique())