Python统计初步

文章目录

    • 基本统计特征
    • 区间统计
    • Pandas
    • pandasGUI

Python科学计算:数组💯数据生成💯数据交互💯微积分💯插值💯拟合💯FFT💯卷积💯滤波

基本统计特征

分析统计特征是数据分析的重要一环,numpy自然不会在这个领域缺席,提供了提供了一系列统计函数,如表所示。

类别函数
最值amin, min ∗ ^* , amax, max ∗ ^* , 极差ptp
分位数quantile ∗ ^* ,
统计量中位数median ∗ ^* ;平均数mean ∗ ^* ;变化幅度var;加权平均average
标准差std;协方差cov;相关系数corrcoef
其他相乘求和correlate;连乘prod;梯形求和trapz

其中,标有星号*的表示存在一个nan开头的同名函数,可以忽略非有效值,例如【sum】对应【nansum】。这些概念基本都是中学时就已经有所了解的,但协方差、相关系数涉及到多组数据,在此稍微复习一下。

对于 X , Y X, Y X,Y两组样本,其协方差可以表示为

c o v ( X , Y ) = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) n − 1 cov(X,Y) = \frac{\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y)}{n-1} cov(X,Y)=n1i=1n(xixˉ)(yiyˉ)

【cov】作为协方差函数,得到的是一个矩阵,分别用于描述 X ∼ X , X ∼ Y , Y ∼ X , Y ∼ Y X\sim X, X\sim Y, Y\sim X, Y\sim Y XX,XY,YX,YY这四对协方差。

在理解协方差与方差之后,就可以理解相关系数,记 C i j C_{ij} Cij为第 i i i和第 j j j列数组之间的协方差,那么相关系数可表示为

R i j = C i j C i i C j j R_{ij}=\frac{C_{ij}}{\sqrt{C_{ii}C_{jj}}} Rij=CiiCjj Cij

可见,当 i = = j i==j i==j时,数组与其自身的相关系数为1,可以用下面的代码测试一下。

import numpy as np
x = np.arange(10)
np.corrcoef(x,x[::-1])

区间统计

如果将样本的取值范围划分成特定的几个区间,并统计落入每个区间的值的个数,就可以得到一个图,此即数据直方图,【plt】中提供了【hist】函数,可以直接出图,示例如下

import matplotlib.pyplot as plt
np.random.seed(42)
x = np.random.normal(size=(1000))
y,b,_ = plt.hist(x, bins=20)
plt.show()

其中,bins表示区间个数,返回值 y y y表示每个区间的元素个数, b b b表示区间的节点,20个区间共有21个节点。绘图结果如下,其横坐标的确被分成了20份。

在这里插入图片描述

【histogram】是numpy中的直方图函数,这个函数只有两个返回值 y , b y,b y,b,结果与plt.hist完全相同,但不会画出图像。除了待统计数组和指定区间个数外,histogram还有下列参数可以设置

  • range 表示统计区域,例如[0,1]表示统计从0到1的值
  • weights 表示数组权重
  • density 为True时,返回概率密度;为False时,返回元素个数

numpy中还提供了二维直方图histogram2d和高维直方图histogramdd,使用方法大同小异。

Pandas

【Pandas】是Python专业的统计模块,以数据框【DataFrame】这种表格类型为核心对象,使得数据统计更加便捷,提供了类似Excel、SAS之类的操作体验,示例如下。

import numpy as np
import pandas as pd

s = pd.Series(range(5))
dates = pd.date_range('20221201', periods=3)

data = np.random.randn(3, 4)
df = pd.DataFrame(data, index=dates, columns=list('ABCD'))

其中, s s s是一个序列,dates是一个日期时间索引,二者同为Pandas的数据类型,均类似于一维数组,比较简单。

【df】就是数据框,其构造函数中,第一项是数据,index为行索引,column为表头。数据框中封装了许多方法,诸如sum, mean等,用以获取统计信息,但最快捷的,还是describe函数,可以一次性给出多种统计特征,示例如下

>>> df.describe()
              A         B         C         D
count  3.000000  3.000000  3.000000  3.000000
mean  -0.406763 -0.490002  0.682413 -0.182096
std    0.454428  0.144518  0.481390  0.338844
min   -0.930670 -0.581243  0.128678 -0.391708
25%   -0.550449 -0.573315  0.522944 -0.377557
50%   -0.170229 -0.565386  0.917209 -0.363407
75%   -0.144809 -0.444382  0.959280 -0.077290
max   -0.119389 -0.323378  1.001352  0.208826

此外,还封装了各种排序方案,甚至可以画图。

# 此为按列(axis=0时为按行)进行由大到小的排序
df.sort_index(axis=1, ascending=False)

# 此为按照B列进行排序
df.sort_values(by='B')

df.plot()
plt.show()

在这里插入图片描述

对数据框而言,不同的列可以有不同的数据类型,通过将字典转换为数据帧的过程,可以很好地说明这一点

