使用 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 数据分离到新文件的主要内容,如果未能解决你的问题,请参考以下文章

python的绘图工具matplotlib.pyplot

使用Unity将Excel中的数据进行绘图表

matplotlib (python) - 在没有 pyplot 的情况下为多个绘图创建单个自定义图例

python绘图小dome

通过 python 中的 xlwings 调整 Excel 中的数字格式

Plotly交互式绘图python:将下拉菜单更改为输入框