Python数据分析,办公自动化,数据表如何做拼接与连接?

日常数据分析中,需要将多个表进行合并,包括表的纵向拼接以及表的横向连接,将多个小表组合成为一张大表,使用的方法有Excel中的Vlookup函数法,SQL中UNIONJOIN的方法,以及Pandas模块中的函数。

使用VLOOKUP函数,指定条件在指定区域直方向查找数据。

VLOOKUP函数的公式如下:

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

匹配张三的语文、数学、英语成绩使用VLOOKUP函数演示。

Python数据分析,办公自动化,数据表如何做拼接与连接?

VLOOKUP函数动态演示

在SQL中,对于多张表的纵向拼接,使用UNIONUNION ALL关键词,对于多张表横向连接,使用INNER JOIN或者LEFT JOIN即可。

在Python,Pandas模块中append函数和concat函数可以对表格做纵向合并merge函数可以对表格横向连接。其中,append函数只能在行方向进行拼接,concat函数可以在行方向或列方向进行内联或外联拼接操作,默认行拼接,取并集,merge函数可以在行方向或列方向进行拼接,默认列拼接,取交集。

本文详细介绍Pandas模块中append函数、concat函数和merge函数,使用案例数据进行代码演示,下面一起来学习。

本文来源于公众号:大话数据分析

一、表格纵向拼接

1、append函数

append函数的语法如下:

df.append(other, ignore_index=False, verify_integrity=False, sort=None)

函数的参数说明如下:

append函数的使用方法如下:

构建一个DataFrame数据集,表示为df1和df2。

df1=pd.DataFrame([[11,12],[13,14]],columns=['二班','一班'],index=['优','良'])
df1
Python数据分析,办公自动化,数据表如何做拼接与连接?

df2=pd.DataFrame([[15,16]],columns=['二班','三班'],index=['差'])
df2
Python数据分析,办公自动化,数据表如何做拼接与连接?

使用append函数拼接,不排序。

df1.append(df2,sort=False)
Python数据分析,办公自动化,数据表如何做拼接与连接?

sort=True,进行排序。

df1.append(df2,sort=True)
Python数据分析,办公自动化,数据表如何做拼接与连接?

ignore_index=True去除索引。

df1.append(df1,ignore_index=True)#去除索引
Python数据分析,办公自动化,数据表如何做拼接与连接?

2、concat函数

concat函数的语法如下:

pd.concat(objs,axis=0,join='outer',jokin_axes=None,ignore_index=False,keys=None)

函数的参数说明如下:

concat函数的使用方法如下:

import pandas as pd
import datetime

构建一个DataFrame数据集,表示为df1和df2。

#构造数据集df1
df1 = pd.DataFrame({'用户ID':[1001,1002,1003,1004,1005,1006],
                    '日期':pd.date_range(datetime.datetime(2021,3,26),periods=6),
                    '城市':['北京', '上海', '广州', '上海', '杭州', '北京'],
                    '年龄':[23,44,54,32,34,32],
                    '性别':['F','M','M','F','F','F'],
                    '成交量':[3200,1356,2133,6733,2980,3452]},
                     columns =['用户ID','日期','城市','年龄','性别','成交量'])
df1
Python数据分析,办公自动化,数据表如何做拼接与连接?

#构造数据集df2
df2 = pd.DataFrame({'用户ID':[1007,1008,1009],
                    '日期':pd.date_range(datetime.datetime(2021,3,1),periods=3),
                    '城市':['北京', '上海', '广州'],
                    '年龄':[33,34,34,],
                    '成交量':[4200,3356,2633]},
                    columns =['用户ID','日期','城市','年龄','成交量'])
df2
Python数据分析,办公自动化,数据表如何做拼接与连接?

使用concat函数拼接,keys为合并后的数据添加新索引,用于区分各个数据部分sort按照列名排序。

# 数据集的纵向合并
df = pd.concat([df1,df2],# 指定需要合并的对象
                keys=['df1','df2'],# 为合并后的数据添加新索引,用于区分各个数据部分
                sort=True #按照列名排序
                )
df
Python数据分析,办公自动化,数据表如何做拼接与连接?

level=0将第一列的索引列转换为变量。

# 将第一列的索引列转换为变量
df3 = df.reset_index(level=0,inplace=False)
df3
Python数据分析,办公自动化,数据表如何做拼接与连接?

