Python学习笔记7 您所在的位置:网站首页 python做数据清理 Python学习笔记7

Python学习笔记7

2024-07-12 04:35| 来源: 网络整理| 查看: 265

目录 工具包准备纵向合并横向合并总结附录代码

工具包准备

在这里插入图片描述

纵向合并

数据准备: 初始数据为包含3个工作簿的Excel工作表,3个工作簿的列标签都一致。 在这里插入图片描述 这里附上数据表:workbook1.xlsx 读取数据: 在这里插入图片描述 读取上面三个工作簿的数据以DataFrame格式存储,并查看其中一个: (前两个sheet各有100行数据,第三个sheet有112行数据,不计首行) 在这里插入图片描述合并数据: 1)pd.concat()方法 在这里插入图片描述 得到的数据表结果显示“312 rows × 9 columns”,共312行9列,数据纵向合并成功。 没完,发现数据展示的最后一行的索引值是“111”,这么一看数据好像只有112行? (其实是一个简单问题,活跃下气氛,大佬们略过就好_(:з」∠)_) 这里是因为数据合并是原数据表的索引没有重置,可以添加参数 “ignore_index=True” 重置索引再合并: 在这里插入图片描述除此之外,还可以使用reset_index()直接对新表进行索引重置,语法如下:

#重置表S的索引 S.reset_index()

当需要合并的表格有多个时,可以构建for循环来简化操作,如下: 在这里插入图片描述这里循环构建的前提是各个sheet名之间有一定的规律性。 2)append()方法 在这里插入图片描述同样在多表合并时也可以利用for循环: 在这里插入图片描述

横向合并

数据准备: 在这里插入图片描述在这里插入图片描述 两个数据表:t1.csv、t2.csv,都是拆分后的景点信息,可以按 t1 的 dname1 和 t2 的 dname2作为匹配条件进行匹配合并。

DataFrame 横向合并使用的函数是 pd.merge(),合并逻辑类似 SQL 当中的内外连接查询,具体就不展开了,可以参考我的这一篇博客:SQL学习笔记2——内、外连接查询,使用的是同样的数据。

下面开始实操:

合并数据: 1)内连接 这里的参数“ how=‘inner’ ”是可以省略的,默认合并方式就是以内连接形式 在这里插入图片描述对比SQL当中内连接的结果,可以看到是一模一样的: 在这里插入图片描述 2)外连接 外连接同理,连接结果与SQL当中的外连接是一样的,下面直接放图对比。 左连接: 在这里插入图片描述在这里插入图片描述 右连接: 在这里插入图片描述在这里插入图片描述

总结

1) 两个或多个DataFrame之间可以纵向或横向合并,纵向合并增添行,横向合并增添列; 2) 纵向合并通常会利用 xlrd工具包来获取 Excel 工作表的 sheet名,可以使用 pd.concat() 或 append() 方法进行合并; 3) 横向合并类似SQL中的内外连接查询,根据需求对应进行内连接、左连接、右连接等操作。

附录代码 import pandas as pd import xlrd import os os.chdir('D:\practice') #设置当前工作路径 ****纵向合并**** workbook = xlrd.open_workbook('workbook1.xlsx') #打开指定Excel工作表 sheetname = workbook.sheet_names() #读取sheet名 sheetname #获取workbook1中各工作簿的数据 s1 = pd.read_excel('workbook1.xlsx',sheet_name = 'Sheet1') s2 = pd.read_excel('workbook1.xlsx',sheet_name = 'Sheet2') s3 = pd.read_excel('workbook1.xlsx',sheet_name = 'Sheet3') s3 #查看其中一个表的数据 #合并上面的3个表 S = pd.concat([s1,s2,s3],axis=0) #axis=0表示按行操作 S S = pd.concat([s1,s2,s3],axis=0,ignore_index=True) #重置索引合并 S #构建for循环 DF = pd.DataFrame() for i in sheetname: DF_i = pd.read_excel('workbook1.xlsx',sheet_name = i) DF = pd.concat([DF,DF_i],axis=0,ignore_index=True) DF #append方法合并 S = s1.append([s2,s3],ignore_index=True) S #构建for循环 DF = pd.DataFrame() for i in sheetname: DF_i = pd.read_excel('workbook1.xlsx',sheet_name = i) DF = DF.append([DF_i],ignore_index=True) DF ****横向合并**** t1 = pd.read_csv('t1.csv') t1 t2 = pd.read_csv('t2.csv') t2 #内连接 T1 = pd.merge(left=t1,right=t2,how='inner',left_on='dname1',right_on='dname2') T1 #左外连接 T2 = pd.merge(left=t1,right=t2,how='left',left_on='dname1',right_on='dname2') T2 #右外连接 T3 = pd.merge(left=t1,right=t2,how='right',left_on='dname1',right_on='dname2') T3


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有