阅读txt到excel,求平均值

需求:一个文件夹下的txt文件,并计算每N(3)行数据为平均值,结果需要转换成excel,输出到不同的列。

原始数据:(结构构成)
1321,214124,214124
32423,324525,235
2141,2154124,2132134
1321,214124,214124
32423,324525,235
2141,2154124,2132134
输出结果:(结构构成)

xyz
123132134214
123132134214
rolnum=0
colnum=0

#阅读txt到excel
def Txt_to_Excel(inputTxt, sheetName, start_row, start_col, outputExcel):
	ws = excel.get_sheet(sheetName)
	with open(inputTxt, "r") as file_txt:
		lines = file_txt. readlines() #不是很大的文件都可以先读取出来
		# count = len(lines)
		rolnum =len(lines)
		rol=0
		#获取每行数据
		for datasrol in lines:
			# print(datarol)
			# 列数归0
			col=0
			datarol = datasrol. split(",")
			# print(datarol)
			row_excel = rol + start_row-1
			rol += 1
			#把数据按列插入
			for data in datarol:
				col_excel = col + start_col- 1
				# print(data)
				ws.write(row_excel, col_excel, data)
				excel.save (outputExcel)
				# print(col_excel)
				col +=1
	cotnum = col
	print("行数, " + str(rolnum) + "列数 " + str(colnum))
	return excel

#处理exceL,计算每列3组的平均值
def excelUnit(excelFile,newSheet,tabName):
	if newSheet != None and newSheet !='':
		#创建表格
		CreatExcel(sheetName=newSheet, tabName=tabName, outputExcel=excelFile)
		ws = excel.get_sheet (newSheet)
		col=0
		Data_0 = []
		i=0
		for data in tabName:
			col_excel = col + start_col -1
			df = pd.DataFrame (pd. read_excel(excelFile))
			print(data)
			while i < len(df):
				Data0 = df[data][i:i + group] # 每间隔3个数据取-次数
				print(Data0)
				Data1 = sum(Data0) / group # 求取每组数据的平均值
				Data_0. append((format(Data1,'.6f')))
				i=i+group
			print(Data_0)
			rol=0
			for data0 in Data_0:
				rol_excel = rol + start_row - 1
				ws. write(rol_excel, col_excel, data0)
				excel.save(excelFile)
				rol += 1
			col += 1
			Data_0 = []
			i=0
			return
		else:
			Data_0 = []
			i=0
			for data in tabName:
				df = pd.DataFrame (pd. read_excel(excelFile))
				print(data)
				while i < len(df):
					Data0 = df[data][i:i + group] # 每间隔3个数据取-次数
					index=3
					print(Data0)
					Data1 = sum(Data0) / group # 求取每组数据的平均值
					Data_0.append((format(Data1,'.6f')))
					i=i+group
					while index>1:
						index-=1
						Data_0.append('')
				print(Data_0)
				df[data+"3组平均数"]=Data_0
				df.to_excel(excelFile,sheetName,index=False)
				Data_0 = []
				i=0
			return


# 创建excel, sheetName
def CreatExcel(sheetName, tabName, outputExcel):
	if sheetName == None and sheetName =='' :
		sheetName =" 默认sheet"
	ws = excel.add_sheet(sheetName)
	col=0
	for data in tabName:
		col_excel =col + start_col - 1
		ws.write(0, col_excel,data)
		excel. save (outputExcel)
		col+= 1
	return excel

def readTxtDir(path):
	findtxt = os.listdir(path) # 文件夹下的所有文件
	txtsPath=[]
	for file in findtxt:#遍历文件夹
		if os.path.splitext(file)[1] == '.txt':
			# print(file)
			txtsPath.append(file)
	print(txtsPath)
	return txtsPath

if __name__ =='__main__'  :

	#原始文件参数
	outputExcel = '.xls' #输入excel格式
	inputfileDir = 'D://yuanhua/test/case' # 文件目录
	txts=readTxtDir(path=inputfileDir)
	for txt in txts:
		#创建文档
		excel = xlwt .Workbook(encoding='utf-8')
		sheetName = "导航定位综合误差原始数据" # 需要写入exceL中的Sheet中,可以自己
		tabName=['x','y','z']#加列时,改变这个参数
		start_row = 2 # 从第2行开始写
		start_col = 1 # 从第1列开始写
		#转换文件为excel
		outputExcel ='.xls'
		print(inputfileDir + "/" + txt)
		print(txt.split('.')[0] + outputExcel)
		outputExcel.txt.split('.')[0] + outputExcel
		inputfile = inputfileDir + "/" + txt
	
		excel = CreatExcel( sheetName=sheetName,tabName=tabName,outputExcel=outputExcel)
		Txt_to_Excel(inputTxt =inputfile, sheetName=sheetName, start_row=start_row,start_col=start_col,outputExcel=outputExcel)
	
		avgName = "平均值 "
		group = 3 # 3行数据组合为一组,n行数据改变这个参数
	
		# tabName = ['x', 'y', 'z']
	
		excelUnit(excelFile=outputExcel, newSheet=avgName, tabName=tabName)
	

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值