代码实现了分析数据集所需的基本量值:均值方差协方差相关系数,也给出了绘制各类图标的代码:柱状直方饼状箱式散点。
# -*- 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)
其他的分析代码后续补充。