0X00 前言
学习统计学不光有理论的学习理解,还要有题目的练习以及工具上的实践。由于工作性质的原因,我使用python来实现各个统计量的计算。由于pycharm收费且重,我自己购置了一台1C2G云服务器,并且搭建了Anaconda,使用其中的jupyter作为日常练习的工具。jupyter上无论是写代码还是写文档都比较方便,需要搭建这个服务的同学可以参考本篇教程。
0X01 Anaconda安装配置以及环境配置
1.1 Anaconda的安装
我这里使用的是清华大学开源软件镜像站,选取所需的操作系统及版本,由于我这里是云服务器我选择 Anaconda3-2019.07-Linux-x86_64.sh ,可以选择下载到本地再上传到linux服务器(WinSCP),也可以复制链接地址在linux上通过***wget***命令下载。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2019.07-Linux-x86_64.sh
下载完成后本地是一个文件由于没有权限,颜色和普通脚本是不同的,也就是没有可执行权限,此时需要给这个脚本进行赋权,然后进行安装过程:
chmod +x Anaconda3-2019.07-Linux-x86_64.sh
sh Anaconda3-2019.07-Linux-x86_64.sh
安装过程中,不断回车或者yes默认选项。
安装过程结束后,需要配置anaconda的环境变量,这样我们才可以全局使用conda命令。由于我这里是root用户,我将Anaconda安装在/home/anaconda3。 无论是哪种内核(版本)的系统,都可以通过修改/etc/profile或者~/.bashrc的配置信息来达到设置环境变量的目的 ,此处使用后者进行操作。
vim ~/.bashrc
-- 在文件末尾添加如下配置,其中/home/anaconda3是anaconda3的安装目录
export PATH=/home/anaconda3/bin:$PATH
-- 添加完成后保存退出
:wq
-- 刷新配置
source ~/.bashrc
-- 查看anaconda版本信息
conda -v
基本安装完成后,需要更新所有库,防止后面出现各种版本不一致的问题。
-- 更新所有库
conda upgrade -all
-- 更新conda本身
conda update conda
1.2 anaconda 常用命令
conda常用命令:
-- 查看安装的包
conda list
-- 安装需要的包,可以同时安装多个包,空格分割。同时可以添加版本号指定包版本
conda install package_name
-- 如需要安装pandas numpy的1.10版本
conda install pandas numpy=1.10
-- 卸载包
conda remove package_names
-- 更新包
conda update package_name
-- 包搜索支持模糊搜索
conda search package_name
conda可以为你不同项目建立不同的运行环境,安装nb_conda用于notebook自动关联nb_conda的环境。
创建环境:
conda create -n env_name package_names
该命令中,env_name是设置环境的名称,package_names是你要安装在创建环境中的包
也可以在创建环境时,指定环境中的python版本:
conda create -n py3 python=3
进入环境:
source activate my_env
离开环境:
source deactivate
共享环境:
将你当前的环境保存到文件中包保存为YAML文件(包括Pyhton版本和所有包的名称)
conda env export > environment.yaml
列出环境:
有时候会忘记自己创建的环境名称,这时候用 conda env list 就可以列出你创建的所有环境 。 你会看到环境的列表,而且你当前所在环境的旁边会有一个星号。默认的环境(即当你不在选定环境中时使用的环境)名为 root。
conda env list
删除环境:
conda env remove -n env_name
0X02 jupyter配置及远程使用
进入环境ipython, 在ipython环境下输入:
from notebook.auth import passwd
passwd()
输入方便你记的密码,连续输;两次…输完密码后,会输出一个字符串,形如: ’sha1:9e7a5c5e0a29:8cbdvsv2344d141c92beab1c5bc6e9avsdvdsvsv’
将其保存下来, 完成以上操作后,通过exit()推出ipython环境
进入到安装目录:cd /home/anaconda3/etc/jupyter, 执行 :
jupyter notebook --generate-config
-- 命令会产生文件:home/.jupyter/jupyter_notebook_config.py
编辑配置文件,编辑此文件,写入
c.NotebookApp.ip = '*' # 允许访问此服务器的 IP,星号表示任意 IP
c.NotebookApp.password = u'sha1:xxx:xxx' # 之前生成的密码 hash 字串
c.NotebookApp.open_browser = False # 运行时不打开本机浏览器
c.NotebookApp.port = 12035 # 使用的端口,随意设置
c.NotebookApp.enable_mathjax = True # 启用 MathJax
启动服务
Jupyter notebook
在浏览器中输入该服务器的IP地址及配置的端口之后就可以使用jupyther写代码写文档。
jupyter常用命令:
-- 启动jupyter
start jupyter
-- 停止/重启jupyter
stop/restart jupyter
-- 查看jupyter的状态
status jupyter
常见统计量的实现
启动jupyter服务后,新建一个文件,修改其文件名,开始输入代码,进入实践。
import sys
import numpy as np
import pandas as pd
from scipy import stats as sts
nums = [1,2,3,4,4,4,5,6]
print("算数平均值:"+str(np.mean(nums)))
print("中位数:"+str(np.median(nums)))
# 函数作用:返回传入数组/矩阵中最常出现的成员以及出现的次数。
# 如果多个成员出现次数一样多,返回值小的那个
print("众数:"+str(sts.mode(nums)[0][0])+' 出现了:'+str(sts.mode(nums)[1][0])+'次')
print("几何平均数:"+str(sts.gmean(nums)))
a = [70,80,90]
w = [3,3,4]
print("加权平均数:"+str(np.average(a,weights=w)))
print("方差:"+str(np.var(nums)))
print("标准差:"+str(np.std(nums)))
print("极差:"+str(np.ptp(nums)))
# 平均差
# 四分位差
print("四分位 75%:"+str(np.percentile(nums,75)))
print("四分位 25%:"+str(np.percentile(nums,25)))
print("四分位:"+str(np.percentile(nums,75) - np.percentile(nums,25)))
# print("四分位:"+str(sts.(nums,75) - sts.(nums,25)))
# 异众比率
print("异众系数:"+str(1-sts.mode(nums)[1][0]/len(nums) ))
# 离散系数
print("离散系数:"+str(np.std(nums)/np.mean(nums)))
# 偏态系数
print("偏态系数:"+str(sts.skew(nums)))
# 峰态系数
print("峰度系数:"+str(sts.kurtosis(nums)))