xlsxwriter

Python笔记:把结果导出到同一个工作簿里的不同工作表中

百般思念 提交于 2020-08-10 01:36:18
有时候,我们在用Python处理数据后会产生多个结果(主要是DataFrame)。这时,我们可以根据自己的实际需求,把各个结果导出到不同的工作簿中,或者 把多个结果导出到同一个工作簿的不同工作表中 。面对这种需求,我们可以使用 ExcelWriter()函数 把多个结果导出到同一个工作簿的不同工作表中。具体思路如下: # 先加载数据 import pandas as pd df = pd.read_excel(r"C:\Users\QDM\Desktop\Python\1.xlsx") df # 聚合求和 df1 = df.groupby(["商品"])["销量"].sum() df1 # 聚合计数 df2 = df.groupby(["商品"])["销量"].count() df2 # 聚合求最大值 df3 = df.groupby(["商品"])["销量"].max() df3 # 声明一个读写对象 # Excelpath 为文件要存储的路径 writer = pd.ExcelWriter(r"C:\Users\QDM\Desktop\Python\excel.xlsx", engine = "xlsxwriter") # 分别将表df1,df2,df3写入到Excel工作簿中的Sheet1,Sheet2,Sheet3中 # 并命名为“一表”、“二表”、“三表” df1.to

Python 读写excel Part1

醉酒当歌 提交于 2020-08-07 15:02:04
背景 有很多朋友对Python处理excel很感兴趣,虽然我不是这方面的专家,如果用C# openxl 是分分钟搞定的事情,再次点用Npoi也行,Python则完全陌生。 目标 既然以学习为目标去完成这件事,那么就不必太复杂(复杂我也做不来),就假设我们是在做销售系统吧。如果不专业请轻喷。 一份Excel的产品单,一份客户单,一份订单,字段简单点。 从头开始生成 一,工具 既然使用Python,当然要介绍一下工具库: 主要有openpyxl、xlwt、xlrd、Pandas(这是真的可以)、xlsxwriter 先来分析对比一波 1、Openpyxl 优势:快速、高效地读写Excel,可控制大部分Excel元素,并且写入时可以贴入公式 劣势:对初学者非常不友好,属性超级多,并且按xml格式控制;再来样式只能定义一次,修改样式就得先复制一份再重新构造,工作量几何级上升 2、xlsxwriter 专门用于写数据的方法 优势:快速,可控制大部分样式,公式只能以字符串处理,写数据以xy定位或单元格命名为主 劣势:没有毒没有毒没有毒,所以,千万别用同一份excel文档进行处理(我就吃了这个亏,好好几十万条记录被清洗一空),暂时不知道怎么追加到原文档后添加新sheet 3、xlrd、xlwt 可读写的excel库 优势:基本上用来读excel数据,非常精准、数据类型清晰 劣势:写明显很慢

用Python3生成30万条excel数据(xlsx格式)

末鹿安然 提交于 2020-08-07 13:11:14
在B/S架构的系统测试中,有时需要通过导入excel文件来生成一些数据记录,当数据量小的时候,一般不会出现什么问题,而当导入的数据量巨大时,对系统的性能就是一个考验了。为了验证系统的性能,有时需要导入海量的数据,如30万条数据记录,而手头并没有这么多数据时该怎么办呢?一条一条复制粘贴,或者通过excel的下拉拖动来生成记录?这样会把测试人员累死,而且单调重复的工作,非常无趣。这时,我们只需借助python,便可以轻松生成大量数据,把人从单调重复的工作中解放出来,去做更有意义的事。 例如,我们需要生成如下的数据。 这是一条用户信息的示例数据,其中包含几种编号、姓名、性别、爱好、最喜欢的电影、音乐等信息,而其中只需校验A、I、L这三列的不同编号。其他数据在性能测试中不是很关心,那么我们可以利用规则生成一些数据,其中仅A、I、L三列不同,其他信息保持不变。 思路:先将表头和示例数据保存在一个示例文件中,通过xlrd来读取示例内容,通过xlsxwriter来按规则写入表头和不同的信息。 话不多说,我们直接上代码: 1 import xlrd 2 import xlsxwriter 3 # 文件名以及路径,前面加一个r防止生成不必要的转义。 4 filename=r ' D:\001\example.xlsx ' 5 data = xlrd.open_workbook(filename) 6

Writing multiple pandas dataframes to multiple excel worksheets

百般思念 提交于 2020-08-04 18:31:05
问题 I'd like for the code to run 12345 thru the loop, input it in a worksheet, then start on 54321 and do the same thing except input the dataframe into a new worksheet but in the same workbook. Below is my code. workbook = xlsxwriter.Workbook('Renewals.xlsx') groups = ['12345', '54321'] for x in groups: (Do a bunch of data manipulation and get pandas df called renewals) writer = pd.ExcelWriter('Renewals.xlsx', engine='xlsxwriter') worksheet = workbook.add_worksheet(str(x)) renewals.to_excel

XLSXWriter and Excel “=FILTER()” Function?

≯℡__Kan透↙ 提交于 2020-05-30 15:18:54
问题 I'm successfully creating many Excel workbooks using XLSXWriter. Now I'm trying to place one of Excel's new (as of 2019) FILTER functions into a cell: =FILTER(A19:B90,B19:B90=E19) When I open the workbook, Excel gives me this error dialog: The workbook opens, but a "0" is in the cell instead of the FILTER function. But if I paste the exact same filter function into the same cell manually, it works! All the other formulas I'm creating work as expected, and if I use XLSXWriter to place a

