Python数据分析:灵活参数与条件逻辑的应用

35 阅读3分钟

简单数据分析函数

代码

'''
数据分析函数参数说明:
-main_data:位置参数,必须传入的主要数据分析列表
-*extra_data:可变长度的位置参数,可以传入若干个额外数据列表进行分析
-threshold:默认值参数,用于分析数据的阈值,默认为None时取main_data和extra_data之和的平均值
数据分析函数的返回值说明:
-total_sum:传入的所有数据的总和(包括main_data和extra_data)
-volatility:数据的波动指数(最大值和最小值的差)
-high_count:高于阈值的元素数量
'''
def data_analysis(main_data, *extra_data, threshold=None): #默认值为None,可以使得内部修正这个参数,和前面的参数相关
    all_data = main_data  # 将传入的主要数据分析列表赋值给all_data(所有数据)
    for data in extra_data:  # 遍历传入的所有额外数据列表
        all_data = all_data + data  # 将所有额外数据列表中的元素加到all_data中
    total_sum = sum(all_data)  # 计算all_data的总和

    #计算数据波动指数
    volatility = max(all_data) - min(all_data)

    if threshold is None:  # 如果没有传入阈值参数,则使用all_data的总和除以all_data的平均值作为阈值
        threshold = total_sum / len(all_data)  # 计算all_data的平均值并赋值给threshold
    # #high_count = 0
    #for data in all_data:  # 遍历all_data中的每个元素
    #    if data > threshold:  # 如果某个元素大于阈值
    #        high_count =high_count + 1  # 将加high_count1
    # 对于all_data中的每个元素,如果某个元素大于阈值,则它的值为1
    # 否则为0,这样最后再对这些1求和,就等于high_count
    high_count = sum(1 for data in all_data if data > threshold)

    return total_sum, volatility,high_count # 返回total_sum,volatility和high_count
# 调用data_analysis函数
total_sum, volatility,high_count = data_analysis([10, 20, 30], [5, 15] , [25, 35, 45], threshold=30)
print(f'所有数据的总和是{total_sum}')
print(f'数据波动指数是{volatility}')
print(f'高于阈值的元素数量是{high_count}')
print('-'*40)
total_sum, volatility,high_count = data_analysis([10, 20, 30], [5, 15] , [25, 35, 45])
print(f'所有数据的总和是{total_sum}')
print(f'数据波动指数是{volatility}')
print(f'高于阈值的元素数量是{high_count}')

代码结果

1.png

代码分析

  • 函数使用了灵活的参数设计:位置参数、可变参数和默认参数
  • 通过*extra_data接收任意数量的额外数据列表,提高了函数的灵活性
  • 阈值参数threshold有默认值None,当不提供时会自动计算平均值作为阈值
  • 使用生成器表达式sum(1 for data in all_data if data > threshold)高效计算高于阈值的元素数量
  • 函数返回三个统计量:总和、波动指数和高阈值数量,满足多维度分析需求

简单数据分析(包调用)

代码

from package1.module1 import data_analysis
# 调用data_analysis函数
total_sum, volatility,high_count = data_analysis([10, 20, 30], [5, 15] , [25, 35, 45], threshold=30)
print(f'所有数据的总和是{total_sum}')
print(f'数据波动指数是{volatility}')
print(f'高于阈值的元素数量是{high_count}')
print('-'*40)
total_sum, volatility,high_count = data_analysis([10, 20, 30], [5, 15] , [25, 35, 45])
print(f'所有数据的总和是{total_sum}')
print(f'数据波动指数是{volatility}')
print(f'高于阈值的元素数量是{high_count}')

代码结果

2.png

代码分析

  • 展示了如何将函数封装在包中进行调用,体现了模块化编程思想
  • package1.module1导入data_analysis函数,保持了代码的整洁性
  • 两次调用展示了不同参数设置下的结果对比,验证了函数的灵活性
  • 结果与直接调用函数一致,证明了封装的有效性