python 資料分析---實現程式碼
阿新 • • 發佈:2018-11-14
程式碼實現了分析資料集所需的基本量值:均值方差協方差相關係數,也給出了繪製各類圖示的程式碼:柱狀直方餅狀箱式散點。
# -*- 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)
其他的分析程式碼後續補充。