Untitled
unknown
plain_text
2 years ago
2.4 kB
2
Indexable
import pandas as pd import glob import os from openpyxl import load_workbook from openpyxl.chart import ScatterChart, Reference, Series def list_excel_files(path): os.chdir(path) return glob.glob("*.xls*") def create_scatter_chart(df, x_col, y_cols): chart = ScatterChart() chart.title = f"{x_col} vs {', '.join(y_cols)}" chart.x_axis.title = x_col chart.y_axis.title = ', '.join(y_cols) for y_col in y_cols: x_values = Reference(df, min_col=df[x_col].col_idx, min_row=2, max_row=df.shape[0] + 1) y_values = Reference(df, min_col=df[y_col].col_idx, min_row=2, max_row=df.shape[0] + 1) series = Series(y_values, x_values, title=y_col) chart.series.append(series) return chart def main(): path = input("Please enter the path to the Excel files: ") excel_files = list_excel_files(path) print("\nAvailable Excel files:") for i, file in enumerate(excel_files, start=1): print(f"{i}. {file}") file_idx = int(input("\nEnter the index of the file to use: ")) - 1 file_path = os.path.join(path, excel_files[file_idx]) df = pd.read_excel(file_path, engine='openpyxl').dropna(axis=0, how='any').dropna(axis=1, how='any') wb = load_workbook(file_path) charts_sheet = wb.create_sheet("charts") chart_col = 2 while True: print("\nAvailable columns:") for col in df.columns: print(col) x_col = input("\nEnter the column name for the x-axis: ") y_cols = [] while True: remaining_cols = [col for col in df.columns if col != x_col and col not in y_cols] print("\nRemaining columns:") for col in remaining_cols: print(col) y_col = input("\nEnter the column name for the y-axis: ") y_cols.append(y_col) more_y = input("\nDo you want to add more y-axis data? (y/n): ") if more_y.lower() != 'y': break chart = create_scatter_chart(df, x_col, y_cols) charts_sheet.add_chart(chart, f"B{chart_col}") chart_col += 15 more_charts = input("\nDo you want to create more charts? (y/n): ") if more_charts.lower() != 'y': break wb.save(file_path) print("\nFinished. Charts added to the 'charts' sheet.") if __name__ == "__main__": main()
Editor is loading...