当前位置: 首页 > 后端技术 > Python

【Pandas学习笔记02】-数据处理进阶用法

时间:2023-03-26 14:59:49 Python

作者:焕豪来源:恒生LIGHT云社区Pandas是一个Python软件库,它提供了大量的函数和方法让我们可以快速方便的处理数据.在本文中,我们将主要介绍Pandas的实用数据处理操作。系列文章:【Pandas学习笔记01】分析结构化数据的强大工具集【Pandas学习笔记02】-处理数据实战操作概述Pandas是一个建立在NumPy之上的库,可以理解为NumPy的增强版在数据处理方面,同时Pandas也是一个开源项目。用于数据挖掘和数据分析,同时提供数据清洗功能。在这篇文章中,我们主要介绍Pandas在数据处理方面的高层用法,包括:数据合并、分组、拆分。如果你学过数据库的SQL语法,这篇文章会很快看懂。数据合并数据准备首先定义一个DataFrame数据集:importpandasaspddf_a=pd.DataFrame(columns=['name','rank'],data=[['C',1],['java',2],['python',3],['golang',4]])df_b=pd.DataFrame(columns=['name','year'],data=[['java',2020],['python',2021],['golang',2022]])DataFrame数据集可以通过merge()方法进行合并,通过innerjoins,outerjoins,leftjoins,rightjoins等方式,下例:merge方法默认toinner取连接的交集,通过how指定连接类型,通过on#指定连接字段,通过在列中指定名称连接df_tmp=pd.merge(df_a,df_b,on='name',how='outer')print(df_tmp)#========打印========namerankyear0java220201python320212golang42022#通过在列中指定名称左连接df_tmp=pd.merge(df_a,df_b,on='name',how='left')print(df_tmp)#========print========namerankyear0C1NaN1java22020.02python32021.03golang42022.0#由specifying列中的namerightjoindf_tmp=pd.merge(df_a,df_b,on='name',how='right')print(df_tmp)#========print========名称等级year0java220201python320212golang42022#如果合并两个没有公共列的DataFrame,可以直接指定匹配字段df_c=pd.DataFrame(columns=['name1','year'],data=[['java',2020],['python1',2021],['golang1',2022]])df_tmp=pd.merge(df_a,df_c,left_on='name',right_on='name1')print(df_tmp)#========Print========namerankname1year0java2java2020数据分组数据准备首先定义一个DataFrame数据集:importpandasaspddf_a=pd.DataFrame(columns=['name','nums'],data=[['python',1],['java',2],['python',3],['java',4]])DataFrame数据集可以通过group()方法进行分组,之后分组,还可以进行求和、平均等操作,如下例所示:#获取分组数据集中每条数据的个数df_tmp=df_a.groupby('name').size()print(df_tmp)#========打印========namejava2python2dtype:int64#根据nums字段对分组后的数据集求和df_tmp=df_a.groupby('name')['nums'].总和()打印(df_tmp)#========print========namejava6python4Name:nums,dtype:int64#获取分组数据集的大小df_tmp=df_a.groupby('name').size()print(df_tmp)#========print========namejava3python2Name:nums,dtype:int64datasplit数据准备首先定义一个DataFramenumber数据集:将pandas导入为pddf_a=pd.DataFrame(columns=['name','rank'],data=[['C_no1',1],['java_no2',2],['python_no3',3],['golang',4]])split()方法可以用来拆分DataFrame数据集中某一列的数据,如下例所示:加上某个符号,展开:如果为True,可以直接将柱状结果转化为DataFramedf_tmp=df_a['name'].str.split('_',1,expand=True)print(df_tmp)#========Print========010Cno11javano22pythonno33golangNone#拆分数据,将拆分数据与原始数据再次合并df_tmp=pd.merge(df_a,df_a['name'].str.split('_',1,expand=True),how='left',left_index=True,right_index=True)打印(df_tmp)#========打印========namerank010C_no11Cno11java_no22javano22python_no33pythonno33golang4golangNone数据可视化在使用Pandas处理数据的过程中,为了展示线性关系数据的hip更直观,我们可以引入matplotlib库把我们的数据变成相关的图形#plot()方法生成对应的线性图形df_a=pd.DataFrame(columns=['name','rank'],data=[['C_no1',1],['java_no2',2],['python_no3',3],['golang',4]])df_a.Plot()总结本文主要介绍Pandas工具集的高层操作。运行原理类似于数据库中的SQL,可以帮助我们解决日常的数据分析和处理操作。