1、读取数据
import pandas as pd
df = pd.read_csv('快餐数据.tsv', sep = '\t')
print(df)
2、查看基本信息
查看前五条数据
df.head()
查看整体信息
df.info()
可以看到,一共有4622条数据,只有 choice_description列有缺失值, item_price为object类型是因为 价格前面有 $ 符号。 打印列名称
df.columns
Index(['order_id', 'quantity', 'item_name', 'choice_description',
'item_price'],
dtype='object')
3、详细信息
查询各商品的下单数
df[['quantity','item_name']].groupby('item_name', as_index = False).sum()
这里先按 item_name 分组,再按 quantity 求和,as_index 表示不将 item_name 作为序号
一共有50种商品,我们再按数量从高到低排序
c = df[['quantity','item_name']].groupby('item_name', as_index = False).sum()
# inplace为True 表示替换原数据
c.sort_values('quantity',ascending = False, inplace = True)
c.head() # 查看前五条
可以看到下单量最多的商品
查看某一列有多少个不同的值,使用 nunique
df['item_name'].nunique()
在 choice_description 中,下单次数最多的商品是什么
# value_counts() 对Series里面的每个值进行计数并且排序
df['choice_description'].value_counts().head()
总下单数
c['quantity'].sum() # 对该列求和
4972
计算每一行对应订单的收入
# round 四舍五入,保留2位小数
df['sub_total'] = round(df['item_price']*df['quantity'],2)
总收入
df['sub_total']
39237.02
计算每个订单的收入
# 按订单id分组,对 sub_total 求和
df[['order_id','sub_total']].groupby('order_id').sum()
求所有订单的平均收入 在每个订单收入的基础上,对 sub_total 求均值
df[['order_id','sub_total']].groupby('order_id').sum()['sub_total'].mean()
21.39423118865867