rename将第一列的索引列转换为变量后然后重命名。

# 变量重命名
df3.rename(columns={'level_0':'数据集'},inplace=True)
df3
Python数据分析,办公自动化,数据表如何做拼接与连接?

拼接成新的数据集后,发现行索引还是原来的,不直观,这是使用两种方法进行修改,一种是使用index的方法。

# 重新调整行索引
df3.index = range(df3.shape[0])
df3
Python数据分析,办公自动化,数据表如何做拼接与连接?

另一种当ignore_index=True,对index进行重新排序。

# 重新调整行索引
df = pd.concat([df1,df2],sort=True,ignore_index=True)
df
Python数据分析,办公自动化,数据表如何做拼接与连接?

二、横向连接

1、merge函数

merge函数的语法如下:

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

函数的参数说明如下:

merge函数的使用方法如下:

import pandas as pd
import datetime

构建一个DataFrame数据集,表示为df1和df2。

#构造数据集df
df1 = pd.DataFrame({'用户ID':[1001,1002,1003,1004,1005,1006],
                    '日期':pd.date_range(datetime.datetime(2021,3,26),periods=6),
                    '城市':['北京', '上海', '广州', '上海', '杭州', '北京'],
                    '年龄':[23,44,54,32,34,32],
                    '性别':['F','M','M','F','F','F'],
                    '成交量':[3200,1356,2133,6733,2980,3452]},
                     columns =['用户ID','日期','城市','年龄','性别','成交量'])
df1
Python数据分析,办公自动化,数据表如何做拼接与连接?

#构造构造列名不同的df2
df2 = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008,1009,1010],
                    "平台":['京东','淘宝','京东','天猫','唯品会','苏宁','天猫','淘宝','美团','拼多多'],
                    "收入额":[100000,320000,240000,445000,340000,640000,300000,460000,540000,230000]},
                    columns =['id','平台','收入额'])
df2
Python数据分析,办公自动化,数据表如何做拼接与连接?

首先构建了两个连接键列名不同的数据集,需要分别指定left_on和right_on进行连接,此处how='left'是左连接。

# 将df1和df2连接起来
merge1 = pd.merge(left=df1,right=df2,how='left',left_on='用户ID',right_on='id')
merge1
Python数据分析,办公自动化,数据表如何做拼接与连接?

构造列名相同的df2,都有一个'用户ID'的列名。

#构造列名相同的df2
df2 = pd.DataFrame({"用户ID":[1001,1002,1003,1004,1005,1006,1007,1008,1009,1010],
                    "平台":['京东','淘宝','京东','天猫','唯品会','苏宁','天猫','淘宝','美团','拼多多'],
                    "收入额":[100000,320000,240000,445000,340000,640000,300000,460000,540000,230000],
                    '日期':pd.date_range(datetime.datetime(2021,3,1),periods=10)},
                    columns =['用户ID','平台','收入额','日期'])
df2
Python数据分析,办公自动化,数据表如何做拼接与连接?

因为都有一个'用户ID'的列名,所以此处左连接时,不用分别指定左右键名,只需要用on指定就好。

# 指定用户ID连接
merge2 = pd.merge(left=df1,right=df2,how='left',on='用户ID')
merge2
Python数据分析,办公自动化,数据表如何做拼接与连接?

suffixes对于重复的列名修改,作区分。

# 重复列名处理
merge2 = pd.merge(left=df1,right=df2,how='left',on='用户ID',suffixes=["","1"])
merge2
Python数据分析,办公自动化,数据表如何做拼接与连接?

通常表格拼接完成后,数据预处理后就可以对数据做分析了,对于数据分析所需要的的字段分析。

df=merge2[['用户ID','日期','城市','成交量','收入额']]
df
Python数据分析,办公自动化,数据表如何做拼接与连接?

查看字段的属性。

df.info()
Python数据分析,办公自动化,数据表如何做拼接与连接?

做收入额的条形图。

df['收入额'].plot(kind='bar')
Python数据分析,办公自动化,数据表如何做拼接与连接?

展开阅读全文

页面更新:2024-03-13

标签:数据   纵向   成交量   淘宝   横向   上海   北京   办公自动化   函数   数据表   索引   年龄   方向   收入   日期   用户   城市   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top