前言
对于需要对比或者合并的csv数据,可以用简单的加减乘除方法
但前提是要对csv进行dataframe,然后才能进行操作。
本次操作是每个csv对平均值进行对比求差。
一、处理需求
对于得到的数据,需要与平均值进行比较,查看数据变化。二、处理过程
1.代码分析过程
图中,黄色是读取到的文件中的csv文件,但是排序就很尴尬,序号排序是1,10,11…2,20,22…
csv文件是个嵌套的列表,故用list[0][0]得到第一个csv,也就是平均值,后续的排序就不关注了,反正都是和第一个比较
比较的过程是每后一个的csv减去第一个,所以第一次要进行判断两个csv是否相同(红色是第一次读到的csv文件,与list[0][0]进行对比),如果相同将数据赋给被减数并跳出本次循环。
后面再读取csv,判断不相同,就进行减运算(被减数值不再改变,永远为平均值)。
2.完整代码
#!/user/bin/env python3
# -*- coding: utf-8 -*-
import os
import re
import pandas as pd
if __name__ == '__main__':
filenames_in = 'E://...//mat//num_day1' # 输入文件的文件地址
filenames_out = 'E://...//mat//num_day1' # 新文件的地址
pathDir = os.listdir(filenames_in)
csv = [pathDir] # 获取所有csv文件
ave_day = csv[0][0] # 提取第一个csv
for allDir in pathDir:
child = re.findall(r"(.+?).csv", allDir) # 正则的方式读取文件名,去扩展名
if len(child) >= 0: # 去掉没用的系统文件
newfile = ''
needdate = child #### 这个就是所要的文件名
domain1 = os.path.abspath(filenames_in) # 待处理文件位置
info = os.path.join(domain1, allDir) # 拼接出待处理文件名字
# ------------数据处理过程---------------
print(info, "开始处理")
df = pd.DataFrame(pd.read_csv(info, header=None))
# df1 = df
if ave_day == allDir:
df1 = df
continue
# ave = pd.DataFrame(pd.read_csv(ave_day, header=None))
ave_diff = df - df1
diff = 'diff_' + needdate[0] # 重命名
domain2 = os.path.abspath(filenames_out) # 处理完文件保存地址
outfo = os.path.join(domain2, diff + '.csv') # 拼接出新文件名字
ave_diff.to_csv(outfo, encoding='utf-8')
print(info, "处理完")
总结
新手小白,只能一点一点的处理问题。
路漫漫其修远兮,吾将上下而求索。
排序问题,如果有强迫症的同学可以考虑改良一下。
每天进步一点点!!!