【python实战】-- 计算所有csv文件指定数据并保存到新文件更新1

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、需求
  • 二、使用步骤
    • 1.源码
  • 总结


前言

一、需求

判断所有指定文件是否重复,是否存在数据造假;
所有指定excel文件指定列求和,求最大值,保存到新excel

二、使用步骤

1.源码

代码如下(示例):

#xlwt只支持xls格式,xlsx格式需要用openpyxl或pandas
# -*- coding: utf-8 -*-  
# coding=gbkimport pandas as pd
import os 
import xlrd
import xlwt
import csv
from xlutils.copy import copy
from openpyxl import workbook
from openpyxl import load_workbook
from os.path import dirname
from decimal import Decimal
from openpyxl.utils.dataframe import dataframe_to_rows
# 读写2007 excel
import openpyxlglobal_var = None
global_var_r = Nonedef some_function():global global_varglobal global_var_rglobal_var = col1global_var_r = row1def get_allfile_msg(file_dir):for root, dirs, files in os.walk(file_dir):return root, dirs, [file for file in files if file.endswith('.xls') or file.endswith('.xlsx') or file.endswith('.csv')] def get_allfile_url(root, files):allFile_url = []for file_name in files:file_url = root + "/" + file_nameallFile_url.append(file_url)return allFile_urldef get_file_name(path, suffix = ['.xlsx', '.xls','.csv']):  #'.xlsx', '.xls',tmp_lst = []for root,dirs,files in os.walk(path):for file in files:tmp_lst.append(os.path.join(root, file))return tmp_lstdef convert_csv_to_xlsx(csv_file_path,xlsx_file_path):df = pd.read_csv(csv_file_path)df.to_excel(xlsx_file_path,index=False)    #定义读取csv_pandas
def read_csv_file(file_path):#参数:error_bad_lines=False跳过错误的行 delimiter=',',encoding = 'gbk',header = 0, engine='python'  sep = r"\s+\s{0}"  encoding = "iso-8859-1"return pd.read_csv(file_path,encoding = 'latin1',sep = r"\s+\s{0}",dtype=object,quotechar="'",delimiter=',',doublequote=True,engine="python",header = row_header)   #第四行作为表头#定义一个函数来尝试将字符串转换为十进制数字
def try_convert_to_decimal(value):try:return Decimal(value)except (TypeError, DecimalException):return None#定义csv求和
def sum_csv_column(filename,column_index):total = 0with open(filename, mode='r', newline='') as csvfile:  #mode = 'r'csvreader = csv.DictReader(csvfile, delimiter=",")headers = next(csvreader) #跳过标题行for row in csvreader:if len(row) > column_index :  #and row[column_index].isdigit()total += int(row[column_index])return totaldef calculate_sum_in_csv(file_path,row_start,row_end,col_start,col_end):df = pd.read_csv(file_path ,encoding='utf-8')subset = df.iloc[row_start:row_end,col_start:col_end]return subset.sum().sum()def get_top_nine_dirs(file_path):#分割路径并移除文件名parts = file_path.split(os.path.sep)#获取前9级目录#top_nine_dirs = os.path.sep.join(parts[:9])#获取第9级目录top_nine_dirs = os.path.sep.join(parts[8])return top_nine_dirsdef get_nth_directory_name(file_path,n):#将路径分割成单个目录directories = file_path.split(os.path.sep)if len(directories) < n:return Nonereturn directories[n - 1]def is_number(string):try:Decimal(string) #尝试将字符串转换为数字return Trueexcept DecimalError:return False#查找并输出位置
def search_str(filename,search_char):global global_var  #将读取的函数计算结果设置为全局变量,我们可以先定义全局变量,然后在函数内部通过全局变量声明修改global global_var_rresult = []character = "1S"total = 0 try:with open(filename,'r') as csvfile:csvreader = csv.reader(csvfile, delimiter=",")  row_index = 1      for row in csvreader:            col_index = 1for cell in row:if character == cell:result.append((row_index,col_index))print(result)print(f"Cell data:{cell},Row index:{row_index},Column index:{col_index}")print('已查到该值',cell)for row1,col1 in result:data_row = list(csvreader)num_rows = len(data_row)print(f'"{character}"在第{row1}行,第{col1}列被找到')print(f'总行数:"{num_rows}"')global_var = col1global_var_r = row1 - 2col_index += 1row_index += 1except:passif __name__ == '__main__':#file_dir = os.getcwd()file_dir = r"\\10.99.10.141\临时使用共享盘\品保勿删\跌落\2024年"#file_dir = r"E:\py\python3.7\test-advance\test04\data-mtf1"root, dirs, files = get_allfile_msg(file_dir)allFile_url = get_allfile_url(root, files)#print(root)print(dirs)#print(files)number = len(dirs)print(number)#**********************************************************jieguo = xlwt.Workbook(encoding="ascii")  #生成excelwsheet = jieguo.add_sheet('sheet name') #生成sheet    #keyword = 'L<1.2'#**********************************************************sum_values = []mean_values = []all_values = []#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ex = openpyxl.Workbook()sheet = ex.activestats = {'sum':[],'mean':[]}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#``````````````````````````````````````````````````````````datas = []datas_add = []data_paths = []data_paths_part = []top_nine_dirs = []data_paths_name = []top_eight_dirs = []#``````````````````````````````````````````````````````````for n in range(len(dirs)):dir = dirs[n]path = root + '\\' + dirprint(path) print(len(dir))tmp_lst = get_file_name(path)fl_lst = list(filter(lambda x:x.find("Data0_mtf.csv")>=0,tmp_lst)) #fl_lst1 = ['r"'+item for item in fl_lst ]#fl_lst2 = [item +'"' for item in fl_lst1 ]num_file = len(fl_lst)   print(num_file)     #print(tmp_lst)#main()try:for xl in fl_lst:#xl = xl.replace(os.sep,"\\")print(xl)                search_str(xl,"1S") filename = xlpartname = os.path.dirname(os.path.dirname(xl))column_index = global_var - 1column_index_add = global_varrow_header = global_var_r csv_data = read_csv_file(filename)df = csv_data#print(df)#print(df.iloc[:,column_index].dtype)df.iloc[:,column_index] = pd.to_numeric(df.iloc[:,column_index],errors='coerce')value_5_17 = df.iloc[0,16]  #行索引以0开始 #print(value_5_17)sum_total = df.iloc[:,column_index].sum()max_total = df.iloc[:,column_index].max()#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^df.iloc[:,column_index_add] = pd.to_numeric(df.iloc[:,column_index_add],errors='coerce')sum_total_add = df.iloc[:,column_index_add].sum()max_total_add = df.iloc[:,column_index_add].max()datas_add.append({'sum_add':sum_total_add,'max_add':max_total_add})datas_add_df = pd.DataFrame(datas_add)                #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#sum_total = sum_values.append(df.iloc[:,column_index].sum())#mean_total = mean_values.append(df.iloc[:,column_index].mean())                              #sum_df = pd.DataFrame(sum_values,columns=['sum_value'])#mean_df = pd.DataFrame(mean_values,columns=['mean_value'])#sum_df.to_excel('output.xlsx',sheet_name='Sheet1',startcol=1,startrow=0,index=False,header=False,engine='openpyxl')#mean_df.to_excel('output.xlsx',sheet_name='Sheet1',startcol=2,startrow=0,index=False,header=False,engine='openpyxl')'''#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#计算指定列和&平均值stats['sum'].append(sum_total)stats['mean'].append(mean_total)for row in dataframe_to_rows(pd.DataFrame(stats),index=False,header = True):sheet.append(row)ex.save("stats.xlsx")#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'''#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~datas.append({'sum':sum_total,'max':max_total})data_paths.append({'path':xl})#top_nine_dirs = get_top_nine_dirs(xl)top_eight_dirs = get_nth_directory_name(xl,10)top_nine_dirs = get_nth_directory_name(xl,11)data_paths_part.append({'part':top_nine_dirs})data_paths_name.append({'name':top_eight_dirs})datas_df = pd.DataFrame(datas)data_paths_df = pd.DataFrame(data_paths)                data_paths_part_df = pd.DataFrame(data_paths_part)data_paths_name_df = pd.DataFrame(data_paths_name)with pd.ExcelWriter('results.xlsx') as writer:datas_df[['sum','max']].to_excel(writer,startrow =0, startcol = 4,index = False)datas_add_df[['sum_add','max_add']].to_excel(writer,startrow =0, startcol = 7,index = False)data_paths_df[['path']].to_excel(writer,startrow = 0,startcol =3,index=False)data_paths_part_df[['part']].to_excel(writer,startrow = 0,startcol = 2,index=False)data_paths_name_df[['name']].to_excel(writer,startrow = 0,startcol = 1,index=False)#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               print(f"共有{num_file*len(dirs)}个文件")except Exception as e:print(e) 

