欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

统计学第三周

程序员文章站 2024-03-08 09:05:59
...

本期学习内容:

  • 1、Python环境安装;

  • 2、pandas和numpy环境安装;

  • 3、Python实现描述性统计的内容。

一般win安装,python环境,推荐安装Anaconda3。一个原因是Python 2X 和Python 3X使用上有一些区别,Python 3X在设计的时候没有考虑向下相容,而且Anaconda3安装时一些基础常用的包例如pandas和numpy不用手动配置,比较方便。

安装Anaconda3:下载地址https://repo.anaconda.com/archive/Anaconda3-2019.10-Windows-x86_64.exe 。注意:首次安装的时候需要勾选Add PATH 那个选项 ,自带环境变量配置。

Python的常用统计操作:

经过上一步的安装,我们可以查看是否电脑上安装好了Python。打开命令行

统计学第三周

然后输入python,后按回车:

统计学第三周

这个就表示python已经安装完毕了,但是这样用起来很不方便,推荐使用Spyder。我自己的电脑安装的是Python3.6版本的。打开软件列表:

统计学第三周

统计学第三周

练手数据:https://pan.baidu.com/s/1lXAnyvSoti-U44MU2fubgw

# -*- coding: utf-8 -*-
"""
Created on Sun Nov 17 16:22:33 2019

@author: sen
"""

import pandas as pd
import numpy as np
import os

os.chdir("C:/Users/LENOVO/Desktop/统计学/第三周")

data = pd.read_excel('data.xlsx')

#众数
def descriptive_mode(list):
    
    list_set=set(list)
    frequency_dict={}
    for i in list_set:
        frequency_dict[i]=list.count(i)
    max_frequency=max(frequency_dict.values())
    mode_list=[]
    if max_frequency==1:
        return mode_list
    for key,value in frequency_dict.items():
        if value==max_frequency:
            mode_list.append(key)
    return mode_list

a_list = data['data'].values.tolist()
descriptive_mode(a_list) #返回最多出现的1

#也可以用value_counts(),返回每个数的出现频次
data['data'].value_counts()

#中位数(np.median(list))
def Median(list):
    l = len(list) #数出列表中有几个元素,将个数放到l里
    list.sort() #将列表按升序排列
    if l%2 == 0: #如果有偶数个整数
        m = (list[int(l/2) - 1] + list[int(l/2)]) / 2 #计算中间两个的平均值,存到m里
        print("%.1f" % m) #按一位小数打印m
    else: #如果有奇数个整数
        m = list[int((l-1)/2)] #将中间那个整数的值存到m里
    print(m) #直接打印m
Median(a_list)
#方法二
data['data'].median()

#平均数
def average(list):
    return sum(list)/len(list)

average(a_list)
#方法二
data['data'].mean()

#分位数
import math
def quantile_p(data, p):
    pos = (len(data) + 1)*p#位置
    #pos = 1 + (len(data)-1)*p
    pos_integer = int(math.modf(pos)[1])
    pos_decimal = pos - pos_integer
    Q = data[pos_integer - 1] + (data[pos_integer] - data[pos_integer - 1])*pos_decimal
    return Q

Q1 = quantile_p(a_list, 0.25)
print("Q1:", Q1)
Q2 = quantile_p(a_list, 0.5)
print("Q2:", Q2)
Q3 = quantile_p(a_list, 0.75)
print("Q3:", Q3)
print('四分位差',Q3-Q1)

np.percentile(a_list, (25, 50, 75), interpolation='midpoint')

#求方差1  
def variance(l):#平方的期望-期望的平方  
    s1=0;  
    s2=0;  
    for i in l:  
        s1+=i**2;  
        s2+=i;  
    return float(s1)/len(l)-(float(s2)/len(l))**2;  
      
#求方差2  
def variance2(l):#平方-期望的平方的期望  
    ex=float(sum(l))/len(l);  
    s=0;  
    for i in l:  
        s+=(i-ex)**2;  
    return float(s)/len(l);  

#求标准差
arr_std = np.std(a_list,ddof=1)

 

相关标签: 统计学