pandas 基础操作(3)

#聚合函数
# (1)numpy/pandas  统计分析方法
# (2)agg
# (3)transform  转换 ufunc  在pandas 或者numpy中没有现成的聚合函数可以使用
# 可以通过transfrom自定义函数

import pandas as pd
import numpy as np
# data = pd.read_excel('meal_order_detail.xlsx')
# data = data['counts'].transform(lambda x:x*2)
# print(data)

#分组
# groupby(by ='columns')

#透视表  pivot_table()

# data  对哪张表 传入哪张表
# index 行分组件,意思是  按照给的这个列表中的元素进行分组,然后这个元素作为生成后的行索引。
# aggfunc :聚合函数  和 agg方法一致
#values :指定想要进行聚合的列
#columns 列分组键   和 index用法相同
#fill_values  将nan填充为 对应的值
#margins 表示汇总开关,默认是False 在行列的最后 添加 一行列  来汇总表格中的信息
# margins_name  汇总行列的名称  默认是all

# print(pd.pivot_table(data, index='dishes_name', columns='order_id', aggfunc=np.sum, values='counts'
#                      ,fill_value= 0,margins=True,margins_name='all'))

#交叉表 (了解)
# print(pd.crosstab(index=data['order_id'], columns=data['dishes_name'], values=data['counts']
#                   , aggfunc=np.sum))


# 重点  表格合并方法
# concat
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', 'K3'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                         'C': ['C0', 'C1', 'C2', 'C3'],
                         'D': ['D0', 'D1', 'D2', 'D3']})
# concat:join = 'outer' 外连接,求并集   inner  内连接,求交集
# print(pd.concat((left, right), axis=0))

#  表合并
# 解决行索引没有意义的情况下,数据行不匹配的问题,(解决concat中横向拼接问题)
# print(pd.merge(left, right, on='key1',how='right'))
# on必须是两张表中公共的字段,on 字段只会保留一列
# merge参数为 how 参数为inner (内连接) 所以匹配不到的不会显示
#how  = left  左连接   坐标中所有的键都保留  right 右链接  以右表为主
# 多重主键  on = ['key1','key2']
# left_on 左表中的主键  right_on 右表中的主键     当两表主键名称不同时
# pd.merge(left,right,on=['key1','key2'],)

#更改表格的方法
# inplace  True   更改原表
# left.rename(columns={'key':'key222'},inplace=False)
dict1 = {'ID':[1,2,3,4,5,6,7,8,9],
  'System':['W10','w10',np.nan,'w10',np.nan,np.nan,'w7','w7','w8']}

dict2 = {'ID':[1,2,3,4,5,6,7,8,9],
'System':[np.nan,np.nan,'w7','w7','w7','w7','w8',np.nan,np.nan]}
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
# df1.combine_first(df2) df1中缺失的数据由对应的df2表格中的数据填充,若对方1中不为空,则不会改变。
print(df1)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值