总结

分享
从道理上讲,烦恼都是由思维和想法产生的,冥想的状态可以让我们看清这些思维和想法,并且放下它们,回归平静;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PID控制算法学习笔记分享

目录 一、参数设定 二、PID计算公式 三、位置式PID代码实现 四、增量式PID代码实现 五、两种控制算法的优缺点 六、PID算法的改进 一、参数设定 比例系数&#xff08;kp&#xff09;&#xff1a;P项的作用是根据当前误差的大小来产生一个控制量。它直接与误差成正比&#…

【机器学习300问】126、词嵌入(Word Embedding)是什么意思?

人类的文字&#xff0c;作为一种高度抽象化的符号系统&#xff0c;承载着丰富而复杂的信息。为了让电脑也能像人类一样理解并处理这些文字&#xff0c;科学家们不断探索各种方法&#xff0c;以期将人类的语言转化为计算机能够理解的格式。 一、One-Hot编码的不足 在自然语言处…

大模型 Scaling Law 的本质是工业化思维,Token 工厂,Token 生意

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 1. Scaling Law 的本质是工业化思维 我认为很多人对 Scaling Law 的理解还不够深入&#xff0c;他们仍然只是简单地认为&#xff1a;效果与参数规模成等比增长&#xff0c;目前的瓶颈应该是数据问题。…

