python求平均值函数_python 求均值、中位数、众数的方法

看了n久的python,可当解决实际项目问题去搜寻众多API解释时,使用何种方法合适,还是毫无方向。度娘还是最好的帮手,找到目标博案后再结合原版的API解释去理解,更为直观有效些。

今天记录一下求均值、中位数、众数的方式

nums = [0,4,5,8,8]

#求均值和中位数均可以使用numpy库的方法:

import numpy as np

#均值

np.mean(nums)

#中位数

np.median(nums)

#求均值和中位数均也可以使用panda库的方法:

import panda as pd

gm = pd.Series(data=nums)

#均值

gm.mean()

#中位数

gm.median()求众数方法一:

在numpy中没有直接的方法,但是也可以这样实现:

import numpy as np

#获取平铺后每个索引位置值在原始数列中出现的次数

counts = np.bincount(nums)

#返回众数 返回最大值在数列中的索引位置

np.argmax(counts)

其中np.bincount方法返回了一个长度为nums最大值的列表

即 [0,4,5,8,8] ——> bincount 返回 长度为8的列表

[1,0,0,0,1,1,0,0,2] 也就是把0-8平铺到列表里,然后对0-8的每个数字计数

此处0、4、5各为1次,所以在返回的列表内的对应索引位置显示为1

8为2次,即索引8的位置显示2

其中np.argmax方法返回数列中最大值的索引位置。

即[1,0,0,0,1,1,0,0,2] ——> 最大值2的索引位置为8

求众数方法二——直接利用scipy下stats模块:

from scipy import stats

nums = [0,4,5,8,8]

stats.mode(nums)[0][0]

求众数方法三——panda下mode()方法直接获取众数:

import pandas as pd

v = [3,5,6,2,6,9]

gm = pd.Series(data=v)

gm.mode()[0]

这里都运用了第三方的统计数据类包 panda、scipy、numpy

对于数据分析师而言都是必须掌握的工具包,api繁多,任重而道远

笔者还未接触过scipy,此处是对scipy的浅显的理解:

scipy包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,统计,特殊函数等等。

scipy是Python中科学计算程序的核心包; 它用于有效地计算numpy矩阵,来让numpy和scipy协同工作。

下载安装:Mac 终端

命令:pip install wheel

命令:shenjiaming$ sudo pip3 install -U numpy scipy

Python的Pandas库中,你可以使用`DataFrame`的内置函数来轻松计算各种统计数据。以下是如何获取你提到的各种统计量: 1. **平均值 (均值)**: 使用 `mean()` 函数,它返回每列的平均值。 ```python df['column_name'].mean() ``` 2. **中位数**: 使用 `median()` 函数,它计算的是数值型列的中位数。 ```python df['column_name'].median() ``` 3. **众数 (出现频率最高的值)**: 使用 `mode()` 函数,适用于分类变量,如果数据是连续的可以用 `value_counts(normalize=True).idxmax()` 来找到最常出现的值。 ```python df['column_name'].mode().values[0] 或 df['column_name'].value_counts(normalize=True).idxmax() ``` 4. **中位数绝对偏差 (Median Absolute Deviation, MAD)**: 如果你想得到非对称分布数据的离散度测量,可以使用 `mad()` 函数。 ```python from scipy.stats import mad mad_value = mad(df['column_name']) ``` 5. **极差 (Range)**: 通过最大值减去最小值获得。 ```python df['column_name'].max() - df['column_name'].min() ``` 6. **四分位数 (Quartiles)**: 可以使用 `quantile()` 函数,设置 `q=[0.25, 0.5, 0.75]` 分别获取第一四分位数(Q1), 中位数(Median) 和第三四分位数(Q3)。 ```python q1, median, q3 = df['column_name'].quantile([0.25, 0.5, 0.75]) ``` 7. **四分位数范围 (Interquartile Range, IQR)**: 第三四分位数减去第一四分位数。 ```python iqr = q3 - q1 ``` 记得将 `'column_name'` 替换为你实际需要计算的列名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值