python创建一个类,这个类能给出数据的描述性统计
时间: 2023-06-04 19:02:46 浏览: 109
描述性统计
分析,如均值、中位数、众数、最大值、最小值、标准差等等。请问,如何实现这个类?
可以通过引入第三方库(如NumPy、Pandas)中的函数来计算描述性统计信息,也可以手写算法来实现。以下是一个手写算法的示例代码:
```
class DescriptiveStatistics:
def __init__(self, data):
self.data = data
def mean(self):
return sum(self.data) / len(self.data)
def median(self):
sorted_data = sorted(self.data)
if len(sorted_data) % 2 == 0:
return (sorted_data[len(sorted_data) // 2 - 1] + sorted_data[len(sorted_data) // 2]) / 2
else:
return sorted_data[len(sorted_data) // 2]
def mode(self):
modes = []
counts = {}
max_count = 0
for i in self.data:
if i not in counts:
counts[i] = 1
else:
counts[i] += 1
if counts[i] > max_count:
max_count = counts[i]
for key, value in counts.items():
if value == max_count:
modes.append(key)
return modes
def max(self):
return max(self.data)
def min(self):
return min(self.data)
def std(self):
mean = self.mean()
variance = sum([(i - mean) ** 2 for i in self.data]) / len(self.data)
return variance ** 0.5
```
使用示例:
```
data = [1, 3, 5, 7, 9, 3, 1, 3, 5, 7]
stat = DescriptiveStatistics(data)
mean = stat.mean()
print("Mean:", mean)
median = stat.median()
print("Median:", median)
modes = stat.mode()
print("Modes:", modes)
max = stat.max()
print("Max:", max)
min = stat.min()
print("Min:", min)
std = stat.std()
print("Standard deviation:", std)
```
阅读全文