df2 = pd.DataFrame({
    'A':1,
    'B':pd.date_range('20221201', periods=3),
    'C':np.arange(3)
})
print(df2)
'''打印结果为
   A          B  C
0  1 2022-12-01  0
1  1 2022-12-02  1
2  1 2022-12-03  2
'''

pandasGUI

如果说pandas相对于【np+plt】来说并没什么优势,那么pandasGUI就堪称绝杀了,这是一个类似于Excel的交互式窗口,可通过pip安装,并可在Python命令行中启动。

pip install pandasgui

安装完成后,从【pandasgui】中导入show函数,直接调用,就会弹出一个窗口。

from pandasgui import show
show()

如下图所示,点击菜单栏中的【setting】->【Context Menus】,可将PandasGUI添加到右键菜单或者开始菜单等位置,便于快速启动。

在这里插入图片描述

在PandasGUI的菜单栏中,点击【Edit】->【import】即导入csv, xlsx等格式的数据。

此外,也可以导入Python命令行中的数据,以【pandasgui】中自带的泰坦尼克数据集为例,只需将其作为show函数的参数,即可在弹出的窗口中显示对应数据

from pandasgui.datasets import titanic
show(titanic)

在这里插入图片描述

其最左侧是数据列表,目前只导入了泰坦尼克数据;中间是数据筛选界面;右侧是数据区。

其数据区出现四个选项卡,对应pandasGUI的四个功能

  • DataFrame 数据表,双击表头可以对此列进行排序,点击右键可弹出菜单;双击数据区,可更改单元数据。
  • Statistics 数据的统计情况
  • Grapher 画图
  • Reshaper 数据的整体操作,比如旋转、合并、截取等。

如果数据导入时遇到下面的错误

'bokeh.plotting' has no attribute 'Figure'

只需更改pandasGUI的【utility.py】文件,将下面代码中的Figure改为figure即可。

    import bokeh.plotting
    if issubclass(type(fig), bokeh.plotting.Figure):
        return "bokeh"

pandasGUI提供了许多绘图类型,包括散点图、线图、条形图、直方图、箱线图、小提琴图、3D散点图、热图、等高线、饼图、蜡烛图以及词云。

以小提琴图为例,点击进入【Grapher】选项卡后,用鼠标将【sex】拖动到中间【x】坐标后的输入框中,将【age】拖动到【y】后的输入框,然后点击上方的Violin,即可自动完成小提琴图的绘制,左右两个“小提琴”分别表示男性和女性的年龄分布。

在这里插入图片描述

pandasGUI基于plotly完成图形的绘制,有着良好的交互性,当鼠标掠过图像时,其右上角有一组功能按钮,可对图像进行保存、缩放等操作。

若拖动新的数据到 x , y x,y x,y轴后面,则绘图数据可被覆盖;若双击输入框,则输入框会被清除。此外,数据下方有一些按钮,点击【Reset】可清空所有输入框中的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大规模采集主流电商平台商品详情页获取商品详情,SKU,价格操作流程

taobao API 接入 淘宝接口解析是指通过淘宝提供的API(Application Programming Interface)来实现程序与淘宝平台的数据交互和功能调用。通过淘宝接口,用户可以实现商品信息获取、订单管理、物流跟踪等功能。 在使用淘宝接口前,首…

BUUCTF-MISC-[QCTF2018]picture

题目链接:BUUCTF在线评测 (buuoj.cn) 解题过程 下载附件发现没有扩展名,用010Editor打开是png图片 保存为png格式打开: BUUCTF平台会缺失一些提示,点开题目链接在GitHub里有题目描述: 提示判断应该是lsb隐写&#xff0…

Javaweb的学习21_CSS_属性

CSS的属性 (常用)属性: 1. 字体、文本 font-size:字体大小 color:文本颜色 text-align:文本的对齐方式 line-height:行高 2. 背景 background:是个复合属性 3. 边框 border:设置边框&#xff0c…

robots协议详解:爬虫也要有边界感

随着互联网的迅猛发展,信息的获取变得越来越便捷,而网络爬虫(Spider)技术就是其中之一。网络爬虫是一种自动化程序,它能够遍历互联网上的网页,提取信息,用于各种用途,例如搜索引擎索引、数据挖掘、价格比较等。但是,爬虫技术虽然强大,但是也是一把双刃剑,在正当使用…

【机器学习300问】38、什么是K-means算法?

在实际工作中,我们经常会遇到这样一类问题:给机器输入大量的特征数据,并期望机器通过学习找出数据存在的某种共性特征、结构或关联。这类问题被称为“非监督学习”问题。这篇文章我就来聚焦非监督学习中的其中一个任务——聚类 例如在数字营销…

供应链投毒预警 | 恶意Py组件tohoku-tus-iot-automation开展窃密木马投毒攻击