XLSXWriter and Excel “=FILTER()” Function?

早过忘川 提交于 2020-05-30 15:18:50
问题 I'm successfully creating many Excel workbooks using XLSXWriter. Now I'm trying to place one of Excel's new (as of 2019) FILTER functions into a cell: =FILTER(A19:B90,B19:B90=E19) When I open the workbook, Excel gives me this error dialog: The workbook opens, but a "0" is in the cell instead of the FILTER function. But if I paste the exact same filter function into the same cell manually, it works! All the other formulas I'm creating work as expected, and if I use XLSXWriter to place a

XLSXWriter and Excel “=FILTER()” Function?

|▌冷眼眸甩不掉的悲伤 提交于 2020-05-30 15:16:44
问题 I'm successfully creating many Excel workbooks using XLSXWriter. Now I'm trying to place one of Excel's new (as of 2019) FILTER functions into a cell: =FILTER(A19:B90,B19:B90=E19) When I open the workbook, Excel gives me this error dialog: The workbook opens, but a "0" is in the cell instead of the FILTER function. But if I paste the exact same filter function into the same cell manually, it works! All the other formulas I'm creating work as expected, and if I use XLSXWriter to place a

使用python合并excel

て烟熏妆下的殇ゞ 提交于 2020-05-05 01:48:41
当工作碰到需要将几个excel合并时,比如一个表,收集每个人的个人信息,陆续收回来就是十几张甚至几十张表,少了还好解决,但是很多的话就不能一个一个去复制了,这时候就想到了python,Python大法好啊。短短100行代码解决,无论几十张,几百张表,瞬间搞定。 首先需要安装两个模块:xlrd(读取excel),xlsxwriter(写入excel) pip install xlrd pip install xlsxwriter 安装好以后,直接上代码。如下: 1 # -*- coding: UTF-8 -*- 2 # Filename : Merge_excel.py 3 # author by : Awrrays 4 5 import xlrd,xlsxwriter 6 7 # 打开表格 8 def openxls(file): 9 try : 10 fx = xlrd.open_workbook(file) 11 return fx 12 except Exception as e: 13 print ( ' 读取文件错误,错误为:{0} ' .format(e)) 14 15 # 获取所有sheet 16 def getsheets(fx): 17 return fx.sheets() 18 19 # 获取某个sheet的行数 20 def getrows(fx,sheet

一次、二次、三次指数平滑计算思想及代码

别来无恙 提交于 2020-05-03 14:40:05
一般常用到的指数平滑法为一次指数平滑、二次指数平滑和三次指数平滑,高次指数平滑一般比较难见到,因此本文着重介绍了一次、二次和三次指数平滑的特点与不同。 一次指数平滑一般应用于直线型数据,且一次指数平滑具有滞后性,可以说明有明显的时间性、季节性。 二次指数平滑一般也应用于直线型,但是效果会比一次指数平滑好很多,也就相当于加强版的一次指数平滑。 三次指数平滑可以应用于抛物线型的数据,因为数据在二次平滑过后还是具有斜率,那么可以继续使用三次指数平滑。 初值:不管什么指数平滑都会有个初值,假如数据大于20项,那么初值就可以认定为第一个数据,或者利用下列公式计算也行;假如数据小于20项,则初始值为: 低于20项 一般取3,大于20的看着取就行了。 一次指数平滑: 一次指数平滑需要滞后一期,给定平滑系数 ,那么一次指数平滑的计算公式为: 预测第 期的数值则是上一期的实际值与预测值的加权平均,预测公式为: 二次指数平滑: 给定平滑系数 ,那么二次指数平滑的计算公式为: 预测未来 期的值 的计算公式为: 其中: 三次指数平滑: 给定平滑系数 ,那么三次指数平滑的计算公式为: 预测未来 期的值 的计算公式为: 其中: 下面举例说明,数据如下: 253993 275396.2 315229.5 356949.6 400158.2 442431.7 495102.9 570164.8 640993.1

一次、二次、三次指数平滑计算思想及代码

倾然丶 夕夏残阳落幕 提交于 2020-04-19 23:02:22
一般常用到的指数平滑法为一次指数平滑、二次指数平滑和三次指数平滑,高次指数平滑一般比较难见到,因此本文着重介绍了一次、二次和三次指数平滑的特点与不同。 一次指数平滑一般应用于直线型数据,且一次指数平滑具有滞后性,可以说明有明显的时间性、季节性。 二次指数平滑一般也应用于直线型,但是效果会比一次指数平滑好很多,也就相当于加强版的一次指数平滑。 三次指数平滑可以应用于抛物线型的数据,因为数据在二次平滑过后还是具有斜率,那么可以继续使用三次指数平滑。 初值:不管什么指数平滑都会有个初值,假如数据大于20项,那么初值就可以认定为第一个数据,或者利用下列公式计算也行;假如数据小于20项,则初始值为: 低于20项 一般取3,大于20的看着取就行了。 一次指数平滑: 一次指数平滑需要滞后一期,给定平滑系数 ,那么一次指数平滑的计算公式为: 预测第 期的数值则是上一期的实际值与预测值的加权平均,预测公式为: 二次指数平滑: 给定平滑系数 ,那么二次指数平滑的计算公式为: 预测未来 期的值 的计算公式为: 其中: 三次指数平滑: 给定平滑系数 ,那么三次指数平滑的计算公式为: 预测未来 期的值 的计算公式为: 其中: 下面举例说明,数据如下: 253993 275396.2 315229.5 356949.6 400158.2 442431.7 495102.9 570164.8 640993.1