import os import glob import numpy as np import pandas as pd

def calculate_conductivity(df, df_saline_median): conductivity_list = [976, 1987, 3850, 5650, 7450, 9238] conductivity_list.reverse() result = [] for i in range(len(freq_list)): ans = df_saline_median.iloc[:, i:i + 1] ans = ans.values.tolist() new_ans = sorted([ans[j][0] for j in range(len(ans))]) result.append(np.interp(df.iloc[:, i + 2:i + 3].median(), new_ans, conductivity_list)) return result

freq_list = [1, 2, 3, 7, 11, 17, 23, 31, 43, 61, 89, 127, 179, 251, 349] conductivity_list = [976, 1987, 3850, 5650, 7450, 9238] conductivity_list.reverse()

folder_path = './2023_2_20No2/'

for file_path in glob.glob(folder_path + '*.csv'): # 读取csv文件 df = pd.read_csv(file_path, encoding='utf-8') df = df.iloc[:, 1:18] df_tumor = df[df['name'] == 'tumor'] df_peritumor = df[df['name'] == 'peritumor'] df['name'] = df['name'] + df['property'] tumor_dict = {} peritumor_dict = {} for name in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']: df_tumor_name = df_tumor[df_tumor['property'] == name] df_peritumor_name = df_peritumor[df_peritumor['property'] == name] tumor_dict[name] = df_tumor_name peritumor_dict[name] = df_peritumor_name concentration_list = ['saline0.05%', 'saline0.10%', 'saline0.20%', 'saline0.30%', 'saline0.40%', 'saline0.50%'] df_saline_median = pd.DataFrame(columns=['1kHz_mag', '2kHz_mag', '3kHz_mag', '7kHz_mag', '11kHz_mag', '17kHz_mag', '23kHz_mag', '31kHz_mag', '43kHz_mag', '61kHz_mag', '89kHz_mag', '127kHz_mag', '179kHz_mag', '251kHz_mag', '349kHz_mag']) for i in concentration_list: saline_group = df[df['name'] == i] saline_median = saline_group[['1kHz_mag', '2kHz_mag', '3kHz_mag', '7kHz_mag', '11kHz_mag', '17kHz_mag', '23kHz_mag', '31kHz_mag', '43kHz_mag', '61kHz_mag', '89kHz_mag', '127kHz_mag', '179kHz_mag', '251kHz_mag', '349kHz_mag']].median() df_saline_median.loc[i] = saline_median for name in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']: tumor_result = calculate_conductivity(tumor_dict[name], df_saline_median) tumor_result = ' '.join(str(i[0]) for i in tumor_result) print(f'Tumor {name}: {tumor_result}') peritumor_result = calculate_conductivity(peritumor_dict[name], df_saline_median) peritumor_result = ' '.join(str(i[0]) for i in peritumor_result) print(f'Peritumor {name}: {peritumor_result}') # 将计算所得的数据保存在同一文件夹中 file_name = os.path.basename(file_path) new_file_name = file_name.split('.')[0] + '_result.csv' result_path = os.path.join(folder_path, new_file_name) with open(result_path, 'w') as f: f.write(f'Tumor A,Tumor B,Tumor C,Tumor D,Tumor E,Tumor F,Tumor G,Tumor H\n') f.write(f'{tumor_result}\n') f.write(f'Peritumor A,Peritumor B,Peritumor C,Peritumor D,Peritumor E,Peritumor F,Peritumor G,Peritumor H\n') f.write(f'{peritumor_result}\n') print(f'计算结果已保存至{result_path}')

Python CSV文件数据处理及电导率计算

原文地址: https://www.cveoy.top/t/topic/jL9C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录