军事人工智能的3个流派

在军事领域应用人工智能的态度大致分为三类&#xff1a;激进者、否认者、实用主义者。激进者认为&#xff0c;人工智能将彻底改变战争&#xff0c;改变战争的进行方式&#xff0c;有时甚至改变战争的性质及战争发生的原因。实用主义者认为&#xff0c;人工智能将越来越多地进入…

NSSCTF中的[WUSTCTF 2020]朴实无华、[FSCTF 2023]源码!启动! 、[LitCTF 2023]Flag点击就送! 以及相关知识点

目录 [WUSTCTF 2020]朴实无华 [FSCTF 2023]源码&#xff01;启动! [LitCTF 2023]Flag点击就送&#xff01; 相关知识点 1.intval 绕过 绕过的方式&#xff1a; 2.session伪造攻击 [WUSTCTF 2020]朴实无华 1.进入页面几乎没什么可用的信息&#xff0c;所以想到使用dis…

C++ Thead互斥量死锁,mutex如何防止死锁---C++11多线程快速学习

假设有两个线程 T1 和 T2&#xff0c;它们需要对两个互斥量 mtx1 和 mtx2 进行访问&#xff0c;而且需要按照以下顺序获取互斥量的所有权&#xff1a; - T1 先获取 mtx1 的所有权&#xff0c;再获取 mtx2 的所有权。 - T2 先获取 mtx2 的所有权&#xff0c;再获取 mtx1 的所有…

