【问题标题】:Python - pandas / openpyxl: Tips on Automating Reports (Moving Away from VBA). [closed]Python - pandas / openpyxl:自动化报告的技巧(远离 VBA)。 [关闭]
【发布时间】:2019-01-01 08:41:50
【问题描述】:
我目前设置了宏来自动化我的所有报告。但是,由于我的数据大小,我的一些宏可能需要 5-10 分钟。
我已经从 Excel/VBA 转向 Python/pandas 来进行数据分析和操作。我仍然使用 excel 进行数据可视化(即数据透视表)。
我想知道其他人如何使用 python 来自动化他们的报告?你们是做什么的?关于如何启动该过程的任何提示?
我的大部分宏执行以下操作 -
- 导入文本文件
- 将原始数据粘贴到链接到数据透视表/图表的表格中。
- 刷新工作簿
- 另存为新的
【问题讨论】:
-
这个问题对于 Stack Overflow 来说非常宽泛,可能最终会因为这个原因而被关闭。您可能想查看openpyxl 之类的内容。看看你能用它走多远,如果你的代码有具体问题,请回来!
标签:
python
excel
vba
pandas
reporting
【解决方案1】:
我经常做数据报告,您可以考虑使用以下工具来帮助您:
- Python / 熊猫
很高兴您已经熟悉 pandas 和 Python。您可以使用以下方法导入对于 Excel 而言太大而无法读取和操作的文本文件:
import pandas as pd
df = pd.read_csv('/path/to/your/text.csv')
# carry out other data analysis like filtering, user-defined functions for special data manipulation etc.
您还可以使用 numpy 进行数据操作和函数。
- 图表的绘制
您可以使用 matplotlib 绘制图表:
import matplotlib.pyplot as plt
ax = df.plot()
# manipulate charts by changing title, series, set intervals etc.
plt.show()
- 将文件导出为新的 Excel 工作簿
由于您使用的是 pandas,您可以使用它的 [to_excel()][1] 函数将您的数据框导出为新的 Excel 工作簿:
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
希望这会有所帮助!
【解决方案2】:
当使用 python 自动生成报告时,我将报告从 Excel 完全转换为 Pandas。我使用 pd.read_csv 或 pd.read_excel 读取数据,并将完全格式化的数据透视表导出到 excel 中以供查看。根据我的经验,python 不能很好地处理“粘贴到表中并刷新”,并且可能仍然需要宏来正确处理,即,从 python 导出带有格式化数据的 csv,然后运行一个简短的宏来复制和粘贴。
如果您有任何更具体的问题,请提出,我已经完成了一些不错的工作
【讨论】:
-
自动化流程应该很容易。使用上述建议。测试您的任何想法,并在 Google 上找到您不理解的解决方案。我正在做你正在做的同样的事情。从一个环境转移到另一个环境只需要一点时间,因为它们完全不同。您认为 Python 比 Excel 快得多是正确的。最后,查看下面的链接,了解如何自动执行 Python 进程。 shahronak47.wordpress.com/2016/11/30/…