概述 上周(2024年3月6号),悬镜供应链安全情报中心在Pypi官方仓库(https://pypi.org/)中捕获1起新的Py包投毒事件,Python组件tohoku-tus-iot-automation 从3月6号开始连续发布6个不同版本恶意包&#xff0c…

士兵排列问题

解法一&#xff1a; deque实现队头入队和队尾入队即可得到编号排列&#xff0c;每个士兵有二个属性&#xff1a;编号、能力值。 #include<iostream> #include<algorithm> #include<deque> #include<vector> using namespace std; #define endl \n st…

CTF 题型 SSRF攻击例题总结

CTF 题型 SSRF攻击&例题总结 文章目录 CTF 题型 SSRF攻击&例题总结Server-side Request Forgery 服务端请求伪造SSRF的利用面1 任意文件读取 前提是知道要读取的文件名2 探测内网资源3 使用gopher协议扩展攻击面Gopher协议 &#xff08;注意是70端口&#xff09;python…

js教程(7)

一、事件监听&#xff08;事件绑定&#xff09; 1.事件 事件是在编程时系统内发生的动作或者发生的事情&#xff0c;比如用户在网页上点击按钮&#xff0c;摁下键盘的某个键。 2.事件监听 事件监听就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即…

Midjourney订阅攻略/Midjourney的基本参数和命令

AI绘画软件Midjourney使用原理 Midjourney是一个由Midjourney研究实验室开发的先进的人工智能程序&#xff0c;它可以根据用户的文本输入生成精美的图像。Midjourney的主要原理是通过收集大量已有的作品数据&#xff0c;对这些数据进行算法解析&#xff0c;它就可以通过关键词生…

【机器学习】函数

sigmoid函数 import matplotlib.pyplot as plt import numpy as npdef sigmoid(x):return 1/(1np.exp(-x))def plot_sigmoid():# param:起点&#xff0c;终点&#xff0c;间距x np.arange(-10, 10, 0.1) #起点&#xff0c;终点&#xff0c;间距y sigmoid(x)plt.plot(x, y)plt…

【Web】浅聊Hessian反序列化之打Spring AOP——JNDI

目录 前言 简单分析 EXP 前言 前文&#xff1a;【Web】浅聊Java反序列化之Rome——关于其他利用链-CSDN博客 前文里最后给到一条HotSwappableTargetSource利用链&#xff0c;就是我们今天PartiallyComparableAdvisorHolder链子的前半段(触发恶意类的toString方法)&#xf…

蓝桥杯练习01卡片化标签

卡片化标签页 介绍 选项卡功能在前端开发中特别常见&#xff0c;作为设置选项的模块&#xff0c;每个选项卡代表一个活动的区域&#xff0c;点击不同的区域&#xff0c;即可展现不同的内容&#xff0c;这样既能节约页面的空间又能提升页面性能。 本题需要在已提供的基础项目中…

基于SpringBoot+Vue中国陕西民俗网(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

[论文笔记] Gradient Surgery for Multi-Task Learning

【强化学习 137】PCGrad - 知乎 多任务学习(multi task):任务权重、loss均衡、梯度下降那点事 - 知乎 ICLR 2020 rejected submission:Yu T, Kumar S, Gupta A, et al. Gradient surgery for multi-task learning[J]. arXiv preprint arXiv:2001.06782, 2020. mul…

开源堡垒机Jumpserver安装教程

前言:堡垒机的应用场景 公司内有若干台服务器,既有windows的也有linux的, 提供有ERP,OA,Web,报表等等各种服务,往往需要远程登录到服务器上去做运维,但如果给root或者administrator权限,很容易出现不知道谁操作了的问题.如果不同人设置不同账号,又账号过多,权限不足等等其他问题…

HTML5球体下落粒子爆炸特效

HTML5球体下落粒子爆炸特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 HTML5球体下落粒子爆炸特效

【模拟】【C++算法】2826. 将三个组排序

LeetCode2826. 将三个组排序 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 从 0 到 n - 1 的数字被分为编号从 1 到 3 的三个组&#xff0c;数字 i 属于组 nums[i] 。注意&#xff0c;有的组可能是 空的 。 你可以执行以下操作任意次&#xff1a; 选择数字 x 并改变它的…

易基因:人类大脑的单细胞DNA甲基化和3D基因组结构|Science

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 高通通量表观基因组分析技术可用于阐明大脑中细胞复杂性的基因调控程序。5-甲基胞嘧啶 (5mCs)是哺乳动物基因组中最常见的修饰碱基&#xff0c;大多数5mCs发生在胞嘧啶-鸟嘌呤二核苷酸&a…

聚合音乐网-播放器网站源码

源码简介 MKOnlineMusicPlayer 是一款全屏的音乐播放器 UI 框架&#xff08;为避免侵权&#xff0c;已移除所有后端功能&#xff09;。 前端界面参照 QQ 音乐网页版进行布局&#xff0c;同时采用了流行的响应式设计&#xff0c;无论是在PC端还是在手机端&#xff0c;均能给您…