Python Pandas 批量处理 CSV 文件并计算中位数
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 文件,并对每个文件进行数据处理,计算特定列的中位数,并保存结果到相同文件夹。
步骤
-
获取文件夹内所有 CSV 文件的路径:
- 使用
os.listdir()获取文件夹内的所有文件名称。 - 使用
os.path.join()将文件名与文件夹路径拼接成完整路径。 - 使用
f.endswith('.csv')筛选出以.csv结尾的文件。
- 使用
-
对每一个 CSV 文件进行处理:
- 使用
pd.read_csv()读取 CSV 文件。 - 选择所需数据列(
df = df.iloc[:, 1:18])。 - 筛选
tumor和peritumor数据。 - 使用循环遍历
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],对每个类别进行计算。 - 使用
df_tumor_name.iloc[:, 2:33].median()计算中位数。 - 使用
f'Tumor {name}: {median}'打印计算结果。
- 使用
-
将计算的结果保存到该文件夹内:
- 使用
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_path和df.iloc[:, 1:18]需要根据实际情况进行修改。 - 代码假设 CSV 文件包含
name和property列,并且每个 CSV 文件中都包含tumor和peritumor数据。 - 代码中使用
median()函数计算中位数,可以使用其他统计函数计算其他统计指标。
示例
假设文件夹 ./2023_2_20No2 中包含以下 CSV 文件:
2023_2_20_19.csv2023_2_20_20.csv
执行代码后,该文件夹中会新增以下 CSV 文件:
2023_2_20_19_A_median.csv2023_2_20_19_B_median.csv- ...
2023_2_20_20_A_median.csv2023_2_20_20_B_median.csv- ...
每个 CSV 文件包含 tumor 数据中对应类别 ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] 的中位数。
原文地址: https://www.cveoy.top/t/topic/kjpD 著作权归作者所有。请勿转载和采集!