python之Excel可视化操作

  • 2019 年 10 月 8 日
  • 筆記

近段时间由于工作中需要对一些数据的整理和可视化显示,故记下使用python操作Excel可视化操作,方便后续查阅。

一、数据导入Excel

Demo:

#!/usr/bin/env python  # -*- coding: utf-8 -*-  # @File Name: python_excel.py  # @Time    : 2019/7/25  # @Author  : zhong  # @Blog    : https://www.jianshu.com/search?q=keitwo&page=1&type=note  # @QQ交流  : 3227456102  import xlsxwriter  # 导入模块  workbook = xlsxwriter.Workbook('7月生活消费.xlsx')  # 新建excel表  worksheet = workbook.add_worksheet('消费表')  # 新建sheet(sheet的名称为"sheet1")  headings = ['Number', '交通费', '伙食费','通讯费']  # 设置表头  data = [      ['2019-7-1', '2019-7-2', '2019-7-3', '2019-7-4', '2019-7-5', '2019-7-6'],      [10, 40, 50, 20, 10, 50],      [30, 60, 70, 50, 40, 30],      [100,50,150,50,100,50],  ]  # 自己造的数据  worksheet.write_row('A1', headings)    worksheet.write_column('A2', data[0])  worksheet.write_column('B2', data[1])  worksheet.write_column('C2', data[2])  # 将数据插入到表格中  worksheet.write_column('C2', data[3])    workbook.close()  # 将excel文件保存关闭,如果没有这一行运行代码会报错

运行结果:

二、给数据添加格式和汇总

Demo:

#!/usr/bin/env python  # -*- coding: utf-8 -*-  # @File Name: python_excel.py  # @Time    : 2019/7/25  # @Author  : zhong  # @Blog    : https://www.jianshu.com/search?q=keitwo&page=1&type=note  # @QQ交流  : 3227456102  # 导入模块  import xlsxwriter  # 新建excel表  workbook = xlsxwriter.Workbook('7月生活消费.xlsx')  # 新建sheet(sheet的名称为"消费表")  worksheet = workbook.add_worksheet('消费表')  # 设置表头  headings = ['Number', '交通费', '伙食费','通讯费']  # 自己造的数据  data = [      ('2019-7-1', '2019-7-2', '2019-7-3', '2019-7-4', '2019-7-5', '2019-7-6'),      (10, 40, 50, 20, 10, 50),      (30, 60, 70, 50, 40, 30),      (100,50,150,50,100,50),  ]    worksheet.write_row('A1', headings)    # 添加全局格式  bold =workbook.add_format({'bold':True})  money = workbook.add_format({'num_format':'$#,##0'})  # 添加表头附带格式  # worksheet.write('B2','交通费',bold)  # worksheet.write('C2','伙食费',bold)  # worksheet.write('D2','通讯费',bold)  # 将数据插入到表格中  worksheet.write_column('A2', data[0])  worksheet.write_column('B2', data[1])  worksheet.write_column('C2', data[2])  worksheet.write_column('D2', data[3])    col = 0  # 添加一列求和计数  worksheet.write(col,4,'总消费',bold)  worksheet.write(col+1,4,'=SUM(B2+C2+D2)',money)  worksheet.write(col+2,4,'=SUM(B3+C3+D3)',money)  worksheet.write(col+3,4,'=SUM(B4+C4+D4)',money)  worksheet.write(col+4,4,'=SUM(B5+C5+D5)',money)  worksheet.write(col+5,4,'=SUM(B6+C6+D6)',money)  worksheet.write(col+6,4,'=SUM(B7+C7+D7)',money)  # 将excel文件保存关闭,如果没有这一行运行代码会报错  workbook.close()

运行结果:

三、可视化图表

线性图标Demo:

