版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Pandas-连接你我互通有无课前回顾描述性统计分析:sum、count、mean、min、max、descibe、pct_change···累计统计:cumsum、cumprod、cummax、cummin数据排序:sort_values、sort_index数据合并分析数据往往来源于不同渠道,在进行数据分析时经常需要融合多方信息,比如分析财务指标时通常涉及资产负债表和利润表数据,那么,在Pandas中,如何将多个表格的数据合并或者连接在一起呢?pandas提供了多种连接、合并的方法,包括merge()函数、concat()函数、join()函数、append()函数,这些函数均适用于不同DataFrame的合并,但适用的场景有所不同。目录01020304merge()函数concat()函数join()函数append()函数01merge()函数
数据连接-mergemerge()函数:具有表连接功能,类似于Excel中的vlookup函数,可以根据一个或多个键(列值)将不同DataFrame连接起来。merge()函数应用场景:两个DataFrame存在相同的键,根据键整合到一张表里面。merge()函数语法:pandas.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()里并没有axis参数,只能进行横向连接(列连接);DataFrame可直接调用merge(),调用merge的Dataframe是“左表”,而作为形参的是DataFrame是“右表”。merge()参数参数说明left、right两个不同的DataFramehow连接方式,有inner、outer、left、right,默认为inner内连接on用于连接的列索引名称,左右两个DataFrame中必须同时存在,如果没有指定且left_index和right_index为False,则以两个DataFrame列名交集作为连接键left_on左侧DataFrame中用于连接键的列名,该参数在左右列名不同但代表的含义相同时非常有用right_on右侧DataFrame中用于连接键的列名left_index默认False,设置为True代表使用左侧DataFrame中的行索引作为连接键right_index默认False,设置为True代表使用右侧DataFrame中的行索引作为连接键sort默认为False,是否将合并的数据进行排序,设置为False可以提高性能suffixes字符串值组成的元组,两个表存在除主键之外的相同列名时,在列名后面附加的后缀名称用以区分数据来源于哪个表,默认为('_x','_y')copy默认为True,设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。indicator默认为False,是否显示每行数据的来源validate自动检查其合并键中是否有意外的重复项数据连接-merge要求:使用merge()函数将data.xlsx中的资产负债表项目和利润表项目连接在一起。示例1代码importpandasaspd#读取资产负债表项目df1=pd.read_excel('/webpython/course/d2633ec9ca5c4a288b73f97b4616d541/data.xlsx',converters={'年':str,'月':str})#读取利润表项目df2=pd.read_excel('/webpython/course/d2633ec9ca5c4a288b73f97b4616d541/data.xlsx',sheet_name=1,converters={'年':str,'月':str})#调用merge函数连接df1、df2df3=pd.merge(df1,df2)show_table(df3.head())数据连接-merge要求:使用merge()函数将data.xlsx中的资产负债表项目和利润表连接在一起。表的连接方式merge()表连接方式有inner、left、right、outer,默认inner,空值用NaN填充inner:内连接,取交集outer:外连接,取并集left:左连接,左侧取全部,右侧取部分right:右连接,右侧取全部,左侧取部分?表的连接方式innerouter表的连接方式leftright02concat()函数
数据合并-concatconcat()函数:沿特定轴连接两个或两个以上的DataFrame,既可实现纵向合并也可实现横向合并,行列索引均可重复。concat()函数适用场景:两个或多个DataFrame进行横向(列拼接)或纵向合并(行拼接)concat()函数语法:pandas.concat(objs,axis=0,join='outer',ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,sort=None,copy=True)concat()常用参数参数说明objs连接对象axis轴向,0代表纵向合并(行拼接),1代表横向合并(列拼接),默认是0join连接方式,有inner(交集)、outer(并集),默认为'outer'ignore_index是否重建索引,默认Falsekeys传递键作为最外层级来构建层次结构索引,默认Nonelevels生成层次索引的级别,默认Nonenames生成层次索引的名称,默认Noneverify_integrity检测新的串联轴是否包含重复项,默认为Falsesort将合并的数据进行排序,设置为False可以提高性能,默认为Truecopy是否复制,默认为True纵向连接要求:使用concat()函数将data.xlsx中的资产负债表项目和利润表项目进行纵向合并。示例2代码#concat函数纵向合并df4=pd.concat([df1,df2])#展示df4行索引21及以后的行show_table(df4[21:])提示默认axis=0,纵向合并(行拼接),拼接后的表格:index=index(df1)+index(df2)→直接累加columns=columns(df1)∪columns(df2)→累加去重横向连接要求:使用concat()函数将data.xlsx中的资产负债表项目和利润表项目进行横向合并。示例3代码#concat函数横向合并df5=pd.concat([df1,df2],axis=1)#使用show_table()展示df5前5行show_table(df5.head())提示axis=1,横向合并(列拼接),拼接后的表格:columns=columns(df1)+columns(df2)→直接累加index=index(df1)∪index(df2)→累加去重03join()函数join()函数join()函数:连接另一个DataFrame的列(横向连接),与merge()函数功能类似,区别在于两者适用的场景有所不同。join()函数语法:DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)join()函数适用场景:无重复列名的两个DataFrame基于行索引进行列拼接。join()函数常用参数参数说明other连接的DataFrameon指定左表中用于连接的列名,右边必须有相同的列(需设置为索引)how连接方式,有inner、outer、left、right,默认为left左连接lsuffix两表列名重复时,左表的使用的后缀rsuffix两表列名重复时,右表的使用的后缀sort默认为True,将合并的数据进行排序,设置为False可以提高性能join()函数代码importpandasaspd#左表df_l=pd.DataFrame({'资产':[1000,1200],'负债':[200,300]})show_table(df_l)代码#右表df_r=pd.DataFrame({'收入':[1000,1200],'成本':[200,400]})show_table(df_r)代码#join连接无重复列名的DataFrameshow_table(df_l.join(df_r))join()函数要求:使用join()函数将data.xlsx中的资产负债表项目和利润表项目进行横向合并。示例4代码#join()函数横向连接,必须将右表相同列名设置为索引,与merge()函数结果一致df6=df1.join(df2.set_index(['年','月']),on=['年','月'])show_table(df6.head())04append()函数append()函数append()函数:向DataFrame对象中添加新的行(纵向合并),如果添加的列名不在DataFrame对象中,将会被当作新的列进行添加。append()函数语法:DataFrame.append(other,ignore_index=False,verify_integrity=False,sort=False)append()函数适用场景:两个DataFrame纵向连接,是concat(axis=0)的简略形式。append()函数常用参数参数说明other需要追加的DataFrameignore_index是否重建索引,默认为Falseverify_integrity具有重复项的索引是否抛出异常,默认为Falsesort默认为True,将合并的数据进行排序append()函数要求:使用append()函数将data.xlsx中的资产负债表项目和利润表项目进行纵向合并。示例5代码#append函数纵向合并df7=df1.append(df2)show_table(df7[21:])
#使用show_table()展示d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度医院门诊部承包经营服务合同3篇
- 2025年度海洋工程承包劳务服务协议3篇
- 2025年物业公司物业费收入权转让合同3篇
- 2025版高端景观工程毛石材料供应合作协议4篇
- XX公司2024年度采购协议样本版B版
- 二零二五版数据中心网络安全设备安装协议2篇
- 二零二五年度铁路客票运输合同样本3篇
- 2024绿色照明推广与实施合同
- 游戏化教学法在小学生阅读能力培养中的应用
- 文化背景下创新金融产品的市场反应研究
- 2024年国家公务员考试公共基础知识复习题库及答案(共三套)
- 《社会工作实务》全册配套完整课件3
- 单位违反会风会书检讨书
- 2024年4月自考00832英语词汇学试题
- 《电力用直流电源系统蓄电池组远程充放电技术规范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化运维服务信息化运维方案
- 汽车修理厂员工守则
- 公安交通管理行政处罚决定书式样
- 10.《运动技能学习与控制》李强
- 1神经外科分级护理制度
评论
0/150
提交评论