python框架django统计入门,读取数据库

首先

pip install numpy

pip install scipy

python中用于统计的库很多,Numpy , Scipy , matplotlib 和 networkx 等

在window下安装一般都会有问题,

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

https://github.com/scipy/scipy/releases

到这里去下载一个,放到phtyon目录再安装

models.py

class Person(models.Model):
    name = models.CharField(max_length=30)
    age = models.IntegerField(default=0)
    education = models.IntegerField(default=1)
    income = models.FloatField(default='')
    labels = ListField()
    content = CompressedTextField()
 
    def __unicode__(self):
        return self.name

 

对数据的中心位置有所了解以后,一般我们会想要知道数据以中心位置为标准有多发散。如果以中心位置来预测新数据,那么发散程度决定了预测的准确性。数据的发散程度可用极差(PTP)、方差(Variance)、标准差(STD)、变异系数(CV)来衡量,它们的计算方法如下:

极差是只考虑了最大值和最小值的发散程度指标,相对来说,方差包含了更多的信息,标准差基于方差但是与原始数据同量级,变异系数基于标准差但是进行了无量纲处理。使用NumPy计算极差、方差、标准差和变异系数:

# -*- coding: utf-8 -*-
 
from django.http import HttpResponse
from django.shortcuts import render
from TestModel.models import Test,Person
from numpy import array
from numpy.random import normal, randint
from numpy import mean, median, ptp, var, std
from scipy.stats import mode 
from numpy import array, cov, corrcoef
 
def anly(request):
    data   = []
    dataIncome = []
    list   = Person.objects.all()
    for item in list:
        data.append(item.age)
        dataIncome.append(item.income)
    m1 = median(data)#中位数
    m2 = mean(data)#平均数
    m3 = mode(data)#众数
    #对数据的中心位置有所了解以后,一般我们会想要知道数据以中心位置为标准有多发散。
    #如果以中心位置来预测新数据,那么发散程度决定了预测的准确性。
    #数据的发散程度可用极差(PTP)、方差(Variance)、标准差(STD)、变异系数(CV)来衡量
    #极差是只考虑了最大值和最小值的发散程度指标,相对来说,方差包含了更多的信息,
    #标准差基于方差但是与原始数据同量级,变异系数基于标准差但是进行了无量纲处理。
    #极差
    m4 = ptp(data)
    #方差
    m5 = var(data)
    #标准差
    m6 = std(data)
    #变异系数
    m7 = mean(data) / std(data)
    #之前提到均值容易受异常值影响,那么如何衡量偏差,偏差到多少算异常是两个必须要解决的问题。
    #定义z-分数(Z-Score)为测量值距均值相差的标准差数目:
    #当标准差不为0且不为较接近于0的数时,z-分数是有意义的,使用NumPy计算z-分数:
    #通常来说,z-分数的绝对值大于3将视为异常。
    #计算第一个值的z-分数
    m8 = (data[0]-mean(data)) / std(data)
 
    #有两组数据时,我们关心这两组数据是否相关,相关程度有多少。
    #用协方差(COV)和相关系数(CORRCOEF)来衡量相关程度
    # 协方差的绝对值越大表示相关程度越大,协方差为正值表示正相关,负值为负相关,0为不相关。
    # 相关系数是基于协方差但进行了无量纲处理。
     
    #计算年龄和收入的相关系数
    data1 = array([data, dataIncome])
    #计算两组数的协方差
    #参数bias=1表示结果需要除以N,否则只计算了分子部分
    #返回结果为矩阵,第i行第j列的数据表示第i组数与第j组数的协方差。对角线为方差
    cov1 = cov(data1, bias=1)
     
    #计算两组数的相关系数
    ##返回结果为矩阵,第i行第j列的数据表示第i组数与第j组数的相关系数。对角线为1
    corrcoef1 = corrcoef(data1)
 
    #return render(request, 'anly.html', {'list': list})
    return HttpResponse(corrcoef1)

 

方法 说明
numpy array 创造一组数
numpy.random normal 创造一组服从正态分布的定量数
numpy.random randint 创造一组服从均匀分布的定性数
numpy mean 计算均值
numpy median 计算中位数
scipy.stats mode 计算众数
numpy ptp 计算极差
numpy var 计算方差
numpy std 计算标准差
numpy cov 计算协方差
numpy corrcoef 计算相关系数

完成,从数据库中读取所有人的年龄,并输出。

木易的技术记录 » python框架django统计入门,读取数据库

顶 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

置顶文章