python数据分析中使用pandas进行预处理 的合并数据

合并数据

有三种合并数据方法:

  1. 横向或纵向堆叠合并数据
  2. 主键合并数据
  3. 重叠合并数据
    (1.横向堆叠
#横向堆叠
import numpy as py
import pandas as pd
detail=pd.read_excel('C:/data/meal_order_detail.xlsx')
df1=detail.iloc[:,:10]
df2=detail.iloc[:,:10]
print('合并df1的大小为%s,df2的大小为%s。'%(df1.shape,df2.shape))
print('外连接合并后的数据框大小为:',pd.concat([df1,df2],axis=1,join='outer').shape)
print('内连接合并后的数据框大小为:',pd.concat([df1,df2],axis=1,join='inner').shape)


横向合并

(2.纵向堆叠

#纵向堆叠
#使用concat函数和append方法 实现纵向堆叠
#表名完全相同时的concat纵向堆叠
df3=detail.iloc[:1500,:] #前1500行数据
df4=detail.iloc[1500:,:]#后1500行数据
print(df3)
print(df4)
print('合并df3的大小为%s。df4的大小为%s。'%(df3.shape,df4.shape))
print('内连接纵向合并后的数据大小为:',pd.concat([df3,df4],axis=1,join='outer').shape)
print('内连接纵向合并后的数据为:',pd.concat([df3,df4],axis=1,join='outer'))
print('外连接纵向合并后的数据大小为:',pd.concat([df3,df4],axis=1,join='inner').shape)
print('外连接纵向合并后的数据为:',pd.concat([df3,df4],axis=1,join='inner'))
#使用append方法
print('合并df3的大小为%s。df4的大小为%s。'%(df3.shape,df4.shape))
print('append纵向堆叠后的数据大小为:',df3.append(df4).shape)

纵向合并

(3.主键合并数据(

#主键合并数据(pandas 库中merge和join函数 实现主键合并)
#使用merge函数合并数据表
order=pd.read_csv('C:/data/meal_order_info.csv',encoding='gbk')
order['info_id'] = order['info_id'].astype('str')
order_detail=pd.merge(detail,order,left_on='order_id',right_on='info_id')
print('detail订单表的原始形状为:',detail.shape)
print('order订单信息表的原始形状为:',order.shape)
print('订单详情表和订单信息表主键合并之后的形状:',order_detail.shape)
#使用join函数合并数据表
order.rename({'info_id':'order_id'},inplace=True)
order_detail=detail.join(order,on='order_id',rsuffix='1')
print('订单详情表和订单信息表 join 合并后的形状为:',order_detail.shape)

(4.重叠合并数据

#建立两个字典,除了ID 外,别的特征互补
import numpy as np
import pandas as pd
dict1={'ID':[1,2,3,4,5,6,7,8,9],
      'System':['win10','win10',np.nan,'win10',np.nan,np.nan,'win7','win7','win8'],
       'cpu':['i7','i5',np.nan,'i7',np.nan,np.nan,'i5','i5','i3']
      }
dict2={'ID':[1,2,3,4,5,6,7,8,9],
      'System':[np.nan,np.nan,'win7',np.nan,'win8','win7',np.nan,np.nan,np.nan],
       'cpu':[np.nan,np.nan,'i3',np.nan,'i7','i5',np.nan,np.nan,np.nan]
      }
df5=pd.DataFrame(dict1)
df6=pd.DataFrame(dict2)
print('经过重叠合并后的数据为:\n',df5.combine_first(df6))

重叠合并

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big-Winda

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值