使用 python 创建绘图,同时将 excel 数据分离到新文件
Posted
技术标签:
【中文标题】使用 python 创建绘图,同时将 excel 数据分离到新文件【英文标题】:Create plots using python while separating excel data to new files 【发布时间】:2022-01-12 23:04:59 【问题描述】:我首先要说明的是,我是 Python 和一般编码的新手。我可以根据某个列中的唯一值成功地分离我的数据,但是随着 for 循环的迭代,我也想创建一个图。出于某种原因,python 正在创建单独的 Excel 工作表,但完全忽略了绘图。任何建议/指出我做错了什么都将不胜感激。
import pandas as pd
import xlsxwriter
excel_file = 'CR1000XSeries_LiftoffData.xlsx'
df = pd.read_excel(excel_file, sheet_name='CR1000XSeries_LiftoffData')
split_values = df['StrandID'].unique()
for value in split_values:
df1 = df[df['StrandID'] == value]
output_file_name = "StrandID" + str(value) + "Test.xlsx"
workbook = xlsxwriter.Workbook(output_file_name)
ws = workbook.add_worksheet('Sheet1')
rows = len(df1)
r1 = 1
r2 = rows
C1 = 0
C2 = 9
C3 = 14
chart = workbook.add_chart('type': 'scatter', 'subtype': 'straight')
chart.add_series(
'categories': ['Sheet1', r1, C1, r2, C1],
'values': ['Sheet1', r1, C2, r2, C2],
'name': 'JackPressurePSI')
# Second Y axis
chart.add_series(
'categories': ['Sheet1', r1, C1, r2, C1],
'values': ['Sheet1', r1, C3, r2, C3],
'name': 'AbsoluteDispIN',
'y2_axis': 1)
ws.insert_chart('B10', chart)
df1.to_excel(output_file_name, index=False)
【问题讨论】:
【参考方案1】:主要问题是程序正在用df1.to_excel()
创建的同名文件之一覆盖xlsxwriter.Workbook()
创建的xlsx 文件。
请参阅Working with Python Pandas and XlsxWriter 上的 XlsxWriter 文档,了解同时使用 Pandas 和 XlsxWriter 的正确方法。
解决该问题,程序应该可以工作。这是一个更新的版本:
import pandas as pd
excel_file = 'CR1000XSeries_LiftoffData.xlsx'
df = pd.read_excel(excel_file, sheet_name='CR1000XSeries_LiftoffData')
split_values = df['StrandID'].unique()
for value in split_values:
output_df = df[df['StrandID'] == value]
output_file_name = "StrandID" + str(value) + "Test.xlsx"
# Create a pandas excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter(output_file_name, engine='xlsxwriter')
output_df.to_excel(writer, sheet_name='Sheet1')
# Get the xlsxwriter workbook and worksheet objects.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
max_row = df.shape[0]
row1 = 1
row2 = max_row
col1 = 0
col2 = 9
col3 = 14
chart = workbook.add_chart('type': 'scatter', 'subtype': 'straight')
chart.add_series(
'categories': ['Sheet1', row1, col1, row2, col1],
'values': ['Sheet1', row1, col2, row2, col2],
'name': 'JackPressurePSI')
# Second Y axis
chart.add_series(
'categories': ['Sheet1', row1, col1, row2, col1],
'values': ['Sheet1', row1, col3, row2, col3],
'name': 'AbsoluteDispIN',
'y2_axis': True)
worksheet.insert_chart('B10', chart)
writer.save()
我无法对此进行全面测试,因为我没有输入文件,但它可以正确编译。此外,我更改了一些变量名称以使其更加明确。
【讨论】:
以上是关于使用 python 创建绘图,同时将 excel 数据分离到新文件的主要内容,如果未能解决你的问题,请参考以下文章
matplotlib (python) - 在没有 pyplot 的情况下为多个绘图创建单个自定义图例