生成一个python类,主要解决问题,读取csv表格中的数据,生成一个折线图。
- 输入原数据文件路径,例如: test.csv
- 按顺序输入需要使用到的数据列,例如:1,2,3
- 会将输入的第一列作为X轴,其他列作为Y轴数据进行填充。
import pandas as pd
import matplotlib.pyplot as pltclass CSVLinePlotter:def __init__(self, file_names):self.file_names = file_namesdef extract_data(self, selected_columns):data_frames = [pd.read_csv(file_name, delimiter=',', encoding='utf_8_sig')[selected_columns] for file_name inself.file_names]combined_df = pd.concat(data_frames)return combined_dfdef display_column_names(self, column_names):print("列名列表:")for i, column in enumerate(column_names, start=1):print(f"{i}. {column}")def get_selected_columns(self, column_names):self.display_column_names(column_names)selected_columns_indices = input("请输入要导出的列的编号(用逗号分隔): ")selected_columns_indices = [int(index) - 1 for index in selected_columns_indices.split(',') if1 <= int(index) <= len(column_names)]selected_columns = [column_names[index] for index in selected_columns_indices]return selected_columnsdef generate_line_plot(self, extracted_data, selected_columns):# Set the first selected column as X-axis and others as Y-axisx_axis = selected_columns[0]y_axes = selected_columns[1:]plt.figure(figsize=(10, 6))plt.plot(extracted_data[x_axis], extracted_data[y_axes])plt.xlabel(f'{x_axis} (X-axis Label)')plt.ylabel('Y-axis Label')plt.title('Line Plot')plt.legend(y_axes)plt.show()def run(self):# 提取第一份CSV的列名,以供用户选择first_file_name = self.file_names[0]column_names = pd.read_csv(first_file_name, delimiter=',', encoding='utf_8_sig').columns.tolist()selected_columns = self.get_selected_columns(column_names)extracted_data = self.extract_data(selected_columns)print(extracted_data)self.generate_line_plot(extracted_data, selected_columns)if __name__ == "__main__":# 用户输入CSV文件路径file_paths = input("输入CSV文件路径(多个文件用逗号分隔): ").split(',')# 创建CSVLinePlotter实例line_plotter = CSVLinePlotter(file_paths)line_plotter.run()