当前位置:首页 » 《随便一记》 » 正文

100天精通Python(数据分析篇)——第57天:Pandas读写Excel(read_excel、to_excel)

10 人参与  2022年10月12日 08:56  分类 : 《随便一记》  评论

点击全文阅读


在这里插入图片描述

文章目录

每篇前言二、Excel文件1. read_excel()iosheet_nameheadernamesindex_colusecolssqueezeskiprows 2. to_excel()excel_writersheet_namena_repindexcolumns 二、书籍推荐

每篇前言

??作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6

??本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》?​?​此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣??订阅专栏后续可以阅读Python从入门到就业100篇文章还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。??加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!

在这里插入图片描述
在这里插入图片描述

二、Excel文件

包括xls和xlsx两种格式均得到支持,底层是调用了xlwt和xlrd进行excel文件操作,相应接口为read_excel()和to_excel()

1. read_excel()

格式代码

pandas.read_excel(io,               sheet_name=0,               header=0,               names=None,               index_col=None,               parse_cols=None,               usecols=None,               squeeze=False,               dtype=None,               engine=None,               converters=None,               true_values=None,               false_values=None,               skiprows=None,               nrows=None,               na_values=None,               keep_default_na=True,               na_filter=True,               verbose=False,               parse_dates=False,               date_parser=None,               thousands=None,               comment=None,               skip_footer=0,               skipfooter=0,               convert_float=True,               mangle_dupe_cols=True,               **kwds)

常用参数

io:文件路径

sheet_name:默认是sheetname为0(第一个sheet表);sheet_name=“Sheet1”(指定表名);返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。

header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None

names:指定列的名字,传入一个list数据

index_col:指定列为索引列,默认None列(0索引)用作DataFrame的行标签。

usecols:该参数为返回指定的列。int或list,默认为None。

如果为None则解析所有列
如果为int则表示要解析的最后一列
如果为int列表则表示要解析的列号列表
如果字符串则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方

squeeze:boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。

dtype:列的类型名称或字典,默认为None,也就是不改变数据类型。其作用是指定列的数据类型。

io

指定文件路径

>>> import pandas as pd>>>>>> df = pd.read_excel(r'E:\Python学习\test.xls')>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女

sheet_name

默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframe。

>>> import pandas as pd>>>>>> # 一、默认情况>>> df = pd.read_excel(r'E:\Python学习\test.xls')>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>>>>> # 二、指定第一个sheet表格>>> # 1. 索引方式>>> df = pd.read_excel(r'E:\Python学习\test.xls', sheet_name=0)>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>> # 2. sheet表名方式指定第一个>>> df = pd.read_excel(r'E:\Python学习\test.xls', sheet_name='Sheet1')>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>>>>> # 三、指定多个表格>>> df = pd.read_excel(r'E:\Python学习\test.xls', sheet_name=[0, 1])>>> print(df){0:    姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女, 1:    学科   成绩0  语文  1001  数学   902  英语   80}>>>>>> # 三、返回全表>>> # 1. sheetname=None>>> df = pd.read_excel(r'E:\Python学习\test.xls', sheet_name=None)>>> print(df){'Sheet1':    姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女, 'Sheet2':    学科   成绩0  语文  1001  数学   902  英语   80}>>> # 2. 指定多表时选择全部>>> df = pd.read_excel(r'E:\Python学习\test.xls', sheet_name=[0, 1])>>> print(df){0:    姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女, 1:    学科   成绩0  语文  1001  数学   902  英语   80}

header

指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None

>>> import pandas as pd>>>>>> # 一、默认第一行数据作为列名>>> df = pd.read_excel(r'E:\Python学习\test.xls')>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>> df = pd.read_excel(r'E:\Python学习\test.xls', header=0)>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>>>>> # 二、数据不含作为列名的行>>> df = pd.read_excel(r'E:\Python学习\test.xls', header=None)>>> print(df)    0   1   20  姓名  年龄  性别1  小白  20   男2  小黑  21   男3  小红  20   女

names

指定列的名字,传入一个list数据

>>> import pandas as pd>>>>>> 设置列名为A、B、C>>> df = pd.read_excel(r'E:\Python学习\test.xls', names=['A', 'B', 'C'])>>> print(df)    A   B  C0  小白  20  男1  小黑  21  男2  小红  20  女

index_col

指定列为索引列,默认None列(0索引)用作DataFrame的行标签。

>>> import pandas as pd>>>>>>> # 设置第一列为行索引>>> df = pd.read_excel(r'E:\Python学习\test.xls', index_col=0)>>> print(df)    年龄 性别姓名小白  20  男小黑  21  男小红  20  女

usecols

该参数为返回指定的列。int或list,默认为None。如果为None则解析所有列,如果为int则表示要解析的最后一列,如果为int列表则表示要解析的列号列表,如果字符串则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方

