1. 程式人生 > >《資料分析實戰》--用R做柱狀圖

《資料分析實戰》--用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個欄位。 接下來,我們要做的就是對這些資料進行分析、挖掘,得到儘可能多