前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas 和 Numpy 中的统计

Pandas 和 Numpy 中的统计

作者头像
杨丝儿
发布2022-02-18 14:32:00
2.8K0
发布2022-02-18 14:32:00
举报
文章被收录于专栏:杨丝儿的小站杨丝儿的小站

数值型描述统计

算数平均值

S = [s_1, s_2, ..., s_n]

样本中的每个值都是真值与误差的和。

mean = \frac{(s_1 + s_2 + ... + s_n) }{n}

算数平均值表示对真值的无偏估计。

代码语言:javascript
复制
m = np.mean(array)
m = array.mean()
m = df.mean(axis=0)

案例:针对电影评分数据做均值分析:

代码语言:javascript
复制
mean = ratings['John Carson'].mean()
mean = np.mean(ratings['John Carson'])
means = ratings.mean(axis=1)

加权平均值

求平均值时,考虑不同样本的重要性,可以为不同的样本赋予不同的权重。

样本:S = [s_1, s_2, s_3 ... s_n]

权重:W =[w_1, w_2, w_3 ... w_n]

加权平均值:

a = \frac{s_1w_1 + s_2w_2 + ... + s_nw_n}{w_1+w_2+...+w_n}

代码实现:

代码语言:javascript
复制
a = np.average(array, weights=volumes)

案例:自定义权重,求加权平均。

代码语言:javascript
复制
# 加权均值
w = np.array([3,1,1,1,1,1,1])
np.average(ratings.loc['Inception'], weights=w)

mask = ~pd.isna(ratings.loc['Inception']) 
np.average(ratings.loc['Inception'][mask], weights=w[mask])

最值

np.max() / np.min() / np.ptp():返回一个数组中最大值/最小值/极差(最大值减最小值)

代码语言:javascript
复制
import numpy as np
# 产生9个介于[10, 100)区间的随机数
a = np.random.randint(10, 100, 9)
print(a)
print(np.max(a), np.min(a), np.ptp(a))

np.argmax() np.argmin()pd.idxmax() pd.idxmin(): 返回一个数组中最大/最小元素的下标

代码语言:javascript
复制
# 在np中,使用argmax获取到最大值的下标
print(np.argmax(a), np.argmin(a))

# 在pandas中,使用idxmax获取到最大值的下标
print(series.idxmax(), series.idxmin())
print(dataframe.idxmax(), dataframe.idxmin())

中位数

将多个样本按照大小排序,取中间位置的元素。

若样本数量为奇数,中位数为最中间的元素

[1, 2000, 3000, 4000, 10000000]

若样本数量为偶数,中位数为最中间的两个元素的平均值

[1,2000,3000,4000,5000,10000000]

案例:分析中位数的算法,测试numpy提供位数API

代码语言:javascript
复制
np.median()  中位数

import numpy as np
closing_prices = np.loadtxt('../../data/aapl.csv', 
	delimiter=',', usecols=(6), unpack=True)
size = closing_prices.size
sorted_prices = np.msort(closing_prices)
median = (sorted_prices[int((size - 1) / 2)] + 
          sorted_prices[int(size / 2)]) / 2
print(median)
median = np.median(closing_prices)
print(median)

标准差

?可以评估一组数据的震荡幅度,到底稳定不稳定

样本(sample): S = [s_1, s_2, s_3, ..., s_n]

平均值: m = \frac{s_1 + s_2 + s_3 + ... + s_n}{n}

离差(deviation):表示某组数据距离某个中心点的偏离程度 D = [d_1, d_2, d_3, ..., d_n] d_i = S_i-m 用每一个数据,减去均值,得到离差 如果离差的绝对值比较大,距离中心点比较远,所以震荡幅度大 离差有正有负,做离差方,将其全都变成正数

离差方: Q = [q_1, q_2, q_3, ..., q_n] q_i=d_i^2

总体方差(variance): v = \frac{(q_1+q_2+q_3 + ... + q_n)}{n} 最整组离差方 , /n 得到离差的均值,为方差 方差越大,震荡越剧烈 方差越小,震荡越平缓

总体标准差(standard deviation): s = \sqrt{v}

样本方差: v' = \frac{(q_1+q_2+q_3 + ... + q_n)}{n-1} , v = \frac{(q_1+q_2+q_3 + ... + q_n)}{n} 其中,n-1称之为“贝塞尔校正”,这是因为抽取样本时候,采集的样本主要是落在中心值附近,那么通过这些样本计算的方差会小于等于对总体数据集方差的无偏估计值。为了能弥补这方面的缺陷,那么我们把公式的n改为n-1,以此来提高方差的数值。称为贝塞尔校正系数。

样本标准差: s' = \sqrt{v'}

案例: 根据标准差理论,针对评分数据进行方差分析:

代码语言:javascript
复制
ratings.std(axis=0)
本文参与?腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体同步曝光计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数值型描述统计
    • 算数平均值
      • 加权平均值
        • 最值
          • 中位数
            • 标准差
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com