>>> import pandas as pd>>>>>> # 一、传入字符串>>> # 1. 指定不连续列>>> df = pd.read_excel(r'E:\Python学习\test.xls', usecols="A,C")>>> print(df)   姓名 性别0  小白  男1  小黑  男2  小红  女>>> # 2. 指定A、B、C列>>> df = pd.read_excel(r'E:\Python学习\test.xls', usecols="A,B:C")>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>>>>> # 二、传入列表>>> # 1. 索引方式>>> df = pd.read_excel(r'E:\Python学习\test.xls', usecols=[0, 1, 2])>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女>>> # 2. 表头方式>>> df = pd.read_excel(r'E:\Python学习\test.xls', usecols=['姓名', '年龄', '性别'])>>> print(df)   姓名  年龄 性别0  小白  20  男1  小黑  21  男2  小红  20  女

squeeze

默认为False,如果解析的数据只包含一列,True则返回一个Series。

>>> import pandas as pd>>>>>> # 只读取第一列,设置为Series>>> df = pd.read_excel(r'E:\Python学习\test.xls', usecols="A",squeeze=True)>>> print(df)0    小白1    小黑2    小红Name: 姓名, dtype: object>>> print(type(df))<class 'pandas.core.series.Series'>

skiprows

省略开头指定行数的数据

>>> import pandas as pd>>>>>> # 跳过第一行数据>>> df = pd.read_excel(r'E:\Python学习\test.xls', skiprows=1)>>> print(df)   小白  20  男0  小黑  21  男1  小红  20  女>>> print(type(df))<class 'pandas.core.frame.DataFrame'>

2. to_excel()

语法格式

pandas.to_excel(self,                 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)

常用参数

excel_writer : 字符串或ExcelWriter 对象,文件路径或现有的ExcelWritersheet_name :字符串,默认“Sheet1”,将包含DataFrame的表的名称。na_rep : 字符串,默认‘ ’,缺失数据表示方式float_format : 字符串,默认None,格式化浮点数的字符串columns : 序列,可选,要编写的列header : 布尔或字符串列表,默认为Ture。写出列名。如果给定字符串列表,则假定它是列名称的别名。index :布尔,默认的Ture,写行名(索引)index_label : 字符串或序列,默认为None。如果需要,可以使用索引列的列标签。如果没有给出,标题和索引为true,则使用索引名称。如果数据文件使用多索引,则需使用序列。

excel_writer

指定文件路径

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0# 写入指定路径下>>> df.to_excel(r'E:\Python学习\test1.xlsx')

在指定路径下文件新文件:
在这里插入图片描述

sheet_name

指定sheet表名,可以接受字符串,默认为“sheet1”

1)写入单个sheet:

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0# 设置sheet表名为test>>> df.to_excel(r'E:\Python学习\test1.xlsx', sheet_name='test')

运行结果:
在这里插入图片描述
2)写入多个sheet表:

>>> import pandas as pd>>>>>> df1 = pd.DataFrame([{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}])>>> df2 = pd.DataFrame([{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}])>>>>>> with pd.ExcelWriter(r'E:\Python学习\test.xlsx') as writer:...     df1.to_excel(writer, sheet_name='test1')...     df2.to_excel(writer, sheet_name='test2')

运行结果:
在这里插入图片描述

na_rep

表示替补缺失数据,不写默认为空

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0# 把空值替换为100>>> df.to_excel(r'E:\Python学习\test.xlsx', na_rep='100')

运行结果:
在这里插入图片描述

index

表示是否写行索引,默认为True

1)不写入行索引:

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0>>> df.to_excel(r'E:\Python学习\test.xlsx', index=False)

运行结果:
在这里插入图片描述

2)写入行索引:

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0>>> df.to_excel(r'E:\Python学习\test.xlsx', index=True)

运行结果:
在这里插入图片描述

columns

指定要写入的列

>>> import pandas as pd>>>>>> data = [{'A': 1, 'B': 2}, {'A': 3, 'B': 4, 'C': 5}]>>> df = pd.DataFrame(data)>>> print(df)   A  B    C0  1  2  NaN1  3  4  5.0# 只写入A、B列>>> df.to_excel(r'E:\Python学习\test.xlsx', columns=['A','B'])

运行结果:
在这里插入图片描述

二、书籍推荐

书籍展示:《元宇宙:图说元宇宙、设计元宇宙(全两册)》

在这里插入图片描述


【书籍内容简介】

世间可曾存在着这样一个时空?那里高度自由,不会受到任何来自外界的干涉和干扰;那里无限可能,可凭个人喜好随性创造……
有的,就叫“元宇宙”!
元宇宙,可以满足不同人不同的期许,可以实现不同人不同的梦想,甚至可以容下世间所有截然不同的存在!心动吗?别急,在此之前,我们需要先明白“什么是元宇宙”,以及,“如何架构属于自己的元宇宙”——
北京大学出版社联合文津图书奖得主、全国十大科普教育平台“量子学派”与中国科学院院士,共同推出《元宇宙:图说元宇宙、设计元宇宙(全两册)》一书,不仅用场景化的叙事艺术带你轻松入门元宇宙,更有320幅手绘插图、十一维元宇宙关系图谱和大拉页版“2140世界设定”,助你直观地了解并且亲手架构独一无二的元宇宙!
元宇宙时代已缓缓开启,做好准备就启程吧!
京东自营:https://item.jd.com/13577756.html

点击全文阅读


本文链接:http://zhangshiyu.com/post/45241.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1