Python数据分析

Python数据分析 知识量:13 - 56 - 232

12.1 保存为Excel文件><

设置导出路径- 12.1.1 -

通过Python进行数据分析的结果经常需要保存到Excel格式的文件中,可以使用DataFrame对象的to_excel()函数来实现。

首先就是设置导出的路径,也就是指明导出文件保存到哪里。通过参数excel_writer来设置。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx")

运行结果为:

       Name     Sex  Age  Chinese  English  Math
0      Noah    male   15       90       50    66
1      Emma  female   16       56       56    55
2       Bob    male   15       99       84    89
3    Olivia  female   17       86       87    44
4      Jeff    male   16       48       87    65
5      Liam    male   14       55       88    69
6    Sophia  female   15       90       66    96
7  Isabella  female   16       66       85    55

结果将保存到文件save_excel.xlsx,其内容如下:

lujing.png

注意:如果多次运行该段程序,新的文件会直接覆盖旧文件。但如果导出的文件处于打开状态,再运行时会出错,必须关闭文件后再运行。

设置Sheet名称- 12.1.2 -

Excel文件通常会有多个Sheet,默认的名称是Sheet加数字的形式,例如:Sheet1、Sheet2等。在导出文件时,可以通过参数sheet_name来设置一个其他名称。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx",sheet_name='save')

运行后,导出的Excel文件第一个sheet的名称将变为save。

设置索引- 12.1.3 -

默认导出的Excel文件会在第一列增加一个索引列,从0开始计数,实际上这是没有什么意义的。可以通过将参数index设为False,去除索引列。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx",sheet_name='save',index=False)

运行后,Excel文件的内容如下:

index.png

选择要导出的列- 12.1.4 -

数据分析的结果并非全部都需要导出到文件,可以选择要导出的列。通过参数columns来指定导出列即可。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx",sheet_name='save',index=False,
            columns=['Name','Age','English'])

运行结果为:

       Name     Sex  Age  Chinese  English  Math
0      Noah    male   15       90       50    66
1      Emma  female   16       56       56    55
2       Bob    male   15       99       84    89
3    Olivia  female   17       86       87    44
4      Jeff    male   16       48       87    65
5      Liam    male   14       55       88    69
6    Sophia  female   15       90       66    96
7  Isabella  female   16       66       85    55

运行后,Excel文件的内容如下:

part.png

设置编码格式- 12.1.5 -

有时需要设置正确的编码格式才能导出准确可读的数据,通过参数encoding来实现。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_new.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx",
            sheet_name='save',
            index=False,
            columns=['Name','Age','English'],
            encoding='utf-8')

运行结果会与预料的一样。

处理缺失值- 12.1.6 -

对于缺失值,在导出时可以通过参数na_rep来进行填充设置。

import pandas as pd
df=pd.read_excel(r"D:\PythonTestFile\exam_nan.xlsx")
print(df)
df.to_excel(excel_writer=r"D:\PythonTestFile\save_excel.xlsx",
            sheet_name='save',
            index=False,
            encoding='utf-8',
            na_rep=0)

运行结果为:

       Name     Sex  Chinese  English  Math
0      Noah    male     90.0     50.0  66.0
1      Emma     NaN     56.0     56.0  55.0
2       NaN     NaN      NaN      NaN   NaN
3    Olivia  female     86.0     87.0   NaN
4      Liam    male     55.0      NaN  69.0
5    Sophia  female     90.0     66.0  96.0
6      Liam    male     55.0      NaN  69.0
7  Isabella  female      NaN     85.0  55.0

运行后,Excel文件的内容如下:

nan.png

处理无穷值- 12.1.7 -

Python中,无穷值使用inf来表示,分为正无穷(inf)和负无穷(-inf)。在导出数据时,可以使用参数inf_rep来填充无穷值,操作方法与处理缺失值一样。

导出到多个Sheet- 12.1.8 -

对于多个结果,可以分别将它们导出到不同的Excel文件,也可以导出到同一个Excel文件的不同Sheet中。对于第2种情况,可以通过Pandas的ExcelWriter对象来实现。注意:创建ExcelWriter对象时,如果参数engine选择使用xlsxwriter模块时,需要先安装该模块。

import pandas as pd
df1=pd.read_excel(r"D:\PythonTestFile\pinjie1.xlsx")
df2=pd.read_excel(r"D:\PythonTestFile\pinjie2.xlsx")
print(df1,'\n')
print(df2)
writer=pd.ExcelWriter(r"D:\PythonTestFile\save_excel.xlsx",engine='xlsxwriter')
df1.to_excel(writer,sheet_name='data1')  # 将df1写入sheet1
df2.to_excel(writer,sheet_name='data2')  # 将df2写入sheet2
writer.save()  # 保存读写的内容

运行结果为:

     Name     Sex  Age  Chinese  English  Math
0    Noah    male   15       90       50    66
1    Emma  female   16       56       56    55
2     Bob    male   15       99       84    89
3  Olivia  female   17       86       87    44 

       Name     Sex  Age  Chinese  English  Math
0      Jeff    male   16       48       87    65
1       Bob    male   15       99       84    89
2    Olivia  female   17       86       87    44
3  Isabella  female   16       66       85    55

运行后,Excel文件的内容如下:

sheet.png