本算法的目标:基于python和pandas,遍历文件夹内所有xlsx文件。导入数据集,然后对数据集中的数据进行一个一阶差分的减法运算,具体就是将后一行数据减去前一行数据,得到一个取值(这样可以反映每一行数据的变化量),得到值之后可以按照需要给数据取绝对值。之后再导出为xlsx文件,单独保存成独立的新文件。
如果需要处理csv文件也是一样的方法,只不过读取的时候可以改成读取CSV文件。
本算法学习copilot写的算法并且经过自己修改之后使用,co写的有时候经常无法运行,需要进行一些细节修改。

必要的安装包:pandas

尤其是如果你的数据集中有非数字的数据,或者不希望进行处理的列,本方法可以帮助你避开不需要处理的列~实现运算。

具体代码如下:

using System.Collections;

import pandas as pd
import os

# 定义文件夹路径
folder_path = "C:/Users/引号内内容改成你的文件夹路径"

# 获取文件夹内所有xlsx文件的名称
file_names = [f for f in os.listdir(folder_path) if f.endswith(".xlsx")]

for file_name in file_names:
    # 读取文件内容,返回为DataFrame对象
    df = pd.read_excel(folder_path + file_name)


    # 选择读取的文件df数据中的第2列到第10列,返回一个新的DataFrame对象,这是有数据内容
    df_selected = df.iloc[:, 2:10]
    print(df_selected)

    # 选择DataFrame对象中的第1列到第2列,返回一个新的DataFrame对象,这是非数据内容
    df_unselected = df.iloc[:, 0:2]
    print(df_unselected)

    # 将新的DataFrame对象中的每一行与上一行相减(一阶差分),返回一个新的DataFrame对象
    df_diff = df_selected.diff()

    #给所有的数据取绝对值,这个可要可不要,根据自己的需求增减
    df_diff = df_diff.abs()

    #左右拼接合并左右两个数据列(因为我的数据中1列和2列为非数据的内容,所以分成两段处理)
    df_new = pd.concat([df_unselected, df_diff], axis=1)

    #因为一阶差分处理完第一行是空行,所以删除掉第一行内容
    df_new = df_new.drop(0)
    
    # 将新的DataFrame对象写入一个新的xlsx文件,文件名为原文件名加上"_new"后缀
    df_new.to_excel(folder_path + file_name[:-5] + "_new.xlsx", index=False)
    #打印说明
    print("新文件已保存到"+ str(folder_path) + str(file_name[:-5]) + "_new.xlsx")

# 打印所有文件处理完成的信息
print("文件夹内所有文件处理完成")


这样就能够实现基于python和pandas,遍历文件夹内所有xlsx文件。导入数据集,然后对数据集中的数据进行一个一阶差分的减法运算(具体就是将后一行数据减去前一行数据,得到一个取值,可以反映每一行数据的变化量)。之后给数据取绝对值,之后再导出这个xlsx文件,单独保存成独立的新文件的目标了。

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注