#!/usr/bin/env python  # -*- coding: utf-8 -*-  # @File Name: python_excel.py  # @Time    : 2019/7/25  # @Author  : zhong  # @Blog    : https://www.jianshu.com/search?q=keitwo&page=1&type=note  # @QQ交流  : 3227456102  # 导入模块  import xlsxwriter  # 新建excel表  workbook = xlsxwriter.Workbook('7月生活消费.xlsx')  # 新建sheet(sheet的名称为"消费表")  worksheet = workbook.add_worksheet('消费表')  # 设置表头  headings = ['Number', '交通费', '伙食费','通讯费']  # 自己造的数据  data = [      ('7月', '8月', '9月', '10月', '11月', '12月'),      (10, 40, 50, 20, 10, 50),      (30, 60, 70, 50, 40, 30),      (100,50,150,50,100,50),  ]    worksheet.write_row('A1', headings)    # 添加全局格式  bold =workbook.add_format({'bold':True})  money = workbook.add_format({'num_format':'$#,##0'})    worksheet.write_column('A2', data[0])   # 将数据插入到表格中  worksheet.write_column('B2', data[1])  worksheet.write_column('C2', data[2])  worksheet.write_column('D2', data[3])    # --------2、生成图表并插入到excel---------------  # 创建一个柱状图(line chart)  chart_col = workbook.add_chart({'type': 'line'})  # 配置第一个系列数据  chart_col.add_series({      # 我们新建sheet时设置了sheet名,这里就要设置成相应的值      'name': '=消费表!$B$1',      'categories': '=消费表!$A$2:$A$7',      'values':   '=消费表!$B$2:$B$7',      'line': {'color': 'red'},  })  # 配置第二个系列数据  chart_col.add_series({      'name': '=消费表!$C$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$C$2:$C$7',      'line': {'color': 'yellow'},  })  # 配置第二个系列数据(用了另一种语法)  # chart_col.add_series({  #     'name': ['消费表', 0, 2],  #     'categories': ['消费表', 1, 0, 6, 0],  #     'values': ['消费表', 1, 2, 6, 2],  #     'line': {'color': 'yellow'},  # })  # 配置第三个系列数据  chart_col.add_series({      'name': '=消费表!$D$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$D$2:$D$7',      'line': {'color': 'blue'},  })    # 设置图表的title 和 x,y轴信息  chart_col.set_title({'name': '下半年消费情况表'})  chart_col.set_x_axis({'name': '月份'})  chart_col.set_y_axis({'name':  '价格(元)'})    # 设置图表的风格  chart_col.set_style(1)    # 把图表插入到worksheet并设置偏移  worksheet.insert_chart('A10', chart_col, {'x_offset': 25, 'y_offset': 10})  # col = 0  # # 添加一列求和计数  # worksheet.write(col,4,'总消费',bold)  # worksheet.write(col+1,4,'=SUM(B2+C2+D2)',money)  # worksheet.write(col+2,4,'=SUM(B3+C3+D3)',money)  # worksheet.write(col+3,4,'=SUM(B4+C4+D4)',money)  # worksheet.write(col+4,4,'=SUM(B5+C5+D5)',money)  # worksheet.write(col+5,4,'=SUM(B6+C6+D6)',money)  # worksheet.write(col+6,4,'=SUM(B7+C7+D7)',money)  # 将excel文件保存关闭,如果没有这一行运行代码会报错  workbook.close()

运行结果:

柱状图Demo:

只需要更改如下一行代码即可:

# 创建一个柱状图(line chart)  # chart_col = workbook.add_chart({'type': 'line'})  # 创建一个柱状图(column cahrt)  chart_col = workbook.add_chart({'type': 'column'})

运行结果:

柱状图+线性图叠加显示Demo:

