|
😎作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。🤓同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。🌼同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入社群,可以直接vx联系(文末有名片)v:bdizztt🖥随时欢迎您跟我沟通,一起交流,一起成长、进步!点此也可获得联系方式~本文目录前言一、read_excel()函数简介1.1基础语法二、to_excel()函数简介三、代码案例读取并处理Excel数据场景2:合并多个Excel工作表写入格式化的Excel文件四、read_excel()数据实战函数原型sheetnameheaderskiprowsskip_footerindex_colnames五、to_excel()数据实战excel_writersheet_namena_repcolumsheaderindex总结前言Pandas是Python中用于数据分析和操作的强大库,它提供了许多方便的函数来处理各种格式的数据。Excel文件作为一种常见的数据存储格式,在数据处理中经常用到。Pandas提供了read_excel()函数来读取Excel文件,以及to_excel()函数将数据写入Excel。本文将详细解析这两个函数的用法,并通过代码示例展示它们在不同场景下的应用。一、read_excel()函数简介Pandas是一个开源的数据分析和操作库,它提供了快速、灵活和表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。Pandas是基于NumPy构建的,因此可以与NumPy无缝集成。read_excel()函数用于读取Excel文件并将其转换为Pandas的DataFrame对象。这是处理Excel数据的基础。1.1基础语法pandas.read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,verbose=True,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True,**kwds)1234567常用的参数说明:io:string,pathobject;excel路径。sheetname:string,int,mixedlistofstrings/ints,orNone,default0返回多表使用sheetname=[0,1],若sheetname=None是返回全表注意:int/string返回的是dataframe,而none和list返回的是dictofdataframeheader:int,listofints,default0指定列名行,默认0,即取第一行,数据为列名行以下的数据若数据不含列名,则设定header=Noneskiprows:list-like,Rowstoskipatthebeginning,省略指定行数的数据skip_footer:int,default0,省略从尾部数的int行数据index_col:int,listofints,defaultNone指定列为索引列,也可以使用u”strings”names:array-like,defaultNone,指定列的名字。1234567示例代码importpandasaspd#读取Excel文件df=pd.read_excel('path_to_your_excel_file.xlsx')#只读取特定的列df=pd.read_excel('path_to_your_excel_file.xlsx',usecols=['Column1','Column2'])1234567二、to_excel()函数简介to_excel()函数用于将DataFrame对象写入Excel文件。你可以控制输出的格式、工作表名称等。基础语法DataFrame.to_excel(io,excel_writer,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None,storage_options=None)123456常用的参数说明:io:Excel文件的路径或文件对象。sheet_name:写入的工作表名称。na_rep:缺失值的表示方式,默认为空字符串。columns:指定要写入的列。header:是否写入列名。index:是否写入索引。123456示例代码#将DataFrame写入Excel文件df.to_excel('output_excel_file.xlsx',sheet_name='Sheet1')#只写入特定的列df.to_excel('output_excel_file.xlsx',columns=['Column1','Column2'])12345三、代码案例读取并处理Excel数据#读取Excel文件df=pd.read_excel('data.xlsx')#数据清洗:去除重复记录df=df.drop_duplicates()#将处理后的数据写回Exceldf.to_excel('cleaned_data.xlsx')12345678场景2:合并多个Excel工作表#读取Excel文件中的所有工作表xls=pd.ExcelFile('multi_sheets.xlsx')#遍历工作表并读取数据dfs={sheet:xls.parse(sheet)forsheetinxls.sheet_names}#合并所有工作表的数据combined_df=pd.concat(dfs.values(),ignore_index=True)#将合并后的数据写入新的Excel文件combined_df.to_excel('combined_data.xlsx',index=False)1234567891011写入格式化的Excel文件#写入Excel文件,指定列名和不写入索引df.to_excel('formatted_data.xlsx',index=False,header=True,columns=['Column1','Column2'])#使用ExcelWriter来设置工作表的格式withpd.ExcelWriter('styled_data.xlsx',engine='xlsxwriter')aswriter:df.to_excel(writer,sheet_name='Sheet1',startrow=2,startcol=3,index=False)workbook=writer.bookworksheet=writer.sheets['Sheet1']worksheet.set_column('A',15)#设置列宽123456789四、read_excel()数据实战假设我们拥有数据源如下:sheet1:IDNUM-1NUM-2NUM-33690114216866136902785216023690314460052136904954574683690569596695sheet2:IDNUM-1NUM-2NUM-3369061905276913690710140347012345678910111213函数原型basestation="F://pythonBook_PyPDAM/data/test.xls"data=pd.read_excel(basestation)printdata123输出一个dataframeIDNUM-1NUM-2NUM-3036901142168661136902785216022369031446005213369049545746843690569596695123456sheetnamesheetname参数:返回多表使用sheetname=[0,1],若sheetname=None是返回全表注意:int/string返回的是dataframe,而none和list返回的是dictofdataframedata_1=pd.read_excel(basestation,sheetname=[0,1])printdata_1printtype(data_1)123输出:dictofdataframeOrderedDict([(0,IDNUM-1NUM-2NUM-3036901142168661136902785216022369031446005213369049545746843690569596695),(1,IDNUM-1NUM-2NUM-3036906190527691136907101403470)])123456789header指定列名行,默认0,即取第一行,数据为列名行以下的数据若数据不含列名,则设定header=None,注意这里还有列名的一行。data=pd.read_excel(basestation,header=None)printdata输出:01230IDNUM-1NUM-2NUM-3136901142168661236902785216023369031446005214369049545746853690569596695data=pd.read_excel(basestation,header=[3])printdata输出:369031446005210369049545746813690569596695123456789101112131415161718skiprows省略指定行数的数据data=pd.read_excel(basestation,skiprows=[1])printdata输出:IDNUM-1NUM-2NUM-303690278521602136903144600521236904954574683369056959669512345678skip_footer省略从尾部数的int行的数据data=pd.read_excel(basestation,skip_footer=3)printdata输出:IDNUM-1NUM-2NUM-303690114216866113690278521602123456index_col指定列为索引列,也可以使用u”strings”data=pd.read_excel(basestation,index_col="NUM-3")printdata输出:IDNUM-1NUM-2NUM-3661369011421686023690278521521369031446004683690495457695369056959612345678910names指定列的名字。data=pd.read_excel(basestation,names=["a","b","c","e"])printdataabce03690114216866113690278521602236903144600521336904954574684369056959669512345678五、to_excel()数据实战数据源IDNUM-1NUM-2NUM-3036901142168661136902785216022369031446005213369049545746843690569596695536906165453加载数据:basestation="F://python/data/test.xls"basestation_end="F://python/data/test_end.xls"data=pd.read_excel(basestation)123456789101112excel_writer参数excel_writer,输出路径。data.to_excel(basestation_end)输出:IDNUM-1NUM-2NUM-3036901142168661136902785216022369031446005213369049545746843690569596695536906165453123456789sheet_name将数据存储在excel的那个sheet页面。data.to_excel(basestation_end,sheet_name="sheet2")1na_rep缺失值填充data.to_excel(basestation_end,na_rep="NULL")输出:IDNUM-1NUM-2NUM-3036901142168661136902785216022369031446005213369049545746843690569596695536906165453NULL123456789columssequence,optional,Columnstowrite选择输出的的列。data.to_excel(basestation_end,columns=["ID"])输出ID03690113690223690333690443690553690612345678910headerbooleanorlistofstring,默认为True,可以用list命名列的名字。header=False则不输出题头。data.to_excel(basestation_end,header=["a","b","c","d"])输出:abcd036901142168661136902785216022369031446005213369049545746843690569596695536906165453data.to_excel(basestation_end,header=False,columns=["ID"])header=False则不输出题头输出:03690113690223690333690443690553690612345678910111213141516171819indexindex:boolean,defaultTrueWriterownames(index)默认为True,显示index,当index=False则不显示行索引(名字)。index_label:stringorsequence,defaultNone设置索引列的列名。data.to_excel(basestation_end,index=False)输出:IDNUM-1NUM-2NUM-3369011421686613690278521602369031446005213690495457468369056959669536906165453data.to_excel(basestation_end,index_label=["f"])输出:fIDNUM-1NUM-2NUM-30369011421686611369027852160223690314460052133690495457468436905695966955369061654531234567891011121314151617181920总结📝Hello,各位看官老爷们好,我已经建立了CSDN技术交流群,如果你很感兴趣,可以私信我加入我的社群。📝社群中不定时会有很多活动,例如每周都会包邮免费送一些技术书籍及精美礼品、学习资料分享、大厂面经分享、技术讨论谈等等。📝社群方向很多,相关领域有Web全栈(前后端)、人工智能、机器学习、自媒体副业交流、前沿科技文章分享、论文精读等等。📝不管你是多新手的小白,都欢迎你加入社群中讨论、聊天、分享,加速助力你成为下一个大佬!📝想都是问题,做都是答案!行动起来吧!欢迎评论区or后台与我沟通交流,也欢迎您点击下方的链接直接加入到我的交流社群!~跳转链接社区~
|
|