尝试将 CSV 文件中的数据提取到 XLSX 文件中,以便从中制作图表。数据在 CSV 文件中按以下设置进行格式化,第一行中为通道名称,第二行中为单位(时间、压力、布尔值、空),第三行至 X 行中为数据:
频道名称_1、频道名称_2、频道名称_3
单元_1,单元_2,单元_3
1,4,0.03
1,7,0.03
1,2,0.02
....
# reading the data in CSV with pandas by:
csv = file.csv
data = pd.read_csv(csv, sep=';')
# creating a workbook / worksheet with:
excel_file_path = r"file.xlsx"
workbook = xlsxwriter.Workbook(excel_file_path, {"nan_inf_to_errors": True})
data_worksheet = workbook.add_worksheet()
Data_chart = workbook.add_worksheet("Chart1")
# adding data to the sheet by:
for column_num, column_name in enumerate(data):
data_worksheet.write(0,column_num,column_name)
data_worksheet.write_column(1, column_num, data[column_name])
上面的代码将把所有数据导入Excel,尽管问题是数据(数字)在Excel文件中每个单元格的左上角给出一个绿色三角形,并显示消息“此单元格中的数字已格式化”作为文本”。这使得它们无法绘制,因为 Excel 认为它是文本而不是数字。
单位行(第二行)有时是一个单词(秒),有时是布尔值,有时是空,所以我不能只将整列数据格式化为浮点数/数字。
还有其他人遇到这个问题吗?
解决此问题的一种方法是将数据转换为 Excel。例如,写
=0.03+0
可以确保 0.03 是一个数字,而不是 Excel 中的文本。
您可以像下面这样实现:
# adding data to the sheet by:
for column_num, column_name in enumerate(data):
data_worksheet.write(0, column_num, column_name)
# write the second row (unit_1, unit_2, unit_3)
data_worksheet.write(1, column_num, data[column_name][0])
# write excel formula =0.03+0 to convert text into number
formulas = [f'={x}+0' for x in data[column_name][1:]]
data_worksheet.write_column(2, column_num, formulas)
workbook.close()