pandas是一款功能很强大的python模块,可以直接将数据输出到excel文件。
writer = pd.ExcelWriter('test.xlsx')
test.to_excel(writer,sheet_name='test')
writer.save()
对于excel文件数据的输出,首先需要打开一个excel编辑器writer,然后在不同的sheet写入数据,此时写出的数据格式是默认的参数,不同的软件显示也会有差异,以下是我运行之后的输出结果,header自动加粗,添加边框,居中对齐,内容为常规字体,右对齐。
pd_excel_direct_output对于默认的输出格式,在某些情况下并不能很好的展示数据,不同类型的数据所在位置、对齐方式都有很大差别。格式化输出能让我们更好的展示数据,文件的可读性更高,为了实现这个目的,我们可以在数据输出的时候指定需要展示的格式。
1. 输出内容后修改格式
这部分主要是先将数据输出到文件,然后修改数据的格式。
# 写入数据
test = pd.read_excel('test.xlsx')
writer = pd.ExcelWriter('pandas_excel.xlsx',engine='xlsxwriter')
test.to_excel(writer,sheet_name='test',index=False)
# 创建处理对象,指定数据所在的sheet
workbook = writer.book
worksheet = writer.sheets['test']
# 格式1
header_format = workbook.add_format({'bold':True,'font_color':'red','font_size':20,'align':'center'})
header_format.set_align('vcenter')
# 格式2
rank_format = workbook.add_format({'font_color': 'black','border':2,'align':'left'})
rank_format.set_bg_color('green')
# 格式3
age_format = workbook.add_format({'bold':True,'font_color':'brown','font_size':15,'italic':True,'align':'right'})`
# 格式4
sex_format = workbook.add_format({'font_color': 'green','underline':1,'align':'center'})
# 第2行整行格式修改
worksheet.set_row(1,50,header_format)
# A列格式修改
worksheet.set_column('A3:A6',20, rank_format)
# B列格式修改
worksheet.set_column('B3:B6',5,sex_format)
# C列格式修改
worksheet.set_column('C3:C6',30,age_format)`
# 第2行整行格式修改
worksheet.set_row(1,50,header_format)
# A列格式修改
worksheet.set_column('A3:A6',20, rank_format)
# B列格式修改
worksheet.set_column('B3:B6',5,sex_format)
# C列格式修改
worksheet.set_column('C3:C6',30,age_format)`
首先将数据写入到pandas_excel.xlsx文件中,然后通过add_formate设定显示格式,最后以行列为单位进行格式修改,修改之后效果图如下。
pandas_string_modify_whole_row_column各行/列格式说明如下。
第2行:行高50,字体红色,加粗,字号20,中部居中;
第1列:字体黑色,列宽20,加边框,左对齐,绿色填充;
第2列:字体绿色,添加下划线,列宽5,水平居中;
第3列:字体棕色,倾斜,字号15,列宽30,右对齐。
2. 直接格式化输出
已经输出的数据可以按照上述方法进行设置,若数据还没有输出,可以在输出的同时指定格式。
# 创建新sheet
worksheet1 = workbook.add_worksheet('test1')
# 输出表头
for col_num, value in enumerate(test.columns.values):
worksheet1.write(0, col_num, value, header_format)
# 输出正文内容
for index, value in test.iterrows():
for i in range(len(test.columns)):
worksheet1.write(index+1, i, value[i],sex_format)
在新建的test1-sheet中直接写入格式化的文本,结果见下图。
pandas_excel_string_out_directly以上就是格式化文本输出到excel的简要介绍,除了文本格式输出,还可以对数据显示方式,比如日期、百分比等进行设置,还可以进行图表的绘制和插入图片等,具体的方法可参照参考文章。
3. 参考文章
[1] https://xlsxwriter.readthedocs.io/working_with_pandas.html
[2] https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#writing-excel-files
网友评论