数据分析第7天

data = pd.read_excel(r'meal_order_detail.xlsx')
print(data.columns)
Index(['detail_id', 'order_id', 'dishes_id', 'logicprn_name',
       'parent_class_name', 'dishes_name', 'itemis_add', 'counts', 'amounts',
       'cost', 'place_order_time', 'discount_amt', 'discount_reason',
       'kick_back', 'add_inprice', 'add_info', 'bar_code', 'picture_file',
       'emp_id'],
      dtype='object')

读取一个xlsx文件后对其进行操作

操作1 transform

transform操作可以将括号内的内函数功能作用到counts的每一个元素

print(data['counts'].head())
print(data['counts'].transform(lambda x: x * 2).head())
0    1
1    1
2    1
3    1
4    1
Name: counts, dtype: int64
0    2
1    2
2    2
3    2
4    2
Name: counts, dtype: int64

操作2 透视表piyot_table

print(pd.pivot_table(data, columns='order_id',
                     index='dishes_name',
                     values='counts',
                     aggfunc=np.sum,
                     fill_value='空',
                     margins=True,
                     margins_name='汇总'))

index:行分组键,分组键的取值在行索引的位置充当行索引;
aggfunc表示聚合函数
values:指定想要进行聚合的列
columns:列分组键,分组键的取值在列索引额位置充当列索引
fill_value将np.nan的值填充为对应的值
margins:汇总开关,默认为False,当margins为True的时候,添加汇总的行与列;
margins_name:汇总的列或者行的columns,index的索引

操作3 交叉表crosstab,必须传index和columns

print(pd.crosstab(index=data['order_id'],columns=data['dishes_name'],
                  values=data['counts'],
                  aggfunc=np.sum))

操作4 表格合并方法concat:纵向拼接,拼接表格纵向一致的表格

concat:join='outer’表示外连接,求的是并集,‘inner’内连接,求的是交集
verify_integrity检查是否有重复值,有就报错,False表示有重复不报错

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                     'key2': ['K0', 'K1', 'K0', 'K1'],
                         'A': ['A0', 'A1', 'A2', 'A3'],
                        'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                         'C': ['C0', 'C1', 'C2', 'C3'],
                         'D': ['D0', 'D1', 'D2', 'D3']})
print(pd.concat((left,right),axis=1))
print(pd.concat((left,right),axis=0)) #纵向堆叠
print(pd.concat((left,right),axis=0,join='outer',verify_integrity=False)) #横向堆叠

merge默认按照交集进行堆叠

on:表示两个表以什么为主键进行连接
how表示连接的方式,left表示按照left表为主,right表示按照right表为主

print(pd.merge(left,right,on='key1',how='left'))

当两个表中主键的名称不一样时不能用on连接,用left_on指定左表中的主键,用left_on指定右表中的主键

print(pd.merge(left,right,left_on='key1',right_on='key2',how='right'))

更改表格名称的方法

left.rename(columns={'key1': 'key2222'},inplace=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值