第12章 结果导出
12.1 导出为.xlsx文件
- 在Python中将文件导出为.xlsx格式,用到的是df.to_excel()方法,接下来的几个小节具体讲解to_excel()方法。
12.1.1 设置文件导出路径
- 设置文件导出路径就是告诉Python要将这个文件导出到电脑的哪个文件夹里,且导出以后这个文件叫什么。通过调整参数excel_writer的值即可实现。
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx")
- 需要注意的是,如果同一导出文件已经在本地打开,则不能再次运行导出代码,会报错,需要将本地文件关闭以后再次运行导出代码。这有点类似于在本地修改文件名的操作,如果文件是打开的,即被占用的状态,那么不可以执行修改文件的操作。
12.1.2 设置Sheet名称
- .xlsx格式的文件有多个Sheet,Sheet的默认命名方式是Sheet后加阿拉伯数字,通常从 Sheet1往上递增,我们也可以对默认的 Sheet 名字进行修改,只要修改sheet_name参数即可
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx",sheet_name = "测试")
- 运行上面代码以后,导出到本地文件的Sheet名字将从原来的Sheet1变成测试文档。
12.1.3 设置索引
- 上面导出文件中关于索引的参数都是默认的,也就是没有对索引做什么限制,但是我们可以看到index索引使用的是从0开始的默认自然数索引,这种索引是没有意义的,设置参数index=False就可以在导出时把这种索引去掉
12.1.4 设置要导出的列
- 有的时候一个表的列数很多,我们并不需要把所有的列都导出,这个时候就可以通过设置columns参数来指定要导出的列,这和导入时设置只导入部分列的原理类似
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx",sheet_name = "测试",index = False,
columns = ["用户id","7月销量","8月销量","9月销量"])
12.1.5 设置编码格式
- 我们在导入文件时需要设置编码格式,导出文件的时候同样也需要,修改编码格式的参数与导入文件时的一致,也使用的encoding,encoding参数值一般选择"utf-8"。
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx",sheet_name = "测试",index = False,
encoding = "utf-8")
12.1.6 缺失值处理
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx",sheet_name = "测试",index = False,
na_rep = 0)
12.1.7 无穷值处理
- 无穷值(inf)与缺失值(Nan)都是异常数据,当你用一个浮点数除以0时,就会得到一个无穷值,无穷值的存在会导致接下来的计算报错,所以需要对无穷值进行处理。
df.to_excel(excel_writer = r"D:\PythonFlie\测试文档excel.xlsx",sheet_name = "测试",index = False,
na_rep = 0,
inf_rep = 0)
12.2 导出为.csv文件
- 在Python中,将文件导出为.csv文件使用的是to_csv方法,接下来的几个小节具体讲解to_csv方法的一些参数。
12.2.1 设置文件导出路径
- 设置.csv 文件的导出路径时,与设置.xlsx 文件的导出路径一样,但是参数不一样,.csv文件的导出路径需通过path_or_buf参数来设置。
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv")
12.2.2 设置索引
- 导出.csv 文件时与导出.xlsx 文件时对索引的设置是一致的,可以通过设置 index参数,让从0开始的默认自然数索引不展示出来。
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv",index = False)
12.2.3 设置要导出的列
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv",index = False,
columns = ["用户id","7月销量","8月销量","9月销量"])
12.2.4 设置分隔符号
- 分隔符号就是用来指明导出文件中的字符之间是用什么来分隔的,默认使用逗号分隔,常用的分隔符号还有空格、制表符、分号等。用参数sep来指明要用的分隔符号。
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv",index = False,
columns = ["用户id","7月销量","8月销量","9月销量"],
sep = ",")
12.2.5 缺失值处理
- 导出.csv文件时用的缺失值处理方法与导出.xlsx文件时用的缺失值处理方法是一样的,也是通过参数na_rep来指明要用什么填充缺失值。
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv",index = False,
columns = ["用户id","7月销量","8月销量","9月销量"],
sep = ",",
na_rep = 0)
12.2.6 设置编码格式
- 在Python 3中,导出为.csv文件时,默认编码为UTF-8,如果使用默认的UTF-8编码格式,导出的文件在本地电脑打开以后中文会乱码,所以一般使用utf-8-sig或者
df.to_csv( path_or_buf = r"D:\PythonFlie\测试文档excel.csv",index = False,
columns = ["用户id","7月销量","8月销量","9月销量"],
sep = ",",
na_rep = 0,
encoding = "utf-8-sig")
12.3 将文件导出到多个Sheet
- 有的时候一个脚本一次会生成多个文件,可以将多个文件分别导出成多个文件,也可以将多个文件放在一个文件的不同 Sheet 中,这个时候要用 ExcelWriter()函数将多个文件分别导出到不同Sheet中
writer = pd.ExcelWriter(r"D:\PythonFlie\测试文档excel.xlsx",engine = "xlsxwriter")
df.to_excel(writer,sheet_name = "表1")
df1.to_excel(writer,sheet_name = "表2")
df2.to_excel(writer,sheet_name = "表3")
writer.save()