04 資料分析 學習筆記(二)

2021-07-16 20:16:23 字數 4866 閱讀 8986

四、r的資料視覺化

基礎繪圖包

---lattice包

---ggplot2包

---其他圖形

1、具體目標

~探索型

~接受型 

2、資料和受眾的特點

~哪些變數最重要

~受眾的角色

~合適的對映方式

對映的圖形元素

# 1、座標位置

# 2、線條

# 3、尺寸

# 4、色彩

# 5、形狀

# 6、文字

資料視覺化元素

graphics(自帶繪圖包 plot)

plot(cars$dist~cars$speed)  #點圖

plot(cars$dist,type = 'l')  #折線圖

plot(cars$dist,type='h')   #線直方圖

hist(cars$dist)             #直方圖

lattice包

library(lattice)

num <- sample(1:3,size=50,replace=t)  #1-3隨機生成50次 有放回

barchart(table(num))  #barchart  柱形圖     

qqmath(rnorm(100))  #qqmath 檢視資料是否符合正態分佈

關於分組

stripplot(~sepal.length|species,data = iris,layout=c(1,3))

#長度 和種類分布;點圖

densityplot(~sepal.length,groups = species,data=iris,

plot.points=f)

densityplot(~sepal.length|species,data=iris,

plot.points=f,

layout=c(1,3))

bwplot 箱線圖

bwplot(species~sepal.length,data = iris)

#兩個變數之間的關係

xyplot(sepal.width~sepal.length,groups = species,data=iris)

#splom兩個變數之間的關係

splom(iris[1:4])

histogram(~sepal.length | species,data=iris,

layout=c(1,3))

三維圖形

library(plyr)

func3d <- function(x,y)

vec1 <- vec2 <- seq(0,2,length=0)

para <- expand.grid(x=vec1,y=vec2)

result6 <- mdply(.data = para,.fun = func3d)

wireframe(v1~x*y,data=result6,scales = list(arrows = false),

drape = true, colorkey = f)

ggplot2包

library(ggplot2)

p <- ggplot(data = mpg,  #內建mpg資料

print(p)

geom_point() 繪製散點圖

#基礎修改 

p <- ggplot(data = mpg,  #內建mpg資料

color=factor(year))) 

p <- p + geom_point()  #繪製散點圖

p

增加統計變換stat

p <- ggplot(data = mpg,  #內建mpg資料

color=factor(year))) 

p <- p + stat_smooth()  #統計變換 做光滑曲線

p

在圖層layer中增加點和平滑線

p <- ggplot(data = mpg,  

geom_point(aes(color=factor(year)))+

stat_smooth()

p <- ggplot(data = mpg,  

geom_point()+

stat_smooth()

標度scale控制

geom_point(aes(colour=factor(year))) + 

stat_smooth()+

scale_color_manual(values=c('blue2','red4')) #標度控制

分面face控制

geom_point(aes(colour=factor(year))) + 

stat_smooth()+

scale_color_manual(values=c('blue2','red4'))+

facet_wrap(~ year,ncol=1)

精雕細琢

geom_point(aes(colour=class,size=displ),

alpha=0.5,position = "jitter")+

stat_smooth()+

scale_size_continuous(range = c(4, 10))+   #大小變化的範圍

facet_wrap(~ year,ncol=1)+                 #

labs(title='汽車型號與油耗',

y='每加侖高速公路行駛距離',

x='每加侖城市公路行駛距離',

size='排量',

colour = '車型')

直方圖

library(ggplot2)

p <- ggplot(iris,aes(x=sepal.length))+

geom_histogram()

p

增加引數

p <- ggplot(iris,aes(x=sepal.length))+ 

geom_histogram(binwidth=0.1,   # 設定組距

fill='skyblue', # 設定填充色

colour='black')+ # 設定邊框色

labs(title='大標題',

x='x軸',

y='y軸')

# 直方圖的作用主要是展現分組計數和分布特性,因為考查乙個樣本是否符合

# 某個分布在傳統統計學中有著重要的意義。

# 不過有另一種方法也可以展現資料的分布,即核密度估計曲線。

# 簡單來說就是根據資料估算一條可以代表其分布的密度曲線。

# 我們可以將直方圖和密度曲線重疊顯示。

直方圖加密度曲線

p <- ggplot(iris,aes(x=sepal.length)) +

geom_histogram(aes(y=..density..),

fill='skyblue',

color='black') +

stat_density(geom='line',color='red',

linetype=2,adjust=2)

# adjust引數和窗寬引數類似,它將會控制密度曲線的細節表現能力。我們來嘗試用不同的引數繪製多條密度曲線。可見引數越小曲線越為波動靈敏,adjuct負責控制這個引數。

p <- ggplot(iris,aes(x=sepal.length)) +

geom_histogram(aes(y=..density..), # 注意要將y設為相對頻數

fill='gray60',

color='gray') +

stat_density(geom='line',color='black',linetype=1,adjust=0.5)+

stat_density(geom='line',color='black',linetype=2,adjust=1)+

stat_density(geom='line',color='black',linetype=3,adjust=2)

密度曲線

密度曲線還方便對不同資料進行比較,例如我們要對iris中三種不同花的sepal.length分布進行比較,可以象下面一樣:

p <- ggplot(iris,aes(x=sepal.length,fill=species)) +

geom_density(alpha=0.5,color='gray')

print(p)

箱線圖

# 除了直方圖和密度圖,還可以用常見的箱線圖來表現一維資料的分布。箱線圖也方便各組資料之間的比較。

p <- ggplot(iris,aes(x=species,y=sepal.length,fill=species)) +

geom_boxplot()

print(p)

小提琴圖

# 與箱線圖類似是小提琴圖,它包含了更多關於資料分布的情況

p <- ggplot(iris,aes(x=species,y=sepal.length,fill=species)) +

geom_violin()

print(p)

Python資料分析學習筆記二

4 陣列的組合 numpy中的陣列組合有水平組合 垂直組合 深度組合和列組合等多種組合方式。使用hstack 函式可以完成陣列的水平拼接,例 import numpy as np a1 np.arange 9 reshape 3,3 print a1 a2 a1 2 print a2 b np.hs...

資料分析學習筆記

資料分析的常規步驟 1.確定問題 2.分解問題 3.評估問題 4.制定相應的決策 用一句話概括就是 現有的資料能否解決現在的問題,分析問題的瓶頸所在,評估分析的方式方法,找到最合理的資料分析方案進行實施。資料分析的模型沒有統一的模型,每乙個公司都有自己的業務線跟使用者群裡,使用者的屬性不同,行為軌跡...

資料分析學習筆記

row number over partition by col1 col2 order by col1 asc desc col2 asc desc 函式說明 可以用於開窗,排序,計數,返回當前視窗的排序值。引數說明 partition by col1 col2.指定開視窗的列。order by ...