Error: MiniProgramError {“errno“:600009,“errMsg“:“request:fail invalid url \

vscode使用uniappvue3开发小程序&#xff0c;使用mockjs拦截接口&#xff0c;小程序报错&#xff1a; {status: 9value: "ide unknown command(empty parse result):**** }问题原因&#xff1a;mockjs不兼容微信小程序 解决办法&#xff0c;切换mockjs为better-mock npm…

Spring MVC学习记录(基础)

目录 1.SpringMVC概述1.1 MVC介绍1.2 Spring MVC介绍1.3 Spring MVC 的核心组件1.4 SpringMVC 工作原理 2.Spring MVC入门2.1 入门案例2.2 总结 3.RequestMapping注解4.controller方法返回值4.1 返回ModelAndView4.2 返回字符串4.2.1 逻辑视图名4.2.2 Redirect重定向4.2.3 forw…

PHP入门教程4:文件处理和表单处理

PHP入门教程4&#xff1a;文件处理和表单处理 在前几篇文章中&#xff0c;我们学习了PHP的基础语法、控制结构、函数的使用以及数组和字符串的操作。本文将重点介绍PHP中的文件处理和表单处理&#xff0c;这些是Web开发中非常常见的任务。本文将包含以下几个部分&#xff1a; …

SpringMVC:拦截Mybatis的mapper

我们在使用mybatis的时候会碰到一些公共添加时间&#xff0c;操作人员&#xff0c;更新时间、或者一些分页这个使我们如果要去添加每个对应的- service - dao - mapper - xml 这样就造成很多冗余代码&#xff0c;那这个时候我们就需要使用一些通用方法&#xff0c;统一就行修改…

html中如何写一个提示框,css画一个提示框

在HTML中&#xff0c;提示框通常使用<div>元素来创建&#xff0c;然后使用CSS进行样式化。以下是一个示例&#xff0c;展示如何在HTML中写一个提示框&#xff0c;并使用CSS来设计其外观。 HTML 首先&#xff0c;创建一个HTML文件&#xff0c;其中包含一个提示框的结构&…

嵌套使用模板类

#include<iostream> using namespace std;template <class Datatype> class Stack { private:Datatype* items;//栈数组int stacksize;//栈的实际大小int top;//栈顶指针 public://构造函数&#xff1a;1&#xff09;分配栈数组内存&#xff0c;2&#xff09;把栈顶…

Shopee菲律宾本土店允许中途无理由退货,如何应对退货后库存混乱问题?

Shopee菲律宾本土店最近实施了一项新政策&#xff0c;自2024年6月10日起&#xff0c;允许买家在商品仍在运输途中申请退货与退款&#xff0c;此即“在途退货/退款”功能&#xff0c;主要的目的是为了提升买家的购物体验&#xff0c;增强市场竞争力。 图源&#xff1a;Shopee菲律…

一年前 LLM AGI 碎片化思考与回顾系列⑤ · 探索SystemⅡ复杂推理的未知之境

阅读提示&#xff1a; 本篇系列内容的是建立于自己过去一年在以LLM为代表的AIGC快速发展浪潮中结合学术界与产业界创新与进展的一些碎片化思考并记录最终沉淀完成&#xff0c;在内容上&#xff0c;与不久前刚刚完稿的那篇10万字文章 「融合RL与LLM思想&#xff0c;探寻世界模型…

vue3delete请求报403forbidden,前后端解决方式,cookie无效问题

在做开发时&#xff0c;前期已经在Controller类加上CrossOrigin(origins "*")&#xff0c;发送get和post请求都没问题&#xff0c;但遇到delete请求时&#xff0c;又报出跨域问题 一.前端添加proxy代理服务器&#xff08;未能解决&#xff09; 在vue.config.js中使…

C#面:abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized?

abstract 的方法不能同时是 static、native 或 synchronized。 static 方法是属于类的方法&#xff0c;而 abstract 方法是需要在子类中实现的方法&#xff0c;两者的概念相互矛盾。static 方法是在编译时就确定的&#xff0c;而abstract方法需要在运行时才能确定具体实现。na…

Qt多线程技术

Qt提供了许多处理线程的类和函数。下面是Qt程序员可以用来实现多线程应用程序的四种不同方法。 QThread:带有可选事件循环的低级API QThread是Qt中所有线程控制的基础&#xff0c;每个QThread实例代表并控制一个线程。 QThread既可以被直接实例化&#xff0c;也可以被子类化。…

连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果&#xff0c;然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误&#xff0c;本文用于记录错误类型和解决错误的方法。 1 代码示例 SHAP 官方展示的代码如下&#xff1a; import datasets import nu…

Linux screen命令使用

文章目录 1. 前言2. screen是什么?3. screen使用场景描述3. screen常用命令4. 小结5. 参考 1. 前言 实际开发中用到的云服务器&#xff0c;如果项目使用的是python&#xff0c;需要利用项目运行一些时间较长的项目程序脚本的话&#xff0c;由于我们通过ssh连接远端服务器&…

一文详解扩散模型

文章目录 1、常见的生成模型2、变分推断简介3、文生图的评价指标4、Diffusion Models5、其他技术交流群精选 节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地…