首页 > 编程语言 >Python数据分析,办公自动化,数据拼接与连接

Python数据分析,办公自动化,数据拼接与连接

时间:2022-10-14 16:07:48浏览次数:58  
标签:数据分析 index 办公自动化 函数 Python df1 df2 pd left



日常数据分析中,需要将多个表进行合并,包括表的纵向拼接以及表的横向连接,将多个小表组合成为一张大表,使用的方法有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)

函数的参数说明如下:

  • other:DataFrame、series、dict、list等数据结构;
  • ignore_index:默认值为False,若为True则不使用index标签;
  • verify_integrity :默认值为False,若为True,当创建相同的index时会抛出ValueError的异常;
  • sort:默认None,若为True时,进行排序。

append函数的使用方法如下:

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



df1=pd.DataFrame([[11,12],[13,14]],columns=['二班','一班'],index=['优','良'])df1

Python数据分析,办公自动化,数据拼接与连接_办公自动化_02



df2=pd.DataFrame([[15,16]],columns=['二班','三班'],index=['差'])df2

Python数据分析,办公自动化,数据拼接与连接_数据_03

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


df1.append(df2,sort=False)

Python数据分析,办公自动化,数据拼接与连接_数据_04

sort=True,进行排序。


df1.append(df2,sort=True)

Python数据分析,办公自动化,数据拼接与连接_数据_05

ignore_index=True去除索引。


df1.append(df1,ignore_index=True)#去除索引

Python数据分析,办公自动化,数据拼接与连接_数据集_06

2、concat函数

concat函数的语法如下:


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

函数的参数说明如下:

  • objs:指定需要合并的对象;
  • axis:拼接轴方向,默认为0,沿行拼接;若为1,沿列拼接;
  • join:默认外联,拼接另一轴所有的label,缺失值用NaN填充;
  • join_axes:指定需要拼接轴的labels,可在join既不内联又不外联的时候使用;
  • ignore_index:对index进行重新排序,默认为False,若为True,则表示忽略原索引并生成新索引;
  • keys:多重索引,便于区分来源表;
  • sort: 按值排序。

concat函数的使用方法如下:



importimport

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










#构造数据集df1df1 = 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]},'用户ID','日期','城市','年龄','性别','成交量'])df1

Python数据分析,办公自动化,数据拼接与连接_数据集_07









#构造数据集df2df2 = pd.DataFrame({'用户ID':[1007,1008,1009],'日期':pd.date_range(datetime.datetime(2021,3,1),periods=3),'城市':['北京', '上海', '广州'],'年龄':[33,34,34,],'成交量':[4200,3356,2633]},'用户ID','日期','城市','年龄','成交量'])df2

Python数据分析,办公自动化,数据拼接与连接_数据集_08

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







# 数据集的纵向合并df = pd.concat([df1,df2],# 指定需要合并的对象# 为合并后的数据添加新索引,用于区分各个数据部分#按照列名排序                )df

Python数据分析,办公自动化,数据拼接与连接_数据集_09

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




# 将第一列的索引列转换为变量df3 = df.reset_index(level=0,inplace=False)df3

Python数据分析,办公自动化,数据拼接与连接_办公自动化_10

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




# 变量重命名df3.rename(columns={'level_0':'数据集'},inplace=True)df3

Python数据分析,办公自动化,数据拼接与连接_数据集_11

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




# 重新调整行索引df3.index = range(df3.shape[0])df3

Python数据分析,办公自动化,数据拼接与连接_数据_12

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




# 重新调整行索引df = pd.concat([df1,df2],sort=True,ignore_index=True)df

Python数据分析,办公自动化,数据拼接与连接_数据集_13


二、横向连接


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)

函数的参数说明如下:

  • left_data、right_data:需要合并的两部分数据;
  • on:连接键,当两个表的连接键名一样,可以直接用on,而不用left_on和right_on,可以是单键或多键;
  • left_on、right_on:如果两个表键名不一样,则分别指出,可以是单键或多键;
  • suffixes:如果两边键名相同,要做区分,可以使用此参数指定区分格式,如suffixes=('left_x','right_y');
  • how:指定连接方式,分为inner、left、right、outer;

