如何将CSV数据转为指定格式并通过openpyxl导出至Excel绘图?
解决方案:CSV读取格式转换 + Excel导出与绘图
1. 转换CSV读取的数据格式
原代码读取的所有元素都是字符串,我们需要将数据行的数字转为整数,同时保留表头的字符串格式。
转为列表格式(符合需求的第二种格式)
import csv with open('Sampledata2Dplot.csv', newline='') as csvfile: reader = list(csv.reader(csvfile)) # 保留表头,后续行转整数(先去除元素前后空格) processed_data = [reader[0]] for row in reader[1:]: processed_row = [int(item.strip()) for item in row] processed_data.append(processed_row) print(processed_data)
输出结果:
[['Year', 'Month'], [0, 1], [5, 3], [10, 6], [15, 4]]
转为元组格式(符合需求的第一种格式)
如果需要元组格式,只需将每行转换为元组即可:
import csv with open('Sampledata2Dplot.csv', newline='') as csvfile: reader = list(csv.reader(csvfile)) processed_data = [tuple(reader[0])] for row in reader[1:]: processed_row = tuple(int(item.strip()) for item in row) processed_data.append(processed_row) print(processed_data)
输出结果:
[('Year', 'Month'), (0, 1), (5, 3), (10, 6), (15, 4)]
2. 用openpyxl导出数据到Excel
将处理好的数据写入Excel文件:
from openpyxl import Workbook # 假设processed_data是上面处理完成的数据 wb = Workbook() ws = wb.active ws.title = "PlotData" # 逐行写入数据 for row in processed_data: ws.append(row) # 保存Excel文件 wb.save("PlotData.xlsx")
3. 用openpyxl创建图表
以散点图为例,将Year作为X轴、Month作为Y轴生成图表:
from openpyxl import Workbook from openpyxl.chart import ScatterChart, Reference from openpyxl.chart.series import Series # 初始化工作簿并写入数据 wb = Workbook() ws = wb.active ws.title = "PlotData" for row in processed_data: ws.append(row) # 创建散点图实例 chart = ScatterChart() chart.title = "Year vs Month" chart.x_axis.title = "Year" chart.y_axis.title = "Month" # 定义数据范围:跳过表头,选取所有数据行 data_rows = len(processed_data) x_values = Reference(ws, min_col=1, min_row=2, max_row=data_rows) y_values = Reference(ws, min_col=2, min_row=2, max_row=data_rows) # 添加数据系列到图表 series = Series(y_values, x_values, title_from_data=True) chart.series.append(series) # 将图表插入到工作表的D1位置 ws.add_chart(chart, "D1") # 保存带图表的Excel文件 wb.save("PlotData_with_chart.xlsx")
内容的提问来源于stack exchange,提问作者prasadji
相关产品推荐
相关产品推荐

