python数浓度计算

前面已经将32×32的数据删除了不需要的列,数据变成了32×21的数据

excel的变化直径(也就是当前直径—前一个直径)为了匹配txt的32行数据,我进行了重复复制,将excel变成下图:

 那么采用数浓度公式:

公式理解:

代码:

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: Suyue
@file: lianxi.py
@time: 2024/05/06
@desc:
"""
import numpy as np
import pandas as pd
import xlwt

df1 = pd.read_excel('/lianxi/直径.xls')
# delta_d = {'变化直径':[0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.188, 0.25, 0.25, 0.25, 0.25, 0.375, 0.5, 0.5, 0.5, 0.5, 0.75, 1, 1]}
speed = {'速度':[0.05, 0.15, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 1.1, 1.3, 1.5, 1.7, 1.9, 2.2, 2.6, 3, 3.4, 3.8, 4.4, 5.2, 6, 6.8, 7.6, 8.8, 10.4, 12, 13.6, 15.2, 17.6, 20.8]}
# df1 = pd.DataFrame(delta_d)
df2 = pd.DataFrame(speed)

file_path = '/lianxi/53469-20220718_out.txt'

# 读整个txt文件读取到单个字符串
with open(file_path, 'r', errors='ignore') as file:
    file_content = file.read()

# 按时间戳拆分内容以查找单独的部分
# 时间戳的格式为 YYYY-MM-DD HH:MM:SS,因此我们将使用正则表达式根据此模式进行拆分
import re
sections = re.split(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\n', file_content)
# print(sections)


# 如果txt第一个元素为空值(由于拆分),则将其删除
if not sections[0]:
    sections.pop(0)


# 用于excel结果写入,将结果放入列表
list = []
# 前面txt有速度直径介绍标识,从第二组数据开始读
for section in sections:
    # 将字符串拆分为几行,然后按空格拆分每行并转换为 DataFrame
    lines = section.strip().split('\n')
    matrix = [line.split() for line in lines]
    df = pd.DataFrame(matrix)


    # 计算数浓度公式
    # 按行读,一行为一个列表
    n = df.iloc[:,0:21].values.astype(float)
    # 按列读,一列为一个列表
    d = df1.iloc[:,0:21].values.astype(float)
    v = df2.iloc[:].values.astype(float)
    A = float(0.0052)
    t = float(60)
    ND = (n) / (A * t * v * d)
    df3 = pd.DataFrame(ND)
    sum_ND = df3.iloc[:,0:21].sum()
    # 把结果装入一个列表里方便计算后面的均值
    list.append(sum_ND)
    # print(list)

# 把列表放入dataframe里方便pandas操作计算均值
df4 = pd.DataFrame(list)
# 求所有时间,每个直径的均值
column_means_list = df4.mean().tolist()
print(column_means_list)

# 将结果写入excel
# 设置工作簿编码
f = xlwt.Workbook('encoding = utf-8')
# 创建sheet工作表
sheet1 = f.add_sheet('sheet1',cell_overwrite_ok=True)
for i in range(len(column_means_list)):
    # 写入数据参数对应 行, 列, 值
    sheet1.write(i,0,column_means_list[i])
# 保存.xls到当前工作目录
f.save('/lianxi/jieguo.xls')

 

posted @ 2024-05-06 09:35  秋刀鱼CCC  Views(88)  Comments(0Edit  收藏  举报