制作一个数据分析器 class,它在初始化时将数据列表作为参数

Make a data profiler class that takes as params on the init a list of data

我需要这个 class 来包含以下仅使用 self 的方法:

  1. get_summary_stats: 应该计算平均值、最小值和最大值。
  2. min_max_scale:将数组转换为0-1值。
  3. score_scale:将数组转换为zscores。

我正在尝试这种方式,但没有成功,当你 运行 它顺利通过但是当我添加最后一行时它给我一个错误说 __init__() takes 1 positional argument but 2 were given

class summary_stats_class():
    
    def __init__(self):
        min_my_list  = min(self)
        max_my_list  = max(self)
        mean_my_list = sum(self)/len(self)
        std_my_list = np.std(self)
    def get_summary_stats(self):
        print(min_my_list,max_my_list,mean_my_list)
        
    def min_max_scale(self):
        print((i - min_my_list) / (max_my_list-mean_my_list) for i in self)
    
    def zscore_scale(self):
        print((i - mean_my_list) / std_my_list for i in self)
summary_stats_class([1,2,3,4,5,6,7,8,9,10])

我试过了 1)将 list 添加到 summary_stats_class(list) 因为我在其他问题中阅读过它,以及 2) 在 __init__ 块之后添加 self.list = [] 最后 3)在没有任何运气的情况下向每种方法添加,*args,**kwargs,有人可以帮忙吗?提前致谢!

self用来表示class级变量。 documentation on classes 有一些示例展示了如何使用 self 声明实例变量并在 class 方法中使用它们。

我已经更新了 class 以减轻错误:

import numpy as np


class summary_stats_class():

    def __init__(self, data):
        self.data = data
        self.min_data = min(data)
        self.max_data = max(data)
        self.mean_data = sum(data) / len(data)
        self.std_data = np.std(data)

    def get_summary_stats(self):
        return self.min_data, self.max_data, self.mean_data

    def min_max_scale(self):
        return [(i - self.min_data) / (self.max_data - self.min_data) for i in
                self.data]

    def zscore_scale(self):
        return [(i - self.mean_data) / self.std_data for i in self.data]


if __name__ == "__main__":
    ssc = summary_stats_class([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(ssc.get_summary_stats())
    print(ssc.min_max_scale())
    print(ssc.zscore_scale())

输出:

(1, 10, 5.5)
[0.0, 0.1111111111111111, 0.2222222222222222, 0.3333333333333333, 0.4444444444444444, 0.5555555555555556, 0.6666666666666666, 0.7777777777777778, 0.8888888888888888, 1.0]
[-1.5666989036012806, -1.2185435916898848, -0.8703882797784892, -0.5222329678670935, -0.17407765595569785, 0.17407765595569785, 0.5222329678670935, 0.8703882797784892, 1.2185435916898848, 1.5666989036012806]

解释:

  • 我们在创建 class summary_stats_classssc 对象时将列表作为参数传递。
  • summary_stats_class的构造函数中,我们将参数列表设置为self.data变量。
  • 然后我们计算了数据的最小值、最大值和平均值,并分别设置为self.min_dataself.max_dataself.mean_data。我们将它们设置为 self 以便可以从 class.
  • 的任何其他方法中使用这些变量
  • get_summary_statsmin_max_scalezscore_scale方法中,我们使用了之前使用self.VARIABLE_NAME计算的变量。

参考文献: