Skip to content
Advertisement

TypeError: Mean() missing 1 required positional argument: ‘data’

I’m trying to program a basic mean calculator using classes. However, I’m getting the error

TypeError: Mean() missing 1 required positional argument: 'data'

I have two files: one which contains the class with the mean function and then one which calls it, and that is when I’m getting the error. My code is:

class Statistics:
    def __init__(self,mean_x,mean_y,var,covar):
        self.mean_x=mean_x
        self.mean_y=mean_y
        self.var=var
        self.covar=covar
    
    def Mean(self,data):
        return sum(data)/float(len(data))

And the code which throws the error is:

from Statistics import Statistics 
X=(0,1,3,5)
mean_x=Statistics.Mean(X)
print(mean_x)

Advertisement

Answer

Mean is an instance method, so you need to call it on an instance (which will become the self argument for the method invocation).

statistics = Statistics(None, None, None, None)
mean_x = statistics.Mean((0, 1, 3, 5))

Since the parameters on Statistics.__init__ aren’t used I’d suggest removing them (or just removing the __init__ altogether):

class Statistics:
   
    def mean(self, data):
        return sum(data)/float(len(data))
from Statistics import Statistics 
X = (0,1,3,5)
statistics = Statistics()
mean_x = statistics.mean(X)
print(mean_x)

Note that Python comes with a statistics module that has a mean function built in:

import statistics

X = (0,1,3,5)
mean_x = statistics.mean(X)
print(mean_x)
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement