python众数,平均数,中位数实现代码(包括字典的使用)
2021/4/9 20:27:38
本文主要是介绍python众数,平均数,中位数实现代码(包括字典的使用),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
不使用numpy,用python实现判断一个列表中众数中位数和平均数
题目:
统计学家想要用一组函数巨酸一列数字的中位数和众数,中位数是将一个列表排序后出现在中间位置的数。众数是在列表中出现最频繁的数。在一个模块中定义这些函数。还要包含一个名为mean的函数,它计算一组数字的平均数。每个函数都接受数字的一个列表作为参数,并且返回一个单个的数字。
思路:
定义一个类,然后分别写一个排序函数,计算平均数的函数,计算中位数的函数,计算众数的函数。
排序:
用冒泡排序;
def sorting(self, list=[]): for i in range(len(list)): for j in range(len(list) - 1 - i): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j] return list
中位数:
当列表传入后初始化执行,排序函数,得到一个从小到大排序的列表,因此中位数是label处于中间的数值。列表的长度始终为整数,需要考虑奇偶的特性。
def median(self,list = []): n = len(list) if (n% 2) == 0: local = int(n/2) # 除法后数据类型为float else: local = int((n+1)/2) return list[local]
平均数:
就列表全部加和,除以列表的长度
def mean(self,list = []): sum = 0 for i in range(len(list)): sum += list[i] means = sum/len(list) return means
众数:
不使用numpy的api实现找众数。
主要的思路是遍历列表中的元素,查每一个元素的出现次数,创造一个字典,字典内容分别是元素和元素对应出现的次数。
使用max函数查找value中最大的值。
但是可能列表中存在两个元素出现次数相同且都为最大的情况,这种情况下应该将几个元素都筛选出来,而直接使用max函数和对应的key-value查找只能查找出其中遍历过程中最先出现的内容。因此遍历字典找到每一个出现次数最多的元素。
def mode(self,lists = []): dic = {} k = 1 for i in range(len(lists)): for j in range(len(lists)): if lists[j] == lists[j-1]: k += 1 else: dic[lists[j-1]] = k k = 1 value = max(dic.values()) max_list = [] for m, n in dic.items(): # 遍历字典一遍找对应的 key 值 print(m,n) if n == value: max_list.append(m) return value,max_list
全部代码
class Calculate(object): def __init__(self,lists = []): self.sorting(lists) def sorting(self, list=[]): for i in range(len(list)): for j in range(len(list) - 1 - i): if list[j] > list[j + 1]: list[j], list[j + 1] = list[j + 1], list[j] return list nums = 0 def median(self,list = []): n = len(list) if (n% 2) == 0: local = int(n/2) else: local = int((n+1)/2) return list[local] def mean(self,list = []): sum = 0 for i in range(len(list)): sum += list[i] means = sum/len(list) return means def mode(self,lists = []): dic = {} k = 1 for i in range(len(lists)): for j in range(len(lists)): if lists[j] == lists[j-1]: k += 1 else: dic[lists[j-1]] = k k = 1 print(dic) value = max(dic.values()) max_list = [] for m, n in dic.items(): # 遍历字典一遍找对应的 key 值 print(m,n) if n == value: max_list.append(m) return value,max_list
测试代码1:
s = Calculate() lists = [0,1,2,5,6,9,7,8,6,3,1,1,4,2,2,7,8,9,5,6,8,6,4,9,9,9,9,9,6,6,6] new_list = s.sorting(lists) print(new_list) means = s.mean(lists) print(means) medians = s.median(lists) print(medians) modes = s.mode(lists) print(modes)
结果1:
[0, 1, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9] 5.580645161290323 6 (7, [9, 6])
测试代码2:
s = Calculate() lists = [1,5,6,8,8,8,7,7,7,9,9,9,4,4,0,0,5,5,4] new_list = s.sorting(lists) print(new_list) means = s.mean(lists) print(means) medians = s.median(lists) print(medians) modes = s.mode(lists) print(modes)
结果2:
[0, 0, 1, 4, 4, 4, 5, 5, 5, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9] 5.578947368421052 7 (3, [9, 4, 5, 7, 8])
这篇关于python众数,平均数,中位数实现代码(包括字典的使用)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门