#!/usr/bin/env python  # -*- coding: utf-8 -*-  # @File Name: python_excel.py  # @Time    : 2019/7/25  # @Author  : zhong  # @Blog    : https://www.jianshu.com/search?q=keitwo&page=1&type=note  # @QQ交流  : 3227456102  # 导入模块  import xlsxwriter  # 新建excel表  workbook = xlsxwriter.Workbook('7月生活消费.xlsx')  # 新建sheet(sheet的名称为"消费表")  worksheet = workbook.add_worksheet('消费表')  # 设置表头  headings = ['Number', '交通费', '伙食费','通讯费']  # 自己造的数据  data = [      ('7月', '8月', '9月', '10月', '11月', '12月'),      (10, 40, 50, 20, 10, 50),      (30, 60, 70, 50, 40, 30),      (100,50,150,50,100,50),  ]    worksheet.write_row('A1', headings)    # 添加全局格式  bold =workbook.add_format({'bold':True})  money = workbook.add_format({'num_format':'$#,##0'})    worksheet.write_column('A2', data[0])   # 将数据插入到表格中  worksheet.write_column('B2', data[1])  worksheet.write_column('C2', data[2])  worksheet.write_column('D2', data[3])    # --------2、生成图表并插入到excel---------------  # 创建一个柱状图(line chart)  line_chart = workbook.add_chart({'type': 'line'})  # 创建一个柱状图(column cahrt)  #chart_col = workbook.add_chart({'type': 'column'})  # 配置第一个系列数据  line_chart.add_series({      # 我们新建sheet时设置了sheet名,这里就要设置成相应的值      'name': '=消费表!$B$1',      'categories': '=消费表!$A$2:$A$7',      'values':   '=消费表!$B$2:$B$7',      'line': {'color': 'red'},  })  # 配置第二个系列数据  line_chart.add_series({      'name': '=消费表!$C$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$C$2:$C$7',      'line': {'color': 'yellow'},  })  # 配置第二个系列数据(用了另一种语法)  # chart_col.add_series({  #     'name': ['消费表', 0, 2],  #     'categories': ['消费表', 1, 0, 6, 0],  #     'values': ['消费表', 1, 2, 6, 2],  #     'line': {'color': 'yellow'},  # })  # 配置第三个系列数据  line_chart.add_series({      'name': '=消费表!$D$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$D$2:$D$7',      'line': {'color': 'blue'},  })    # 设置图表的title 和 x,y轴信息  line_chart.set_title({'name': '下半年消费情况表'})  line_chart.set_x_axis({'name': '月份'})  line_chart.set_y_axis({'name':  '价格(元)'})    # 设置图表的风格  line_chart.set_style(1)    # 把图表插入到worksheet并设置偏移  # worksheet.insert_chart('A10', line_chart, {'x_offset': 25, 'y_offset': 10})  """------------------------------------------------------柱状图---------------------------------"""  # 创建一个柱状图(column chrt)a  column_chart = workbook.add_chart({'type': 'column'})  # 配置第一个系列数据  column_chart.add_series({      # 我们新建sheet时设置了sheet名,这里就要设置成相应的值      'name': '=消费表!$B$1',      'categories': '=消费表!$A$2:$A$7',      'values':   '=消费表!$B$2:$B$7',      'line': {'color': 'red'},  })  # 配置第二个系列数据  column_chart.add_series({      'name': '=消费表!$C$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$C$2:$C$7',      'line': {'color': 'yellow'},  })  # 配置第二个系列数据(用了另一种语法)  # column_chart.add_series({  #     'name': ['消费表', 0, 2],  #     'categories': ['消费表', 1, 0, 6, 0],  #     'values': ['消费表', 1, 2, 6, 2],  #     'line': {'color': 'yellow'},  # })  # 配置第三个系列数据  column_chart.add_series({      'name': '=消费表!$D$1',      'categories':  '=消费表!$A$2:$A$7',      'values':   '=消费表!$D$2:$D$7',      'line': {'color': 'blue'},  })    # 设置图表的title 和 x,y轴信息  column_chart.set_title({'name': '下半年消费情况表'})  column_chart.set_x_axis({'name': '月份'})  column_chart.set_y_axis({'name':  '价格(元)'})    # 设置图表的风格  column_chart.set_style(1)    # 把图表插入到worksheet并设置偏移  worksheet.insert_chart('A10', column_chart, {'x_offset': 25, 'y_offset': 10})    # 柱状图和线性图叠加一起显示  column_chart.combine(line_chart)  # col = 0  # # 添加一列求和计数  # worksheet.write(col,4,'总消费',bold)  # worksheet.write(col+1,4,'=SUM(B2+C2+D2)',money)  # worksheet.write(col+2,4,'=SUM(B3+C3+D3)',money)  # worksheet.write(col+3,4,'=SUM(B4+C4+D4)',money)  # worksheet.write(col+4,4,'=SUM(B5+C5+D5)',money)  # worksheet.write(col+5,4,'=SUM(B6+C6+D6)',money)  # worksheet.write(col+6,4,'=SUM(B7+C7+D7)',money)  # 将excel文件保存关闭,如果没有这一行运行代码会报错  workbook.close()

运行结果:

资料:xlsxwrite其他图标制作示例见

  • https://pandas-xlsxwriter-charts.readthedocs.io/chart_examples.html
  • https://www.cnblogs.com/lizm166/p/9449261.html