merge函数的使用方法如下:



importimport

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










#构造数据集dfdf1 = 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]},'用户ID','日期','城市','年龄','性别','成交量'])df1

Python数据分析,办公自动化,数据拼接与连接_数据集_14







#构造构造列名不同的df2df2 = pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008,1009,1010],"平台":['京东','淘宝','京东','天猫','唯品会','苏宁','天猫','淘宝','美团','拼多多'],"收入额":[100000,320000,240000,445000,340000,640000,300000,460000,540000,230000]},'id','平台','收入额'])df2

Python数据分析,办公自动化,数据拼接与连接_数据集_15

首先构建了两个连接键列名不同的数据集,需要分别指定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数据分析,办公自动化,数据拼接与连接_数据_16

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








#构造列名相同的df2df2 = 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)},'用户ID','平台','收入额','日期'])df2

Python数据分析,办公自动化,数据拼接与连接_数据_17

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




# 指定用户ID连接merge2 = pd.merge(left=df1,right=df2,how='left',on='用户ID')merge2

Python数据分析,办公自动化,数据拼接与连接_数据集_18

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




# 重复列名处理merge2 = pd.merge(left=df1,right=df2,how='left',on='用户ID',suffixes=["","1"])merge2

Python数据分析,办公自动化,数据拼接与连接_办公自动化_19

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



df=merge2[['用户ID','日期','城市','成交量','收入额']]df

Python数据分析,办公自动化,数据拼接与连接_数据_20

查看字段的属性。


df.info()

Python数据分析,办公自动化,数据拼接与连接_办公自动化_21

做收入额的条形图。


df['收入额'].plot(kind='bar')

Python数据分析,办公自动化,数据拼接与连接_数据集_22


标签:数据分析,index,办公自动化,函数,Python,df1,df2,pd,left
From: https://blog.51cto.com/u_15828536/5757084

相关文章

  • Python数据分析,办公自动化,数据分组与透视
    数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和、计数、平均值、标准差等,本文使用Python对数据进行数据分......
  • Python数据分析,办公自动化,数据预处理
    数据分析时,首先应对数据进行清洗,这里将数据清洗分为重复值处理、缺失值处理、异常值处理三个部分,重复值处理可删除重复的字段,缺失值处理可以用线性插值、填充为0或用均值填......
  • EXCEL数据分析,迷你图制作,另类的数据图表
    在数据分析中,迷你图可以简单直观的反应数据变化情况,其制作简单,可以对一行中一系列的数据进行数据比较和趋势分析。本文使用案例数据制作迷你图,所使用的方法有,REPT函数法,以及......
  • SQL数据分析,窗口函数
    本文讲解窗口函数的概念,窗口函数与数据分组的功能相似,可以指定数据窗口进行统计分析,但窗口函数与数据分组又有所区别,窗口函数对每个组返回多行,而数据分组对每个组只返回一行......
  • SQL数据分析,子查询
    子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制,通常将一个查询(子查询)的结果作为另一个查询(主查询)的数据来源或判断条件,常见的子查询有WHERE子查询,HAVING......
  • SQL数据分析,分组与透视
    数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和、计数、平均值、标准差等,本文使用SQL对数据进行数据分组......
  • SQL数据分析,数据提取与筛选
    一张表中通常会包含很多字段,造成数据冗余,在做数据分析时,我们仅需要提取数据分析所需要的字段,这里就需要用到数据选取的知识点,同时还可以依据特定条件筛选。本文介绍数据提取......
  • Python实战—基于KNN算法尾鸢花数据集分类
    KNN模型理论K最近邻分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中......
  • 使用Python同时读取和写入同一个文件
    前言在平时想要使用python修改文件部分内容的时候,常用的做法是使用open函数(默认模式为read)打开一个文件,然后关闭文件,然后再使用write模式去写入更新的内容,最后关闭。这......
  • Python实战—自行车租赁数据分析
    本节选取自行车的租赁数据,利用numpy、pandas、matplotlib三个库,数据清洗后,做数据分析,研究时间段与自行车租赁的关系。数据来源  本节以自行车的租赁数据为例,数据来源于网......