《資料分析實戰》--用R做柱狀圖
《資料分析實戰》–用R做柱狀圖
背景:針對某公司的產品,發現當月的銷售額下降,但從市場環境還是從遊戲本身的狀態來看都有上升的空間,請查明下降的原因。
現狀:同上月相比銷售額下降
預期:銷售額恢復到同上月的水平
明確問題:由於公司的預算問題,當月沒有進行過多的宣傳活動,所以很有可能是該原因導致。
讀取資料
dau <- read.csv('section3-dau.csv',header = T,stringsAsFactors = F)
dpu <- read.csv('section3-dpu.csv',header = T,stringsAsFactors = F )
install <- read.csv('section3-install.csv', header = T,stringsAsFactors = F)
其中dau資料如下:
log_data | app_name | user_id |
---|---|---|
2013-06-01 | game-01 | 116 |
2013-06-01 | game-01 | 13491 |
2013-06-01 | game-01 | 7006 |
2013-06-01 | game-01 | 117 |
2013-06-01 | game-01 | 13492 |
2013-06-01 | game-01 | 9651 |
2013-06-01 | game-01 | 1 |
2013-06-01 | game-01 | 3 |
2013-06-01 | game-01 | 6 |
2013-06-01 | game-01 | 11 |
….. | ….. | ….. |
其中dpu資料如下:
log_date | app_name | user_id | payment |
---|---|---|---|
2013-06-01 | game-01 | 351 | 1333 |
2013-06-01 | game-01 | 12796 | 81 |
2013-06-01 | game-01 | 364 | 571 |
2013-06-01 | game-01 | 13212 | 648 |
2013-06-01 | game-01 | 13212 | 1142 |
2013-06-01 | game-01 | 13212 | 571 |
2013-06-01 | game-01 | 13212 | 1333 |
2013-06-01 | game-01 | 3547 | 571 |
2013-06-01 | game-01 | 12644 | 81 |
2013-06-01 | game-01 | 19 | 162 |
….. | …… | …… | ….. |
其中install資料如下:
install_date | app_name | user_id |
---|---|---|
2013-04-15 | game-01 | 1 |
2013-04-15 | game-01 | 2 |
2013-04-15 | game-01 | 3 |
2013-04-15 | game-01 | 4 |
2013-04-15 | game-01 | 5 |
2013-04-15 | game-01 | 6 |
2013-04-15 | game-01 | 7 |
2013-04-15 | game-01 | 8 |
2013-04-15 | game-01 | 9 |
2013-04-15 | game-01 | 10 |
…… | …… | …… |
處理資料
將三張表合併成一張表(使用merge函式):
dau_install <- merge(dau,install,by = c('user_id','app_name'))
dau_install_payment <- merge(dau_install,dpu, by=c('log_date', 'app_name','user_id'),all.x = T)
合併之後資料如下:
log_date | app_name | user_id | install_date | payment |
---|---|---|---|---|
2013-06-01 | game-01 | 1 | 2013-04-15 | NA |
2013-06-01 | game-01 | 3 | 2013-04-15 | NA |
2013-06-01 | game-01 | 6 | 2013-04-15 | NA |
2013-06-01 | game-01 | 11 | 2013-04-15 | NA |
2013-06-01 | game-01 | 17 | 2013-04-15 | NA |
2013-06-01 | game-01 | 18 | 2013-04-15 | NA |
…… | …… | …… | …… | ….. |
進行資料處理,對NA值賦值為0:
dau_install_payment$payment[is.na(dau_install_payment$payment)]<- 0
增加月份統計:
dau_install_payment$log_month <- substr(dau_install_payment$log_date,1,7)
dau_install_payment$install_month <- substr(dau_install_payment$install_date,1,7)
library(plyr)
mau_payment <- ddply(dau_install_payment,
.(log_month,user_id,install_month),
summarise,
payment = sum(payment))
月份統計結果:
log_month | user_id | install_month | payment |
---|---|---|---|
2013-06 | 1 | 2013-04 | 0 |
2013-06 | 2 | 2013-04 | 0 |
2013-06 | 3 | 2013-04 | 14994 |
2013-06 | 4 | 2013-04 | 0 |
2013-06 | 6 | 2013-04 | 0 |
2013-06 | 7 | 2013-04 | 0 |
2013-06 | 8 | 2013-04 | 0 |
2013-06 | 10 | 2013-04 | 0 |
2013-06 | 11 | 2013-04 | 1937 |
2013-06 | 15 | 2013-04 | 0 |
….. | ….. | ….. | ….. |
現在資料已經處理的差不多了,感覺plyr包中ddply函式有點像Excel的資料透視表,根據log_month,user_id,install_month在進行合併彙總。
不過資料處理有很多種方法,大家可以試一試sqldf包中sqldf函式,裡面直接寫SQL就OK了,簡單方便。
資料分析
對上面的mau_payment 增加欄位,讓我們來識別新使用者和老使用者:
如果安裝的月份和登陸的月份相同,我們則認為他是本月的新使用者,否則為老使用者
mau_payment$user_type <- ifelse(mau_payment$log_month == mau_payment$install_month,
'new_user','old_user')
mau_payment_summary <- ddply(mau_payment,
.(log_month,user_type),
summarise,
total_payment = sum(payment))
head(mau_payment_summary)
資料結果如下:
log_month | user_type | total_payment |
---|---|---|
2013-06 | new_user | 49837 |
2013-06 | old_user | 177886 |
2013-07 | new_user | 29199 |
2013-07 | old_user | 177886 |
從上面的表格裡面可以看出:在7月份中,新使用者帶來的消費額明顯的降低而導致7月份的整體消費額降低。
所以:宣傳活動需要保持6月份的水平才能讓消費額回升至6月份的水平。
資料視覺化
library(ggplot2)
library(scales)
ggplot(mau_payment_summary, aes(x = log_month,y=total_payment,
fill = user_type)) + geom_bar(stat = "identity") + scale_y_continuous(label = comma)
其中:ggplot2是作圖的包,
scales包主要將普通數字轉換為以三位數為一個區間來顯示的工具,例如1000 經轉換後為1,000。
繪圖如下:
可以很明顯的看到,新使用者帶來的收入下降。
那麼怎麼看哪個消費層次的的消費額減少了呢?
ggplot(mau_payment[mau_payment$payment >0 & mau_payment$user_type == 'new_user',],
aes(x=payment,fill=log_month))+geom_histogram(position = 'dodge',binwidth = 2000)
至此,資料分析基本完成~
相關推薦
《資料分析實戰》--用R做柱狀圖
《資料分析實戰》–用R做柱狀圖 背景:針對某公司的產品,發現當月的銷售額下降,但從市場環境還是從遊戲本身的狀態來看都有上升的空間,請查明下降的原因。 現狀:同上月相比銷售額下降 預期:銷售額恢復到同上月的水平 明確問題:由於公司的預算問題,當月沒有進
用R做中文LDA主題模型視覺化分析
LDA主題模型在2002年被David M. Blei、Andrew Y. Ng(是的,就是吳恩達老師)和Michael I. Jordan三位第一次提出,近幾年隨著社會化媒體的興起,文字資料成為越來越重要的分析資料;海量的文字資料對社會科學研究者的分析能力提出
R資料分析實戰——奧運會120年曆史
R語言在數理統計、資料分析以及資料視覺化也是一把利器,但是,不管是使用它的人還是瞭解的人多不如Python多。然而,其實R語言也是一門優雅的語言,也可以很好的處理資料,並且充分進行視覺化。下面,我們使用最近Kaggle上的一個數據集——奧運會120年曆史,具體進行資料分析。
用pandas進行資料分析實戰
主要內容是進行資料讀取,資料概述,資料清洗和整理,分析和視覺化。按照本教程,相信大家的Pandas會上到一個新臺階,遇到文中沒有提及的錯誤,通過搜尋引擎解決吧。 首先載入我們的練習資料。 在pandas中,常用的載入函式是read_csv。除此之外還有r
6、R語言繪制帶errorbar 的柱狀圖
label lines arp erro 技術 html ide mage name 轉載:http://www.cnblogs.com/xudongliang/p/7283733.html data <- data.frame(mean = c(10, 15),
hicharts堆疊柱狀圖堆疊資料標籤顯示百分比
HTML <div id="container" style="min-width: 500px; height: 400px"></div> <script src="./js/highcharts.js"></script> 這個應該都看的
Hicharts柱狀圖使用百分比展示資料
先把程式碼貼上來把,資料可能不合邏輯,但計算的結果都是正確的。 圖表容器: <div id="container"></div> var chart = Highcharts.chart('container', { chart: {
Echarts 資料展示 (柱狀圖+折線)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title&
Python資料分析實戰-Boston Public Schools GEO資料分析-Part1
由於從事人工智慧的工作,接下來打算分享一系列的以案例形式的人工智慧、 資料分析的部落格文章。歡迎大家持續關注。本次我來分享一個數據分析的案例 專案目標:
vue專案中使用Echarts 動態更改圖表資料 , Vue 折線圖、柱狀圖等圖表動態重新整理 ,
問題:在vue元件中,用echarts外掛 動態獲取、修改圖表資料 解決:已解決! 第一步:開啟cmd命令視窗 安裝echarts依賴 安裝:npm install echarts -S 第二步:在main.js中全域性引入 //引入echarts的圖表外掛
柱狀圖,曲線圖顯示資料結點
Using strokes with chart controls You use the Stroke class with the chart series and grid lines to control the properties
關於安卓專案中統計資料achartengine類(包括餅狀圖,柱狀圖,折線圖等)的使用
最近由於專案中需要統計資料,通過比較直觀的方式展示給使用者,所以就抽時間學習了一個統計圖的類庫achartengine,裡面包含統計中所需的餅狀圖,柱狀圖,折線圖等等,所以就拿出來給大家分享一下,希望大家相互學習,如有不足之處
ECharts 柱狀圖上顯示資料,並自定義圖示
先看效果 1.柱狀圖上顯示資料,使用的是series[0].label.formatter series: [{ name:'近一週每日', type: 'bar', barGap: '0', label: { norm
資料分析實戰之豆瓣小說知多少?
最近學習了python爬蟲,於是,小試身手。 得到豆瓣上圖書標籤為“小說”( )的圖書資訊,簡單整理後,得到998條記錄,包含書名、作者、作者國籍、譯者、出版社、出版時間、價格、評分、評價人數9個欄位。下面就讓我們來看看小說的世界。 小說越火,水準越高? 評價人數不等於實際閱讀人數
【Echarts】簡單實現——第一個柱狀圖的實現(在後臺動態獲取資料)
第一次接觸這個東西,感覺還有點濛濛的。經過兩天的努力終於搞明白。下面我用自己的方式實現以下,方便大家理解。 下面是我使用一個簡單的mvc框架來實現這個demo。 效果圖: 步驟: 1、新建一個mvc框架的專案。 2、新建控制器:EchartsBa
資料分析之用Power Query實現資料轉換和清洗(功能操作篇)
一個案例快速瞭解Power Query 憑藉 Power Query,可以搜尋資料來源,建立連線,然後按照可滿足你需求的方式調整資料(例如刪除列、更改資料型別或合併表格)以建立報表。 例:將門店一&門店二兩個工作簿的資料整合到一張工作表,並統計出各銷售代表每個月的業
Hive資料分析實戰演練
Hive資料分析實戰演練 文章來源:企鵝號 - 程式猿的修身養性 1、準備工作 Hive的底層是基於MapReduce分散式計算和HDFS分散式儲存,因此,在使用Hive進行資料操作前,需要先啟動Hadoop。如果事先已經搭建好了偽分散式環境的Hadoop,執行命令:
ECharts柱狀圖資料格式轉換通用工具類
ECharts柱狀圖 當我們不想直接把資料直接展示到頁面時,我們可以把資料繪製一個簡單的圖表展示出來,這樣既美觀又形象。下面是我封裝的一個用來把資料格式轉換為Echarts柱狀圖所需要資料的方法。 /** * 封裝了一個用於生成前端柱狀圖對應資料結構所需資料的
用ECharts畫多柱子柱狀圖(可點選)
其實用ECharts畫柱子還是挺簡單的,多去官網看看官方文件,就理解了。 columLabel是多柱子的名字。columName 是橫座標。bgColorList 是柱子的顏色。arr 是每個柱子的值。list 是後臺傳過來的各個柱子的值,但是要經過處理賦值給arr ,賦值的方法也不只這一種
零基礎Python資料分析實戰:豆瓣人的電影口味重嗎?
在上一篇文章中,我們實戰使用urllib和BeautifulSoup抓取了關於豆瓣電影TOP250的非常豐富的資訊,包括導演、編劇、演員、上映時間和地區、語言、別名、短評數、影評數、多少人想看、多少人看過等多達23個欄位。 接下來,我們要做的就是對這些資料進行分析、挖掘,得到儘可能多