本算法的目标:基于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文件,单独保存成独立的新文件的目标了。