gpt4 book ai didi

python - xlsxwriter 图表类别文件大小

转载 作者:行者123 更新时间:2023-12-01 08:30:01 24 4
gpt4 key购买 nike

以下代码采用 CSV 作为输入并输出包含条形图的 XLSX:

import pandas
import sys
import openpyxl
from openpyxl.chart import BarChart, Reference

# ---- Data preparation ----
path = sys.argv[1]
df = pandas.read_csv(path, sep = "\t")
df = df[pandas.notnull(df['response_time'])]
df.loc[:, "datetime"].replace(to_replace = r"(.*T)", value = r"", inplace = True, regex = True)
df = pandas.pivot(df.datetime, df.name + '-' + df.type, df.response_time)

# ---- Prepare writer, workbook and worksheet ----
writer = pandas.ExcelWriter("test.xlsx", engine = 'xlsxwriter')
df.to_excel(writer, sheet_name = "graph")
workbook = writer.book
worksheet = writer.sheets["graph"]

# ---- USING OPENPYXL ----
chart1 = BarChart()
chart1.x_axis_title = "DateTime"
chart1.x_axis_title = "Response time"
data = Reference(workbook.active, min_col = 2, min_row = 1, max_col = len(df.columns) + 1, max_row = workbook.active.max_row)
xval = Reference(workbook.active, min_col = 1, min_row = 2, max_row = workbook.active.max_row)
chart1.add_data(data, titles_from_data = True)
chart1.set_categories(xval)
workbook.active.add_chart(chart1, "D4")
workbook.save("test.xlsx")

# ---- USING XLSXWRITER ----
chart = workbook.add_chart({'type' : 'column'})
for i in range(1, len(df.columns) + 1):
chart.add_series({
'name' : ['graph', 0, i],
'values' : ['graph', 1, i, len(df.index), i],
'categories': ['graph', 1, 0, len(df.index), 0],
})
chart.set_x_axis({'name' : 'DateTime'})
chart.set_y_axis({'name' : 'Response Time'})
worksheet.insert_chart('D4', chart)
writer.save()

输出图为:

enter image description here

openpyxl 和 xlsxwriter 版本都生成完全相同的图表。问题是 xlsxwriter 版本输出图为 10MB,但 openpyxl 只有 3MB。

经过调查,我发现是 xlsxwriter 版本中的“类别”条目显着增加了权重。

当我评论它时,我的X轴现在是从1到n的系列,但输出只有1.6MB,这怎么可能?如何使用 xlsxwriter 使输出更加轻量级?

最佳答案

XlsxWriter 文件可能更大,因为它像 Excel 一样存储图表和工作表的图表类别和数据值。这可以提高 Excel 生成的文件的保真度,这是 XlsxWriter 的目标,并且当图表嵌入到其他应用程序(例如 PowerPoint)中时,也可以减少出现的问题。

根据您的分析,我猜测 openpyxl 不会存储额外的数据。

如果您在 Excel 中重新保存 XlsxWriter 或 openpyxl 文件,我希望您最终得到的文件大小与 XlsxWriter 文件大致相同。

关于python - xlsxwriter 图表类别文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com