數據處理及分析-讀取MySQL資料庫

R讀取MySQL資料庫,需要用到RMySQL包,同樣使用install.packages("RMySQL")先安裝,之後就可以注釋掉了,

  • 讀取數據

#install.packages("RMySQL")library(RMySQL)conn <- dbConnect(MySQL(),dbname="web",username="root",password="123456",host="127.0.0.1",port=3306)dbSendQuery(conn, SET NAMES utf8)houData <- dbReadTable(conn,"hou_info")dbDisconnect(conn)#houData <- sqlQuery(conn,"select * from hou_info")

使用dbConnect方法初始化一個連接,填寫dbname(資料庫名),username(用戶名),password(密碼),host(資料庫地址),port(du)

dbReadTable方法,讀取了hou_info表的數據,同樣可以使用sqlQuery方法,通過SQL查詢數據

註:這裡使用dbSendQuery方法,設置查詢輸入未utf8格式,避免中文亂碼,查詢完數據後使用dbDisconnect關閉連接,不然若運行多次後會報「Cannot allocate a new connection: 16 connections already opened」錯誤

  • 數據處理

這裡我是抓取了武漢2011年12月到2017年2月的房屋成交量數據作為分析,格式如下:

統計需求:

1)每月總成交量統計

houData$date <- as.Date(houData$date, "%Y-%m-%d")houData <- houData[order(houData$date,decreasing = FALSE),]hjData <- houData[houData$area == 合計,]hjData$hou_num <- as.numeric(hjData$hou_num)#月成交量houMonth <- tapply(hjData$hou_num,format(hjData$date,%Y-%m),sum)houMonth <- as.data.frame.table(houMonth)names(houMonth) <- c("time","totalNum")houMonth$time <- as.character(houMonth$time)houMonth$timeNumber <- c(1:nrow(houMonth))

將日期格式化,並通過時間排序

hjData <- houData[houData$area == 合計,]表示我過濾出每天的合計總量

下面我就可以按月來分組,獲取每個月份的商品房交易量,將數據轉換為數據框,並命名行名,列名

好了可以開始繪製圖表了

par(family=STKaiti)plot(houMonth$timeNumber,houMonth$totalNum, xlab = "時間(月份)", ylab = "成交量", xaxt = "n", main = "2011年12月到2017年2月成交量統計", col = "blue", type = "b")axis(1, at=houMonth$timeNumber,labels = houMonth$time, cex.axis=1.5)

這裡使用到了par函數,避免中文字元亂碼,使用plot畫圖,使用axis自定義橫坐標,用法可參考《數據處理及分析-讀寫Excel》,標題和坐標文本也可以使用title函數來添加,如:

title("2011年12月到2017年2月成交量統計",xlab = "時間(月份)",ylab = "成交量")

2)每個區的每月總成交量統計

統計了江岸區和江漢區兩個地區的對比情況

獲取數據同「合計」部分,繪製多條曲線,使lines,即在原來的圖表上新增一條曲線,橫坐標是不變的

lty函數表示使用虛線

lines(jahouMonth$timeNumber,jhhouMonth$totalNum,col="green",type="b",lty=2);

也可以為圖表添加圖例

legend("topleft",inset = .05,title = "地區",c("江岸區","江漢區"), lty = c(1,2), pch = c(16,1),col = c("blue","green"))

因為是兩個圖形,所以lty,pch,col都是以向量來表示,

legend用法:

legend(location,title,legend,...)

結果展示:


推薦閱讀:

Infovis的圖形推理(譯)
別落後了,開始你的第一方數據分析
做數據分析需要「搞」人?
Kaggle泰坦尼克號生存模型——250個特徵量的融合模型,排名8%
數據分析怎麼更直觀?十分鐘構建數據看板

TAG:MySQL | 数据分析 |