Pandas 数据处理:利用循环和字典简化计算中位数
Pandas 数据处理:利用循环和字典简化计算中位数
在使用 Pandas 进行数据处理时,经常需要对不同条件下的数据进行统计分析。例如,计算不同类型肿瘤细胞的特定特征的中位数。
原始代码
df = pd.read_csv("./2023_2_20No2/2023_2_20_19.csv", encoding='utf-8')
df = df.iloc[:, 1:18]
df_tumor = df[df['name'] == 'tumor']
df_peritumor = df[df['name'] == 'peritumor']
df['name'] = df['name'] + df['property']
df_tumor_A = df_tumor[df_tumor['property'] == 'A']
df_tumor_B = df_tumor[df_tumor['property'] == 'B']
df_tumor_C = df_tumor[df_tumor['property'] == 'C']
df_tumor_D = df_tumor[df_tumor['property'] == 'D']
df_tumor_E = df_tumor[df_tumor['property'] == 'E']
df_tumor_F = df_tumor[df_tumor['property'] == 'F']
df_tumor_G = df_tumor[df_tumor['property'] == 'G']
df_tumor_H = df_tumor[df_tumor['property'] == 'H']
df_peritumor_A = df_peritumor[df_peritumor['property'] == 'A']
df_peritumor_B = df_peritumor[df_peritumor['property'] == 'B']
df_peritumor_C = df_peritumor[df_peritumor['property'] == 'C']
df_peritumor_D = df_peritumor[df_peritumor['property'] == 'D']
df_peritumor_E = df_peritumor[df_peritumor['property'] == 'E']
df_peritumor_F = df_peritumor[df_peritumor['property'] == 'F']
df_peritumor_G = df_peritumor[df_peritumor['property'] == 'G']
df_peritumor_H = df_peritumor[df_peritumor['property'] == 'H']
# 如何简化这段代码使得能够分别计算出df_tumor_A等等变量第2列到第33列的中位数内容:可以使用循环和字典来简化代码,如下所示:
df = pd.read_csv("./2023_2_20No2/2023_2_20_19.csv", 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 prop in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']:
tumor_prop = df_tumor[df_tumor['property'] == prop]
peritumor_prop = df_peritumor[df_peritumor['property'] == prop]
tumor_dict[prop] = tumor_prop.iloc[:, 1:34].median()
peritumor_dict[prop] = peritumor_prop.iloc[:, 1:34].median()
# 打印结果
print("Tumor median values:")
print(tumor_dict)
print("Peritumor median values:")
print(peritumor_dict)
简化后的代码
上面的代码冗长且重复,可以通过循环和字典来简化。
- 使用循环遍历不同的
property值 ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H')。 - 创建两个字典
tumor_dict和peritumor_dict用于存储不同类型肿瘤的中位数。 - 在循环中,根据
property值筛选出相应的肿瘤数据,并计算其第2列到第33列的中位数,并将结果存入相应的字典中。
这段简化的代码不仅更简洁,而且更容易理解和维护。
总结
通过使用循环和字典,可以有效地简化 Pandas 数据处理代码,提高代码的可读性和可维护性。
提示
- 可以使用更具描述性的变量名,例如
tumor_medians和peritumor_medians。 - 可以将计算中位数的代码封装成函数,以提高代码的可复用性。
原文地址: https://www.cveoy.top/t/topic/kjhl 著作权归作者所有。请勿转载和采集!