Python Pandas 批量处理 CSV 文件:计算肿瘤和瘤周组织的特征中位数
Python Pandas 批量处理 CSV 文件:计算肿瘤和瘤周组织的特征中位数
本代码示例展示如何使用 Python 的 Pandas 库,批量处理文件夹内的多个 CSV 文件,计算每个文件内肿瘤和瘤周组织中每个特征的中位数,并将结果保存到新的 CSV 文件。
初始代码:
df = pd.read_csv('./2023_2_20No2/2023_2_20_19.csv', encoding='utf-8')
df = df.iloc[:, 1:33]
df_tumor = df[df['name'] == 'tumor']
df_peritumor = df[df['name'] == 'peritumor']
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
tumor_median = df_tumor_name.iloc[:, 2:33].median()
peritumor_median = df_peritumor_name.iloc[:, 2:33].median()
tumor_median_df = tumor_median.to_frame().transpose()
peritumor_median_df = peritumor_median.to_frame().transpose()
print(f'Tumor {name}: {tumor_median_df}')
print(f'Peritumor {name}: {peritumor_median_df}')
tumor_median_df.to_csv(f'./2023_2_20No2/tumor_median_{name}.csv', index=False)
peritumor_median_df.to_csv(f'./2023_2_20No2/peritumor_median_{name}.csv', index=False)
修改后的代码:
import os
import pandas as pd
folder_path = './2023_2_20No2'
files = os.listdir(folder_path)
for file_name in files:
if file_name.endswith('.csv'):
file_path = os.path.join(folder_path, file_name)
df = pd.read_csv(file_path, encoding='utf-8')
df = df.iloc[:, 1:33]
df_tumor = df[df['name'] == 'tumor']
df_peritumor = df[df['name'] == 'peritumor']
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
tumor_median = df_tumor_name.iloc[:, 2:33].median()
peritumor_median = df_peritumor_name.iloc[:, 2:33].median()
tumor_median_df = tumor_median.to_frame().transpose()
peritumor_median_df = peritumor_median.to_frame().transpose()
print(f'Tumor {name}: {tumor_median_df}')
print(f'Peritumor {name}: {peritumor_median_df}')
tumor_median_df.to_csv(f'./2023_2_20No2/tumor_median_{name}.csv', index=False)
peritumor_median_df.to_csv(f'./2023_2_20No2/peritumor_median_{name}.csv', index=False)
代码解释:
- 使用
os.listdir()获取指定文件夹内的所有文件。 - 使用
for循环遍历文件列表,判断文件是否为 CSV 文件。 - 对每个 CSV 文件进行读取、处理、计算和保存操作,与之前的代码逻辑一致。
注意:
- 请将代码中的
'./2023_2_20No2'替换为您的 CSV 文件所在文件夹路径。 - 确保文件夹内所有 CSV 文件的格式一致,包括特征名称和排列顺序。
- 如果您的 CSV 文件存在中文,请确保
encoding参数设置为'utf-8'或其他合适的编码方式。
使用此代码可以方便地对多个 CSV 文件进行批量处理,提高工作效率。
原文地址: https://www.cveoy.top/t/topic/kmHN 著作权归作者所有。请勿转载和采集!