python 数据分析---实现代码

代码实现了分析数据集所需的基本量值:均值方差协方差相关系数,也给出了绘制各类图标的代码:柱状直方饼状箱式散点。

# -*- coding: utf-8 -*-
"""
Created on Fri Nov  9 10:25:46 2018

@author: user
"""

import numpy as np

"""
 生成虚拟数据
"""
n=5  # 特征数目
m=6  # 样本数目
data=np.random.rand(n,m)*10

"""
 基本描述性统计量
"""
d_mean=np.mean(data,0)  # mean(data):全部的均值,mean(data,0):按行做均值, mean(data,1):按列做均值
d_median=np.median(data)  # 中位数,解释和使用同上
d_ptp=np.ptp(data,0)  # 极差,解释和使用同上
d_var=np.var(data,0)  # 方差,同上
d_std=np.std(data,0)  # 标准差,同上
d_CV=d_std/d_mean  # 变异系数,即无量纲化,表示数据群的稳定程度. 此处除法是对应元素相除
for i in range(n):
    d_Zscore=(data[i,:]-np.mean(data,1))/np.std(data,1)  # 每个样本第 i 个特征取值的偏差程度


"""
衡量相关程度
"""
d_cov=np.cov(data[:,0],data[:,1])  # 前两列数据的协方差矩阵 (0,0):第一列方差,(0.1)(1,0):两列数据协方差,(1,1)第二列方差
d_cor=np.corrcoef(data[:,0],data[:,1])  # 前两列数据的相关系数  各个元素解释同上

"""
图表分析
"""
"""
图表分析(一):单数据描述
"""
import matplotlib
data=np.vectorize(int)(data)  # 修改一下数据,方便使用图标表示
def drawBar(data):  # 柱状图
    n,m=np.shape(data)
    data=data.reshape(1,m*n)[0,::]
    xticks=list(set(data))  # 数据的种类
    dataGroup={}
    for i in data.tolist():
        if not i in dataGroup:
            dataGroup[i]=1
        else:
            dataGroup[i]=dataGroup[i]+1
    matplotlib.pyplot.bar(range(len(xticks)),[dataGroup.get(xtick,0) for xtick in xticks], align='center')
    matplotlib.pyplot.xticks(range(len(xticks)), xticks)  #设置柱的文字说明;第一个参数为文字说明的横坐标;第二个参数为文字说明的内容
    matplotlib.pyplot.xlabel('Score')  #设置坐标的文字说明
    matplotlib.pyplot.ylabel('Frequency')
    matplotlib.pyplot.title('Scores Of Students')    #设置标题
    matplotlib.pyplot.show()
# drawBar(data)
def drawPie(data):   # 饼状图
    n,m=np.shape(data)
    data=data.reshape(1,m*n)[0,::]
    xticks=list(set(data))  # 数据的种类
    dataGroup={}
    for i in data.tolist():
        if not i in dataGroup:
            dataGroup[i]=1
        else:
            dataGroup[i]=dataGroup[i]+1
    matplotlib.pyplot.pie([dataGroup.get(xtick, 0) for xtick in xticks], labels=xticks, autopct='%1.1f%%')
    matplotlib.pyplot.title('Scores Of Students')
    matplotlib.pyplot.show()
    
def drawHist(data):  # 直方图:横坐标为连续的量化区间,而不是间断的种类。
    matplotlib.pyplot.hist(data, m*n)
    matplotlib.pyplot.xlabel('Scores')
    matplotlib.pyplot.ylabel('Frequency')
    matplotlib.pyplot.title('Scores Of Students')
    matplotlib.pyplot.show()
"""
图表分析(二):数据关系描述
"""
def drawScatter(data1, data2):  # 散点图
    matplotlib.pyplot.scatter(data1, data2)
    matplotlib.pyplot.xlabel('data1')
    matplotlib.pyplot.ylabel('data2')
    matplotlib.pyplot.title('data1 & data2')
    matplotlib.pyplot.show()
# drawScatter(data[:,1], data[:,2])
    
def drawBox(data):  # 箱式图: 绘制出来的箱形图中,包含3种信息:(1) Q2所指的红线为中位数;
                       # (2)Q1所指的蓝框下侧为下四分位数,Q3所指的蓝框上侧为上四分位数,Q3-Q1为四分为差。四分位差也是衡量数据的发散程度的指标之一。
                               # (3)上界线和下界线是距离中位数1.5倍四分位差的线,高于上界线或者低于下界线的数据为异常值。
    n,m=np.shape(data)
    data=data.reshape(1,m*n)[0,::]
    matplotlib.pyplot.boxplot([data], labels=['data'])
    matplotlib.pyplot.title('boxplot')
    matplotlib.pyplot.show()
# drawBox(data)  
    




其他的分析代码后续补充。

你可能感兴趣的:(python)