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)

简化后的代码

上面的代码冗长且重复,可以通过循环和字典来简化。

  1. 使用循环遍历不同的property值 ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H')。
  2. 创建两个字典 tumor_dictperitumor_dict 用于存储不同类型肿瘤的中位数。
  3. 在循环中,根据property值筛选出相应的肿瘤数据,并计算其第2列到第33列的中位数,并将结果存入相应的字典中。

这段简化的代码不仅更简洁,而且更容易理解和维护。

总结

通过使用循环和字典,可以有效地简化 Pandas 数据处理代码,提高代码的可读性和可维护性。

提示

  • 可以使用更具描述性的变量名,例如 tumor_mediansperitumor_medians
  • 可以将计算中位数的代码封装成函数,以提高代码的可复用性。
Pandas 数据处理:利用循环和字典简化计算中位数

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

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