python读取csv表格数据,生成折线图

本文介绍了一个Python类CSVLinePlotter,用于读取CSV文件中的数据,根据用户指定的列生成折线图。用户可以输入文件路径和需要的列号,该类会自动执行数据提取和图形绘制。
摘要由CSDN通过智能技术生成

生成一个python类,主要解决问题,读取csv表格中的数据,生成一个折线图。

  1. 输入原数据文件路径,例如: test.csv
  2. 按顺序输入需要使用到的数据列,例如:1,2,3
  3. 会将输入的第一列作为X轴,其他列作为Y轴数据进行填充。
import pandas as pd
import matplotlib.pyplot as plt


class CSVLinePlotter:
    def __init__(self, file_names):
        self.file_names = file_names

    def extract_data(self, selected_columns):
        data_frames = [pd.read_csv(file_name, delimiter=',', encoding='utf_8_sig')[selected_columns] for file_name in
                       self.file_names]
        combined_df = pd.concat(data_frames)
        return combined_df

    def 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(',') if
                                    1 <= int(index) <= len(column_names)]
        selected_columns = [column_names[index] for index in selected_columns_indices]
        return selected_columns

    def generate_line_plot(self, extracted_data, selected_columns):
        # Set the first selected column as X-axis and others as Y-axis
        x_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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值