import pandas as pd
import os

# 获取文件夹内所有csv文件的路径
folder_path = './2023_2_20No2'
csv_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.csv')]

# 对每一个csv文件进行处理
for csv_file in csv_files:
    # 读取csv文件
    df = pd.read_csv(csv_file, encoding='utf-8')
    df = df.iloc[:, 1:18]
    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
        median = df_tumor_name.iloc[:, 2:33].median()
        print(f'Tumor {name}: {median}')
        
        # 将计算的结果保存到该文件夹内
        output_path = os.path.join(folder_path, f'{os.path.splitext(os.path.basename(csv_file))[0]}_{name}_median.csv')
        median.to_csv(output_path)

该代码片段演示了如何使用 Python Pandas 库批量读取文件夹内所有 CSV 文件,并对每个文件进行数据处理,计算特定列的中位数,并保存结果到相同文件夹。

步骤

  1. 获取文件夹内所有 CSV 文件的路径:

    • 使用 os.listdir() 获取文件夹内的所有文件名称。
    • 使用 os.path.join() 将文件名与文件夹路径拼接成完整路径。
    • 使用 f.endswith('.csv') 筛选出以 .csv 结尾的文件。
  2. 对每一个 CSV 文件进行处理:

    • 使用 pd.read_csv() 读取 CSV 文件。
    • 选择所需数据列(df = df.iloc[:, 1:18])。
    • 筛选 tumorperitumor 数据。
    • 使用循环遍历 ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],对每个类别进行计算。
    • 使用 df_tumor_name.iloc[:, 2:33].median() 计算中位数。
    • 使用 f'Tumor {name}: {median}' 打印计算结果。
  3. 将计算的结果保存到该文件夹内:

    • 使用 os.path.splitext(os.path.basename(csv_file))[0] 获取文件名(不含扩展名)。
    • 使用 os.path.join() 拼接输出文件路径。
    • 使用 median.to_csv() 将中位数结果保存到 CSV 文件。

代码解释

  • os.path.basename(csv_file):返回文件路径中的文件名部分。
  • os.path.splitext(os.path.basename(csv_file))[0]:将文件名拆分为文件名和扩展名,返回文件名部分。
  • f'{os.path.splitext(os.path.basename(csv_file))[0]}_{name}_median.csv':使用 f-string 格式化字符串,构建输出文件名。
  • median.to_csv(output_path):将中位数结果保存到 CSV 文件。

注意

  • 代码中的 folder_pathdf.iloc[:, 1:18] 需要根据实际情况进行修改。
  • 代码假设 CSV 文件包含 nameproperty 列,并且每个 CSV 文件中都包含 tumorperitumor 数据。
  • 代码中使用 median() 函数计算中位数,可以使用其他统计函数计算其他统计指标。

示例

假设文件夹 ./2023_2_20No2 中包含以下 CSV 文件:

  • 2023_2_20_19.csv
  • 2023_2_20_20.csv

执行代码后,该文件夹中会新增以下 CSV 文件:

  • 2023_2_20_19_A_median.csv
  • 2023_2_20_19_B_median.csv
  • ...
  • 2023_2_20_20_A_median.csv
  • 2023_2_20_20_B_median.csv
  • ...

每个 CSV 文件包含 tumor 数据中对应类别 ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] 的中位数。

Python Pandas 批量处理 CSV 文件并计算中位数

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

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