获取数据中位数

代码:
image.png

出现错误:


image.png

原因:列表索引必须是整数,而不能是浮点数。python中x/y不是整除,只保留整数应该是x//y。/ 除 ,% 取模(取余) ,// 取整。

更改后代码:

Numbers = [1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 63, 64, 65, 67, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 959]
length=len(Numbers)
if length%2==0:
    mie=(Numbers[length//2]+Numbers[(length//2)-1])/2
else:
    mie=Numbers[(length-1)//2]
print(f"中位数为{mie}")

参考代码:

# 创建列表Numbers
Numbers = [1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 63, 64, 65, 67, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 959]

# TODO 使用len()函数获取列表Numbers的长度,并赋值给length
length = len(Numbers)

# 通过取模运算,判断length是奇数还是偶数
# TODO 如果取模运算返回余数为1,则长度是奇数
if (length % 2) == 1:
    # TODO 通过整除运算,获取Numbers里中位数所在的索引,并赋值给n
    n = len(Numbers)//2
    # TODO 通过索引[n],获取Numbers的中位数,并赋值给Median
    Median = Numbers[n]
    # TODO 格式化输出:收入中位数为{Median}
    print(f"收入中位数为{Median}")


# TODO 否则,长度是偶数
else:
    # TODO 通过整除运算,获取Numbers里中间第二个数所在的索引,并赋值给n
    n = len(Numbers) // 2
    # TODO 通过索引[n-1]和[n],获取Numbers里中间两个数,并计算它们的均值
    # 即中位数,将结果赋值给Median
    Median = (Numbers[n]+Numbers[n-1])/2
    # TODO 格式化输出:收入中位数为{Median}
print(f"收入中位数为{Median}")

注意:print(f" ") 主要作用就是格式化字符串,加上f以后,{“变量/表达式”},花括号里的变量和表达式就可以使用了。以 f 开头,包含的{}表达式在程序运行时会被表达式的值代替,如果字符串里面没有表达式,那么前面加不加f输出应该都一样。
pandas函数只能用于series和dataframe的运算,numpy用于数组运算。

方法2:

import numpy as np
Numbers = [1, 50, 51, 52, 53, 54, 55, 56, 57, 58, 60, 61, 63, 64, 65, 67, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 959]
num=np.array(Numbers)
mie=np.median(num)
print(mie)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容