统计学第三周
程序员文章站
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)
上一篇: java设计模式之观察者模式学习
下一篇: PAT乙级1027打印沙漏