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)

代码解释:

  1. 使用 os.listdir() 获取指定文件夹内的所有文件。
  2. 使用 for 循环遍历文件列表,判断文件是否为 CSV 文件。
  3. 对每个 CSV 文件进行读取、处理、计算和保存操作,与之前的代码逻辑一致。

注意:

  • 请将代码中的 './2023_2_20No2' 替换为您的 CSV 文件所在文件夹路径。
  • 确保文件夹内所有 CSV 文件的格式一致,包括特征名称和排列顺序。
  • 如果您的 CSV 文件存在中文,请确保 encoding 参数设置为 'utf-8' 或其他合适的编码方式。

使用此代码可以方便地对多个 CSV 文件进行批量处理,提高工作效率。

Python Pandas 批量处理 CSV 文件:计算肿瘤和瘤周组织的特征中位数

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

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