Python Pandas 批量计算 CSV 文件中肿瘤数据的中位数
Python Pandas 批量计算 CSV 文件中肿瘤数据的中位数
本代码使用 Python Pandas 库批量处理多个 CSV 文件,计算每个文件中特定条件下的肿瘤数据的中位数,并保存到单独的 CSV 文件中。
代码示例
import pandas as pd
import os
# 读取文件夹中的所有csv文件
folder_path = './test1/'
csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
# 定义需要筛选的列名
column_names = ['name', 'property']
# 遍历每个csv文件并计算中位数
for file_name in csv_files:
file_path = os.path.join(folder_path, file_name)
df = pd.read_csv(file_path)
df = df.iloc[:,1:33]
df_tumor = df[df['name'] == 'tumor']
tumor_dict = {}
for name in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']:
df_tumor_name = df_tumor[df_tumor['property'] == name]
tumor_dict[name] = df_tumor_name
medians = tumor_dict[name].median()
output_file_name = os.path.splitext(file_name)[0] + f'_medians_{name}.csv'
output_file_path = os.path.join(folder_path, output_file_name)
pd.DataFrame(medians).to_csv(output_file_path, index=False)
代码分析
- 读取 CSV 文件: 代码首先使用
os.listdir()函数列出指定文件夹中的所有文件,并筛选出以.csv结尾的文件,即 CSV 文件。 - 筛选数据: 代码定义了需要筛选的列名
column_names,并从每个 CSV 文件中读取数据,筛选出name列值为'tumor'的数据,并将其保存在df_tumor中。 - 计算中位数: 代码遍历每个 CSV 文件,并针对每个
'property'列的取值 (A, B, C... H) 计算中位数。 - 保存中位数: 代码将每个
'property'列的取值对应的中位数保存到单独的 CSV 文件中,文件名包含原始文件名和'property'值。
总结
这段代码通过使用 Pandas 库,可以快速高效地批量处理多个 CSV 文件,计算特定条件下的肿瘤数据的中位数,并将其保存到单独的 CSV 文件中。
原文地址: https://www.cveoy.top/t/topic/kjbY 著作权归作者所有。请勿转载和采集!