欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Python数据分析与可视化教案3.7 数据的拼接和合并.docx

    • 资源ID:60536867       资源大小:241.89KB        全文页数:7页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Python数据分析与可视化教案3.7 数据的拼接和合并.docx

    课 题3.7数据的拼接和合并课 型讲练授课班级大数据授课时数2教学目标1 .理解纵向拼接和横向合并的意义。2 .能够将多个数据进行纵向拼接。3 .能够将多个数据进行横向合并。4 .理解横向合并中内连接、外连接、左连接、右连接的作用。教学重点1 .能够将多个数据进行纵向拼接。2 .能够将多个数据进行横向合并。教学难点1.理解横向合并中内连接、外连接、左连接、右连接的作用。学情分析数据的连接在数据库SQL中已经学过,这一点有助于pandas的数据合 并的内容的学习。在数据导入时,往往会遇到数据的合成。比方某店铺想了解某月的销售额,就需 要将这个月第1天、第2天、,直到最后一天的日销售报表合成一个月销售报表, 以了解商铺的运营情况。数据的合成是一种将来自不同源的数据组合成一个报表的有 效方法常用的方法。如果将两个或多个列名完全相同的DataFrame数据连接起来,从方向上看是数据 的纵向拼接。如果根据某一列将不同的两个DataFrame数据合并在一起,从方向上看 是数据的横向合并。纵向拼接和横向合并都有各自的特点,使用时需要注意数据合成 的方向。一、数据的纵向拼接数据的纵向拼接将两个或多个DataFrame同列拼接,在拼接时,要保证不同的 DataFrame列名必须全部相同,否那么就会出现多个空值。纵向拼接可以使用append 函数,叩pend的一般用法为:DataFrame.append(other, ignore_index)其中,other表示添加的数据。ignore_index表示是否忽略原来索引并重新构建索引。append函数可以将数据向 下拓展,在数据拼接时,如果仅仅将默认的索引按照原始的行号连接起来,比方表1 默认索引是0、1、2、,表2默认索引是0、1、2、,连接后的索引就是0、1、 2、0、1、2、,这显然不方便数据的调用。ignore_index=True表示忽略原来索 引重新构建索引,即表2的索引会在表1的索引的基础自动向下编号,使得两个表的 索引变为一个完整的索引,便于数据选取。ignorejndex=False表示沿用原来索引, 而且这是默认设置。例如代码如下:import numpy as npimport pandas as pdarrl = np.arange( 1,10).reshape(3,3)data_l = pd.DataFrame(arrl,columns='aVb,'c,)arr2 = np.arange( 10,16).reshape(2,3)data_2 = pd.DataFrame(arr2,columns='a'/b7e,|)print( " 初始数据为:n ” ,data_ 1)print("初始拼接数据为据”,data_2)data_appendl = data_ 1 .append(data_2,ignore_index=False)data_append2 = data_ 1 .append(data_2,ignore_index=True)print("沿用原来索引的结果为:ndata_叩pend 1)print("重新构建索引的结果为果”,data_append2)3-7C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-7.py 初始数据为:a b c0 12 314 5 62 7 8 9初始拼接数据为:a b c0 10 11 121 13 14 15沿用原来索引的结果为:a b c01231456278901101112I11131415重新构建索引的结果为:a b c0123568911 1214 15Process finished with exit code 0图3-*数据的纵向拼接例如结果【结果分析】从结果中可以看到,在数据拼接时,如果参数ignore_index等于 False, data_2的索引还是原来的0和1,如果参数ignore-ndex等于True, data_2 的索引就在data索引的基础上自动变为新索引3和4。二、数据的横向合并merge函数可以将两个表格(DataFrame)进行横向合并,通过merge函数可以将 两个Dataframe根据一些共有的列(合并字段或主键)合并起来,比方编号“ID”。 横向合并时可以选择不同的合并方式,可以选择inner(默认)、outer> left> right这几 种模式,分别对应是内连接、外连接,左连接,右连接。merge函数的一般用法为:pandas.merge(left_Dataframe,right_Dataframe,how,on,sort)其中,各个参数的作用如下:left_Dataframe表示参与合并的左侧DataFrameoright_Dataframe表示参与合并的右侧DataFrameohow 表示合并方式,取值包括'inner'、'outer'、'left'、Tight',默认为'inner'。'inner' 表示内连接,即两个表将根据合并字段(主键)的重复取值进行合并,类似于交集。 6ute,表示外连接,即两个表将根据合并字段(主键)的所有取值进行合并,类似于 并集。卜任表示左连接,即两个表将根据左表合并字段(主键)的取值进行合并。Tight, 表示右连接,即两个表将根据右表合并字段(主键)的取值进行合并。如果在数据合 并时,除了用于合并的主键以外,还出现了其他重复的列,最后的结果中,会以“列 名_x”和“列名_y”的方式出现。on表示用于连接的列名,未指定那么使用两列的交集作为连接键。sort表示合并以后数据排序,True表示升序,False表示降序。例如代码如下:arrl = np.arange( 1,10).reshape(3,3)data_left = pd.DataFrame(arrl,columns=|'a,/bVc,) datajeft,key, = ,001,002,;003,arr2 = np.arange( 10,19).reshape(3,3)data_right = pd.DataFrame(arr2,columns= '/dVe* ) data.rightfkey'=001700270041 print("初始左表数据为:n”,dataeft) print("初始右表数据为:n ” ,data_right)data_merge 1 = pd.merge(data_left,data_right,how='inner',on='key,) print("按内连接方式的合并结果为:n ” ,data_merge 1)data_merge2 = pd.merge(data_left,data_right,how=,outer',on='key') print("按外连接方式的合并结果为:n”,data_merge2) 输出结果如图3-*所示。Run:3-7C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-7.py 初始左表数据为:a b c keyFp0123001初始右表数据为:adekey010111200111314150022161718004内连接的合并结果为:Process finished with exit code 0a_x b c keyaqde01 2 3 00110111214 5 6 002171415外连接的合并结果为:ax b ckeya_/de0 1.0 2.0 3.030110.G11.0 12.01 4.0 5.0 6.030213.(14.0 15.02 7.0 8.0 9.0303NahNaN NaN3 NaN NaN NaN 004皿17.0 18.0图3-*内连接和外连接例如结果【结果分析】从结果可以看到,采用内连接的连接方式时,根据两表“key”列 中相同的2条数据(001和002)进行了合并。采用外连接的连接方式时,根据两表 “key”列中所有4条数据(001、002、003和004)进行了合并。例如代码如下:data_merge3 = pd.merge(dataeft,data_right,how='left',on='key')print("按左连接方式的合并结果为:n ” ,data_merge3)data_merge4 = pd.mergeCdata-lefdata-right,how=Yightoney*)print("按右连接方式的合并结果为:n ” ,data_merge4)Run:3-71 0 示 丑1 0 示 丑abc ke;012300114560022789003初始右表数据为:C:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-7.py 初始左表数据为:0a10d11e12ke: 00111314150022161718004左连接的合并结果为:a_xbckeya_/de012300110.11.012.0145600213.C14.015.02789003NahNaNNaN右连接的合并结果为:a_xbckeya_d01.02.03.000110111214.05.06.00021314152NaNNaNNaN004161718Processfinishedwithexitcode0图3-*左连接和右连接例如结果【结果分析】从结果可以看到,采用左连接的连接方式时,根据左表“key”列 中3条数据(001、002和003)进行了合并。采用右连接的连接方式时,根据右表“key” 列中3条数据(001、002和004)进行了合并。任务实训任务1 :利用循环语句,依次导入supermarket.xlsx(supermarket.xlsx存放在c:data 路径中)中前4张工作表“1月1日”、“1月2日”、“1月3日”、“1月4日”,数据 如图3-*所示。利用叩pend函数依次拼接,拼接时,忽略原来数据的索引,结果存放 在 datal_appendosupermarketjclix - Microsoft Excelsupermarketjclix - Microsoft Excel页面布闰公式数据审阅视图X情传金的 130E F G H IAB订单ID,客户ID010101' 14485-11 A,a'三三.物_ > A-津津字体G I对齐方式G常规阴T故字.舄条件格式,,1日用表格格式 哼用元格样式样式a*删除 a 团格式,a:钳为.排序和标选直找和选择单元格刷相23456010102,10165010104'10165010105'17170010106'15730订单日期单价较愤2018-04-27 00:00:006522018-06-15 00:00:006322018-06-15 00:00:00162018-12-09 00:00:008042017-05-31 00:00:004593姓惠安安良:I 一. 户曾许许宋万126323201377I100% -因 I口 100%日a-未体“ FY三一版j楝黑黑r器T £打热叫-4.3. . 域它用表格格式,删除”图,"仁,B Z u- > A受.至参叁律演 知:。.;厚单式。府格式2即W崎选查丽评M .06.剪贴板G字体二对齐方式G 数字 G 样式 单元格稿相明明明 俞俞前至 H 0 C * I ?supermarketjdsx - Microsoft Excel X文件.开始 ISA 页面布H 公式supermarketjclix - Microsoft Excel页面布局公式数据审阅视图Go3S3常规阴T_ > A- *5 津澧4 字体心 | 对齐灰 心收字.显条件格式上施入,1日用表格格式产的除,巧用元格样式圆格式样式单元格|:"筋&排序和荷选直找和选择supermarketjclsx - Microsoft Excel X粘贴文件 11B Z U 字体对齐万式放字”空布H £、. 我曳南民P| M A R|嗝相落贴板样式第元格舄条件格式超2用表格格式 均单元格样式,supermdtketjdsx - Microsoft Excel-K页面布同公式数58审阅视图A柒,秘. 11 A* A三三三涉,剪贴板B Z U _ > 字体Z货对齐方式吗 ,展展喀单元格样式数字 Q 样式M: 3: M 热,£格式.q.博序和筛选杳谢诩翠- XoO 3蒸 舄条杵格式, 每套用表格格式,图3-*任务1初始数据具体代码如下:pd.seCoptionCdisplay.maX-ColumnsNone)pdset_option('display. width',None)pd.set_option(,True)datal = pd.read_excel(,c:datasupermarket.xlsx,sheet_name=O)for i in range(l,4):datal_append = pd.read_excel(,c:datasupermarket.xlsx',sheet_name=i) datal = data 1 .append(data 1 _append,ignore_index=True)print("拼接后 1 月数据 datal 为:n",datal)输出结果如图3-*所示。Run:3-7AC:UsersliliangAnaconda3python.exe C:/Users/liliang/PycharmProjects/sjfx/3-7.py拼接后1月数据datal为:订单ID客户ID客户姓名订单日期单价数量销售金额01010114485曾惠2018-04-2765213011010210165许安2018-06-1563212621010410165许安2018-06-151623231010517170宋良2018-12-0980432041010615730万兰2017-05-314593137751020118325俞明2016-10-27123791113361020318325俞明2016-10-27240248071020418325俞明2016-10-2721654866081030210885赵婵2016-06-05228368491030310885赵婵2016-06-0526551325101040114050白鹄2018-10-0233372331111040214050白鹄2018-10-0286186Process finished with exit code 0图3-*任务1输出结果任务2:任务1的数据拼接结果datal是1月的局部销售记录,而supermarket.xlsx 中第5张工作表“1月打折”记录1月局部订单的打折数据,下面datal将作为左表 数据,将工作表“1月打折”作为右表数据,将“订单ID”作为合并的连接键,按照 内连接的方式将两表进行连接,合并结果存放在data2,并输出data2的前5行中,折 扣金额大于5000的“客户姓名”、“销售金额”、“打折金额”。具体代码如下:data_left = dataldata_right = pd.read_excel(,c:datasupermarket.xlsx',sheet_name=,l 月打折”)data2 = pd.merge(dataeft,data_right,how='inner',on=W ID')print("数据合并结果为:n ” ,data2)result = data2.head(5).locdata2折扣金额>50001客户姓名?销售金额?折扣金额print("数据合并后的数据筛选输出结果为:n”,result) 输出结果如图3-*所示。Run:3-7数据合并结果为:0订单ID 10101客户ID客户姓名订单日期单价数量销售金额折扣130折扣金额14485曾惠2018-04-276520.478.011010210165许安2018-06-156321260.0126.021010410165许安2018-06-15162320.4192.031010517170宋良2018-12-098043200.01377.041020118325俞明2016-10-2712379111330.011133.051020418325俞明2016-10-272165486600.08660.061030210885赵婵2016-06-0522836840.0684.071030310885赵婵2016-06-05265513250.01325.0数据合并后的数据筛选输出结果为: 客户姓名销售金额折扣金额4 俞明 1113311133.0Process finished with exit code 0图3-*任务2输出结果巩固训练利用循环语句,依次导入score.xlsx中前5张工作表“1班”、“2班”、“3班”、“4 班”、“5班”,并利用append函数依次拼接,连接时,忽略原来数据的索引,查询合 并数据行数。

    注意事项

    本文(Python数据分析与可视化教案3.7 数据的拼接和合并.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开