欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:數(shù)據(jù)可視化之廣電大數(shù)據(jù)

柚子快報(bào)激活碼778899分享:數(shù)據(jù)可視化之廣電大數(shù)據(jù)

http://yzkb.51969.com/

完整代碼:(數(shù)據(jù)處理部分)

# 代碼6-1

import pandas as pd

data_raw = pd.read_csv('media_index.csv', encoding='gbk', header='infer')

payevents = pd.read_csv('mmconsume_payevents.csv', sep=',',

encoding='gbk', header='infer')

print(data_raw.shape, payevents.shape)

# 代碼6-2

media = pd.read_csv('media_index.csv', encoding='gbk', header='infer')

# 將“-高清”替換為空

media['station_name'] = media['station_name'].str.replace('-高清', '')

# 過濾特殊線路、政企用戶

media = media.loc[(media.owner_code != 2)&(media.owner_code != 9)&

(media.owner_code != 10), :]

print('查看過濾后的特殊線路的用戶:', media.owner_code.unique())

media = media.loc[(media.owner_name != 'EA級(jí)')&(media.owner_name != 'EB級(jí)')&

(media.owner_name != 'EC級(jí)')&(media.owner_name != 'ED級(jí)')&

(media.owner_name != 'EE級(jí)'), :]

print('查看過濾后的政企用戶:', media.owner_name.unique())

# 對(duì)開始時(shí)間進(jìn)行拆分

# 檢查數(shù)據(jù)類型

type(media.loc[0, 'origin_time'])

# 轉(zhuǎn)化為時(shí)間類型

media['end_time'] = pd.to_datetime(media['end_time'])

media['origin_time'] = pd.to_datetime(media['origin_time'])

# 提取秒

media['origin_second'] = media['origin_time'].dt.second

media['end_second'] = media['end_time'].dt.second

# 篩選數(shù)據(jù)

ind1 = (media['origin_second'] == 0) & (media['end_second'] == 0)

media1 = media.loc[~ind1, :]

# 基于開始時(shí)間和結(jié)束時(shí)間的記錄去重

media1.end_time = pd.to_datetime(media1.end_time)

media1.origin_time = pd.to_datetime(media1.origin_time)

media1 = media1.drop_duplicates(['origin_time', 'end_time'])

# 隔夜處理

# 去除開始時(shí)間,結(jié)束時(shí)間為空值的數(shù)據(jù)

media1 = media1.loc[media1.origin_time.dropna().index, :]

media1 = media1.loc[media1.end_time.dropna().index, :]

# 創(chuàng)建星期特征列

media1['星期'] = media1.origin_time.apply(lambda x: x.weekday()+1)

dic = {1:'星期一', 2:'星期二', 3:'星期三', 4:'星期四', 5:'星期五', 6:'星期六', 7:'星期日'}

for i in range(1, 8):

ind = media1.loc[media1['星期'] == i, :].index

media1.loc[ind, '星期'] = dic[i]

# 查看有多少觀看記錄是隔天的,隔天的進(jìn)行隔天處理

a = media1.origin_time.apply(lambda x :x.day)

b = media1.end_time.apply(lambda x :x.day)

sum(a != b)

media2 = media1.loc[a != b, :].copy() # 需要做隔天處理的數(shù)據(jù)

def geyechuli_xingqi(x):

dic = {'星期一':'星期二', '星期二':'星期三', '星期三':'星期四', '星期四':'星期五',

'星期五':'星期六', '星期六':'星期日', '星期日':'星期一'}

return x.apply(lambda y: dic[y.星期], axis=1)

media1.loc[a != b, 'end_time'] = media1.loc[a != b, 'end_time'].apply(lambda x:

pd.to_datetime('%d-%d-%d 23:59:59'%(x.year, x.month, x.day)))

media2.loc[:, 'origin_time'] = pd.to_datetime(media2.end_time.apply(lambda x:

'%d-%d-%d 00:00:01'%(x.year, x.month, x.day)))

media2.loc[:, '星期'] = geyechuli_xingqi(media2)

media3 = pd.concat([media1, media2])

media3['origin_time1'] = media3.origin_time.apply(lambda x:

x.second + x.minute * 60 + x.hour * 3600)

media3['end_time1'] = media3.end_time.apply(lambda x:

x.second + x.minute * 60 + x.hour * 3600)

media3['wat_time'] = media3.end_time1 - media3.origin_time1 # 構(gòu)建觀看總時(shí)長(zhǎng)特征

# 清洗時(shí)長(zhǎng)不符合的數(shù)據(jù)

# 剔除下次觀看的開始時(shí)間小于上一次觀看的結(jié)束時(shí)間的記錄

media3 = media3.sort_values(['phone_no', 'origin_time'])

media3 = media3.reset_index(drop=True)

a = [media3.loc[i+1, 'origin_time'] < media3.loc[i, 'end_time'] for i in range(len(media3)-1)]

a.append(False)

aa = pd.Series(a)

media3 = media3.loc[~aa, :]

# 去除小于4S的記錄

media3 = media3.loc[media3['wat_time'] > 4, :]

# 保存貼標(biāo)簽用

media3.to_csv('media3.csv', na_rep='NaN', header=True, index=False)

# 查看連續(xù)觀看同一頻道的時(shí)長(zhǎng)是否大于3h

# 發(fā)現(xiàn)這2000個(gè)用戶不存在連續(xù)觀看大于3h的情況

media3['date'] = media3.end_time.apply(lambda x :x.date())

media_group = media3['wat_time'].groupby([media3['phone_no'],

media3['date'],

media3['station_name']]).sum()

media_group = media_group.reset_index()

media_g = media_group.loc[media_group['wat_time'] >= 10800, ]

media_g['time_label'] = 1

o = pd.merge(media3, media_g, left_on=['phone_no', 'date', 'station_name'],

right_on=['phone_no', 'date', 'station_name'], how='left')

oo = o.loc[o['time_label'] == 1, :]

# 代碼6-3

payevents = pd.read_csv('mmconsume_payevents.csv', sep=',',

encoding='gbk', header='infer')

payevents.columns = ['phone_no', 'owner_name', 'event_time', 'payment_name',

'login_group_name', 'owner_code']

# 過濾特殊線路、政企用戶

payevents = payevents.loc[(payevents.owner_code != 2

)&(payevents.owner_code != 9

)&(payevents.owner_code != 10), :] # 去除特殊線路數(shù)據(jù)

print('查看過濾后的特殊線路的用戶:', payevents.owner_code.unique())

payevents = payevents.loc[(payevents.owner_name != 'EA級(jí)'

)&(payevents.owner_name != 'EB級(jí)'

)&(payevents.owner_name != 'EC級(jí)'

)&(payevents.owner_name != 'ED級(jí)'

)&(payevents.owner_name != 'EE級(jí)'), :]

print('查看過濾后的政企用戶:', payevents.owner_name.unique())

payevents.to_csv('payevents2.csv', na_rep='NaN', header=True, index=False)

了解項(xiàng)目背景

1、隨著科技的發(fā)展,現(xiàn)在人們觀看電視節(jié)目的方式越來越多,給人們帶了很多便利。人們不僅可以使用傳統(tǒng)的電視機(jī)觀看電視節(jié)目,而且可以通過網(wǎng)絡(luò)觀看電視節(jié)目,這樣使得運(yùn)營(yíng)商、用戶、網(wǎng)絡(luò)之間產(chǎn)生了一些交互關(guān)系。為了更改的為用戶提供服務(wù),并提高收益和收視率,需要對(duì)廣電數(shù)據(jù)進(jìn)行分析。

2、目前某廣播電視網(wǎng)絡(luò)運(yùn)營(yíng)集團(tuán)已建成完整覆蓋廣東省各區(qū)(縣級(jí)市)的有線傳輸與無線傳輸互為延伸、互為補(bǔ)充的廣電寬帶信息網(wǎng)絡(luò),實(shí)現(xiàn)了城區(qū)全程全網(wǎng)的雙向覆蓋,為廣大市民提供有線數(shù)字電視、互聯(lián)網(wǎng)接入服務(wù)、高清互動(dòng)電視、移動(dòng)數(shù)字電視、手機(jī)電視、信息內(nèi)容集成等多樣化、跨平臺(tái)的信息服務(wù)。

3、每個(gè)家庭收看電視節(jié)目都需要通過機(jī)頂盒進(jìn)行收視節(jié)目的接收和交互行為(如點(diǎn)播行為、回看行為)的發(fā)送,并將交互行為數(shù)據(jù)發(fā)送至每個(gè)區(qū)域的光機(jī)設(shè)備(進(jìn)行數(shù)據(jù)傳遞的中介),光機(jī)設(shè)備會(huì)匯集該區(qū)域的信息數(shù)據(jù),再發(fā)送至數(shù)據(jù)中心進(jìn)行整合、存儲(chǔ)。信息數(shù)據(jù)的收集過程如圖所示。

4、由于已建成的大數(shù)據(jù)平臺(tái)積累了大量用戶基礎(chǔ)信息和用戶觀看記錄信息等數(shù)據(jù),所以在此基礎(chǔ)上進(jìn)一步挖掘出數(shù)據(jù)價(jià)值,可以提升客戶體驗(yàn),并提出精準(zhǔn)的營(yíng)銷建議,采取有效應(yīng)對(duì)措施,實(shí)現(xiàn)增加用戶黏度,從而使用戶與企業(yè)之間建立穩(wěn)定交互關(guān)系,實(shí)現(xiàn)客戶鏈?zhǔn)椒磻?yīng)增值。

熟悉數(shù)據(jù)情況

1、在大數(shù)據(jù)平臺(tái)中存有用戶的基礎(chǔ)信息(安裝地址等)、訂單數(shù)據(jù)(產(chǎn)品訂購(gòu)、退訂信息)、工單數(shù)據(jù)(報(bào)裝、故障、投訴、咨詢等工單信息)、收費(fèi)數(shù)據(jù)(繳費(fèi)、托收等各渠道支付信息)、賬單數(shù)據(jù)(月租賬單收入數(shù)據(jù))、雙向互動(dòng)電視平臺(tái)收視行為數(shù)據(jù)(直播、點(diǎn)播、回看、廣告的收視數(shù)據(jù))、用戶上網(wǎng)設(shè)備的指標(biāo)狀態(tài)數(shù)據(jù)(上下行電平、信噪比、流量等),共7種數(shù)據(jù)。

2、由于每個(gè)用戶收視習(xí)慣、興趣愛好存在差異性,本次抽取了2000個(gè)樣本用戶在2018年5月12日至2018年6月12日的收視行為信息數(shù)據(jù)和收費(fèi)數(shù)據(jù),并對(duì)兩份數(shù)據(jù)表進(jìn)行脫敏處理。?

3、各數(shù)據(jù)表及特征說明如表所示。

熟悉項(xiàng)目流程

如何將豐富的電視產(chǎn)品與用戶個(gè)性化需求實(shí)現(xiàn)最優(yōu)匹配,是廣電行業(yè)急需解決的重要問題。用戶對(duì)電視產(chǎn)品的需求不同,在挑選搜尋想要的信息過程中,需要花費(fèi)大量的時(shí)間,這種情況的出現(xiàn)造成了用戶的不斷流失,對(duì)企業(yè)造成巨大的損失。廣電大數(shù)據(jù)可視化的主要步驟如下。

1、抽取2000個(gè)用戶在2018年5月12日至2018年6月12日的收視行為信息數(shù)據(jù)和收費(fèi)數(shù)據(jù)

2、對(duì)抽取的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗

3、對(duì)清洗后的數(shù)據(jù)進(jìn)行可視化分析,包括用戶分析、頻道分析、時(shí)長(zhǎng)分析、周時(shí)長(zhǎng)分析和用戶支付方式分析等

4、撰寫項(xiàng)目分析報(bào)告??

?讀取與處理廣播電視數(shù)據(jù)

讀取數(shù)據(jù)

1、在項(xiàng)目的原始數(shù)據(jù)中可能會(huì)出現(xiàn)部分噪聲數(shù)據(jù),如重復(fù)值、異常值、冗余數(shù)據(jù)等,將會(huì)對(duì)后續(xù)的可視化分析結(jié)果造成影響。因此,需要在Python中讀取廣播電視數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行清洗。

2、通過pandas庫(kù)中的read_csv()函數(shù)讀取用戶收視行為數(shù)據(jù)和收費(fèi)數(shù)據(jù)。結(jié)果如表所示。?

?

清洗數(shù)據(jù)

1、通過讀取數(shù)據(jù)的運(yùn)行結(jié)果可知,用戶收視行為數(shù)據(jù)和收費(fèi)數(shù)據(jù)存在的數(shù)據(jù)量相對(duì)較多,其中可能存在一定的缺失值、異常值等數(shù)據(jù),且不同的數(shù)據(jù)存在的問題可能會(huì)不一致。

2、因此需要根據(jù)不同數(shù)據(jù)中存在的不同情況,分別對(duì)行為信息數(shù)據(jù)和收費(fèi)數(shù)據(jù)進(jìn)行清洗處理 。

1、收視行為信息數(shù)據(jù)

1、在用戶的收視行為信息數(shù)據(jù)(media_index)中存在直播頻道名稱(station_name)中含有“-高清”字段,如“江蘇衛(wèi)視-高清”與“江蘇衛(wèi)視”等。由于本項(xiàng)目中暫不分開考慮是否為高清頻道的情況,所以需要將直播頻道名稱中“-高清”字段替換為空?!皬V州電視”與“廣州電視-高清”

?

2、從業(yè)務(wù)角度分析,該廣電運(yùn)營(yíng)商主要面向的對(duì)象是眾多的普通家庭,而收視行為信息數(shù)據(jù)中存在特殊線路和政企類的用戶,即用戶等級(jí)號(hào)(owner_code)為02、09、10的數(shù)據(jù)與用戶等級(jí)名稱(owner_name)為EA級(jí)、EB級(jí)、EC級(jí)、ED級(jí)、EE級(jí)的數(shù)據(jù)。因?yàn)樘厥饩€路主要是起到演示、宣傳等作用,這部分?jǐn)?shù)據(jù)對(duì)于分析用戶行為意義不大,并且會(huì)影響分析結(jié)果的準(zhǔn)確性,所以需要將這部分?jǐn)?shù)據(jù)刪除。而政企類數(shù)據(jù)暫時(shí)不做分析,同樣也需要?jiǎng)h除。?

?

?3、在收視行為信息數(shù)據(jù)中存在有同一用戶開始觀看時(shí)間(origin_time)結(jié)束觀看時(shí)間(end_time)重復(fù)的記錄數(shù)據(jù),而且觀看的節(jié)目不同,如圖所示,這可能是由于數(shù)據(jù)收集設(shè)備導(dǎo)致的。經(jīng)過與廣電運(yùn)營(yíng)商的業(yè)務(wù)人員溝通之后,默認(rèn)保留第一條收視記錄,因此需要基于數(shù)據(jù)中開始觀看時(shí)間(origin_time)和結(jié)束時(shí)間(end_time)的記錄進(jìn)行去重。

?

?4、在收視行為信息數(shù)據(jù)中存在跨夜的記錄數(shù)據(jù),如開始觀看時(shí)間和結(jié)束觀看時(shí)間分別為05-12 23:45:00和05-13 00:31:00,如圖所示。

5、在對(duì)用戶收視行為信息數(shù)據(jù)進(jìn)行分析時(shí)發(fā)現(xiàn),存在用戶的觀看時(shí)間極短的現(xiàn)象,如圖所示?,這部分觀看時(shí)間過短可能是因?yàn)橛脩粼谟^看中換頻道。經(jīng)過與廣電運(yùn)營(yíng)商的業(yè)務(wù)人員溝通之后,選擇觀看時(shí)長(zhǎng)小于4秒作為時(shí)間極短的判斷閾值,將小于閾值的數(shù)據(jù)稱為異常行為數(shù)據(jù),統(tǒng)一進(jìn)行刪除處理。

?6、此外,還存在用戶較長(zhǎng)時(shí)間觀看同一頻道的現(xiàn)象,這部分觀看時(shí)間過長(zhǎng)可能是因?yàn)橛脩粼谑找曅袨榻Y(jié)束后,未能及時(shí)關(guān)閉機(jī)頂盒或其他原因造成。這類用戶在廣電運(yùn)營(yíng)大數(shù)據(jù)平臺(tái)中數(shù)據(jù)記錄中,未進(jìn)行收視互動(dòng)的情況下,節(jié)目開始觀看時(shí)間和結(jié)束觀看時(shí)間的單位秒為00的整點(diǎn)(秒)播放。經(jīng)過與廣電運(yùn)營(yíng)商的業(yè)務(wù)人員溝通之后,選擇將直播收視數(shù)據(jù)中開始觀看時(shí)間和結(jié)束觀看時(shí)間的單位秒為00的記錄刪除。

7、最后,發(fā)現(xiàn)數(shù)據(jù)有下次觀看的開始觀看時(shí)間小于上一次觀看的結(jié)束觀看時(shí)間的記錄,這種異常數(shù)據(jù)的產(chǎn)生是由于數(shù)據(jù)收集設(shè)備異常導(dǎo)致的,需要進(jìn)行刪除處理

8、綜合上述業(yè)務(wù)數(shù)據(jù)處理方法,清洗收視行為信息數(shù)據(jù)的具體步驟如下。

將直播頻道名稱(station_name)中“-高清”替換為空刪除特殊線路的用戶,用戶等級(jí)號(hào)(owner_code)為02、09、10的數(shù)據(jù)刪除政企用戶,用戶等級(jí)名稱(owner_name)為EA級(jí)、EB級(jí)、EC級(jí)、ED級(jí)、EE級(jí)的數(shù)據(jù)基于數(shù)據(jù)中開始觀看時(shí)間(origin_time)和結(jié)束觀看時(shí)間(end_time)的記錄去重隔夜處理,將跨夜的收視數(shù)據(jù)分成兩天即兩條收視數(shù)據(jù)刪除觀看同一頻道累計(jì)連續(xù)觀看小于4秒的記錄刪除直播收視數(shù)據(jù)中開始觀看時(shí)間和結(jié)束時(shí)間的單位秒為00的收視數(shù)據(jù)刪除下次觀看記錄的開始觀看時(shí)間小于上一次觀看記錄的結(jié)束觀看時(shí)間的記錄

代碼:3分鐘左右

# 讀取數(shù)據(jù)

import pandas as pd

data_xin = pd.read_csv('media_index.csv', encoding='gbk', header='infer')

data_shou = pd.read_csv('mmconsume_payevents.csv', sep=',',encoding='gbk', header='infer')

#GBK編碼是中文編碼,UTF-8編碼是多字符集編碼,支持多國(guó)語言

#header:是否將原數(shù)據(jù)集中的第一行作為表頭,默認(rèn)是,并將第一行作為變量名稱:如果原始數(shù)據(jù)中沒有表頭,該參數(shù)需要設(shè)置成None

# header='infer'默認(rèn)以第一行作為標(biāo)題, header=None不要以第一行作為標(biāo)題

# sep分隔符。 csv文件的分隔符就是,可以默認(rèn)。

print(data_xin.shape,data_shou.shape)#shape:讀取矩陣或數(shù)組的長(zhǎng)度

# 信息數(shù)據(jù)

# 1、將“-高清”替換為空

data_xin['station_name'] = data_xin['station_name'].str.replace('-高清', '')

#一.replace():替換函數(shù)

#基本用法:對(duì)象.replace(rgExp,replaceText,max)

#其中,rgExp和replaceText是必須要有的,max是可選的參數(shù),可以不加。

#rgExp是指 String 對(duì)象或文字;replaceText是一個(gè)String 對(duì)象或字符串文字;max是一個(gè)數(shù)字。

# 對(duì)于一個(gè)對(duì)象,在對(duì)象的每個(gè)rgExp都替換成replaceText,從左到右最多max次。

# 2、過濾特殊線路、政企用戶

media = data_xin.loc[(data_xin.owner_code != 2)&(data_xin.owner_code != 9)&(data_xin.owner_code != 10), :]

print('查看過濾后的特殊線路的用戶:', media.owner_code.unique())

media = media.loc[(media.owner_name != 'EA級(jí)')&(media.owner_name != 'EB級(jí)')&

(media.owner_name != 'EC級(jí)')&(media.owner_name != 'ED級(jí)')&

(media.owner_name != 'EE級(jí)'), :]

print('查看過濾后的政企用戶:', media.owner_name.unique())

#data.loc[(data['A']==0)&(data['B']==2)] #提取data數(shù)據(jù)(多個(gè)篩選條件)

#data.loc[:,:]:提取所有數(shù)據(jù)

#unique():去除其中重復(fù)的元素,并按元素由大到小返回一個(gè)新的無元素重復(fù)的元組或者列表

#第三步的前提操作

# 對(duì)開始時(shí)間進(jìn)行拆分

# 檢查數(shù)據(jù)類型:origin_time:開始觀看時(shí)間

time = media.loc[0, 'origin_time']#取“origin_time”列中的第一個(gè)數(shù)

type(time)#type:類型

#loc就是location,而iloc就是integer location。顧名思義,后者參數(shù)只能是整數(shù)。

#.loc先行后列,中間用逗號(hào)(,)分割,例如取 a 和 A 對(duì)應(yīng)的數(shù)據(jù):df.loc['a','A']

#----------------------------------------------------------------

# 轉(zhuǎn)化為時(shí)間類型:Pandas日期數(shù)據(jù)處理函數(shù) to_datetime()

# 將時(shí)間格式的字符串轉(zhuǎn)換為標(biāo)準(zhǔn)的時(shí)間

media['end_time'] = pd.to_datetime(media['end_time'])

media['origin_time'] = pd.to_datetime(media['origin_time'])

#to_datetime函數(shù)可以用來批量處理日期數(shù)據(jù)轉(zhuǎn)換,可以將日期數(shù)據(jù)轉(zhuǎn)換成你需要的各種格式

#----------------------------------------------------------------

# 提取秒

#提取時(shí)間中的秒,將其賦給新列秒

#dt:日期時(shí)間數(shù)據(jù)

#python的日期抽?。篸t.hour、dt.minute、dt.second、dt.microsecond:獲取時(shí)、分、秒、微秒

media['origin_second'] = media['origin_time'].dt.second

media['end_second'] = media['end_time'].dt.second

# 篩選數(shù)據(jù)

#“~”符號(hào)在這里是取反的意思,表示對(duì) df[col].isin(list) 這句返回的值取反

a = (media['origin_second'] == 0) & (media['end_second'] == 0)

media1 = media.loc[~a, :]#所有的列

# 3、基于開始時(shí)間和結(jié)束時(shí)間的記錄去重

# to_datetime:將時(shí)間格式的字符串轉(zhuǎn)換為標(biāo)準(zhǔn)的時(shí)間

#drop_duplicates 是 pandas 庫(kù)中的一個(gè)函數(shù),用于刪除數(shù)據(jù)框中的重復(fù)行。

# 該函數(shù)默認(rèn)會(huì)對(duì)整個(gè)數(shù)據(jù)框進(jìn)行重復(fù)行的刪除,也可以通過指定特定的列來確定重復(fù)行。

media1.end_time = pd.to_datetime(media1.end_time)

media1.origin_time = pd.to_datetime(media1.origin_time)

media1 = media1.drop_duplicates(['origin_time', 'end_time'])

# 第四步的前提處理:隔夜處理

# 去除開始時(shí)間,結(jié)束時(shí)間為空值的數(shù)據(jù)

#Python處理數(shù)據(jù)中的空值(缺失值)時(shí)用到的dropna()函數(shù)

#index:索引

media1 = media1.loc[media1.origin_time.dropna().index, :]

media1 = media1.loc[media1.end_time.dropna().index, :]

# 創(chuàng)建星期特征列

#lambda函數(shù)也叫匿名函數(shù)

#apply():當(dāng)一個(gè)函數(shù)的參數(shù)存在于一個(gè)元組或者一個(gè)字典中時(shí),用來間接的調(diào)用這個(gè)函數(shù),并肩元組或者字典中的參數(shù)按照順序傳遞給參數(shù)

#datetime.weedak()方法的返回值為[0,6]之間的整數(shù),分別代表周一到周日

media1['星期'] = media1.origin_time.apply(lambda x: x.weekday()+1)

rq = {1:'星期一', 2:'星期二', 3:'星期三', 4:'星期四', 5:'星期五', 6:'星期六', 7:'星期日'}#字典

for i in range(1, 8):#表示從1到9循環(huán)遍歷,每次循環(huán)的變量名為i

# 篩選出數(shù)據(jù)框 media1 中星期為 i 的行,并返回這些行的索引。其中的 : 表示返回所有列的數(shù)據(jù)

xq = media1.loc[media1['星期'] == i, :].index

#這行代碼是在 Pandas 庫(kù)中的 DataFrame 對(duì)象 media1 的 xq 行的“星期”列中插入 rq 列表中第 i 個(gè)元素的值。

# 具體來說,它是在 DataFrame 的 xq 行的“星期”列中將值設(shè)置為 rq[i]

media1.loc[xq, '星期'] = rq[i]

# 4、查看有多少觀看記錄是隔天的,隔天的進(jìn)行隔天處理

#象 media1 中 origin_time 列的日期取出來,并轉(zhuǎn)換為 day(即日期中的天數(shù))的操作

b = media1.origin_time.apply(lambda x :x.day)

c = media1.end_time.apply(lambda x :x.day)

sum(b != c)

# copy()淺度復(fù)制:復(fù)制的數(shù)會(huì)隨著被復(fù)制數(shù)的嵌套序列的元素的改變而改變;功能:將一個(gè)列表復(fù)制給另一個(gè)列表

media2 = media1.loc[b != c, :].copy() # 需要做隔天處理的數(shù)據(jù)

def geyechuli(x):

dic = {'星期一':'星期二', '星期二':'星期三', '星期三':'星期四', '星期四':'星期五',

'星期五':'星期六', '星期六':'星期日', '星期日':'星期一'}

#axis=0 表示按照行的方向;axis=1 表示按照列的方向

return x.apply(lambda y: dic[y.星期], axis=1)

media1.loc[b != c, 'end_time'] = media1.loc[b != c, 'end_time'].apply(lambda x:

pd.to_datetime('%d-%d-%d 23:59:59'%(x.year, x.month, x.day)))

media2.loc[:, 'origin_time'] = pd.to_datetime(media2.end_time.apply(lambda x:

'%d-%d-%d 00:00:01'%(x.year, x.month, x.day)))

media2.loc[:, '星期'] = geyechuli(media2)

media3 = pd.concat([media1, media2])#concat:拼接

media3['origin_time1'] = media3.origin_time.apply(lambda x:

x.second + x.minute * 60 + x.hour * 3600)

media3['end_time1'] = media3.end_time.apply(lambda x:

x.second + x.minute * 60 + x.hour * 3600)

media3['wat_time'] = media3.end_time1 - media3.origin_time1 # 構(gòu)建觀看總時(shí)長(zhǎng)特征

# 清洗時(shí)長(zhǎng)不符合的數(shù)據(jù)

# 6、剔除下次觀看的開始時(shí)間小于上一次觀看的結(jié)束時(shí)間的記錄

#sort_values()將數(shù)據(jù)集依照某個(gè)字段中的數(shù)據(jù)進(jìn)行排序,該函數(shù)即可根據(jù)指定列數(shù)據(jù)也可根據(jù)指定行的數(shù)據(jù)排序。

#phone_no:用戶名

media3 = media3.sort_values(['phone_no', 'origin_time'])

#resert_index()函數(shù):drop: 重新設(shè)置索引后是否將原索引作為新的一列并入DataFrame,默認(rèn)為False

media3 = media3.reset_index(drop=True)

d = [media3.loc[i+1, 'origin_time'] < media3.loc[i, 'end_time'] for i in range(len(media3)-1)]

#df.append()可以將其他DataFrame附加到調(diào)用方的末尾,并返回一個(gè)新對(duì)象.它是最簡(jiǎn)單、最常用的數(shù)據(jù)合并方式

d.append(False)

e = pd.Series(d)#構(gòu)造一維數(shù)組

media3 = media3.loc[~e, :]#~:相反的值;d:下次觀看的開始時(shí)間小于上一次觀看的結(jié)束時(shí)間的記錄

# 5、去除小于4S的記錄:wat_time:總時(shí)長(zhǎng)

media3 = media3.loc[media3['wat_time'] > 4, :]

# 保存貼標(biāo)簽用

media3.to_csv('media3.csv', na_rep='NaN', header=True, index=False)

# 查看連續(xù)觀看同一頻道的時(shí)長(zhǎng)是否大于3h

# 發(fā)現(xiàn)這2000個(gè)用戶不存在連續(xù)觀看大于3h的情況

media3['date'] = media3.end_time.apply(lambda x :x.date())

media_group = media3['wat_time'].groupby([media3['phone_no'],

media3['date'],

media3['station_name']]).sum()

media_group = media_group.reset_index()

media_g = media_group.loc[media_group['wat_time'] >= 10800, ]#3h=10800s

media_g['time_label'] = 1

o = pd.merge(media3, media_g, left_on=['phone_no', 'date', 'station_name'],

right_on=['phone_no', 'date', 'station_name'], how='left')

oo = o.loc[o['time_label'] == 1, :]

結(jié)果

??

?2、收費(fèi)數(shù)據(jù)

對(duì)于收費(fèi)數(shù)據(jù)(mmconsume-payevents),只需刪除特殊線路和政企類的用戶即可,具體步驟如下。

刪除特殊線路的用戶,用戶等級(jí)號(hào)(owner_code)為02、09、10的數(shù)據(jù)刪除政企用戶,用戶等級(jí)名稱(owner_name)為EA級(jí)、EB級(jí)、EC級(jí)、ED級(jí)、EE級(jí)的數(shù)據(jù)

代碼:

# 收費(fèi)數(shù)據(jù)

#GBK編碼是中文編碼,UTF-8編碼是多字符集編碼,支持多國(guó)語言

#header:是否將原數(shù)據(jù)集中的第一行作為表頭,默認(rèn)是,并將第一行作為變量名稱:如果原始數(shù)據(jù)中沒有表頭,該參數(shù)需要設(shè)置成None

# header='infer'默認(rèn)以第一行作為標(biāo)題, header=None不要以第一行作為標(biāo)題

# sep分隔符。 csv文件的分隔符就是,可以默認(rèn)。

payevents1 = pd.read_csv('mmconsume_payevents.csv', sep=',',encoding='gbk', header='infer')

#這行代碼的作用是將一個(gè) DataFrame 中的列名重新命名為指定的列名。

#具體來說,這個(gè) DataFrame 中包含了電話號(hào)碼、所有者姓名、事件時(shí)間、支付名稱、登錄組名稱和所有者代碼等信息,

#而這行代碼將這些列名依次改為了 phone_no、owner_name、event_time、payment_name、login_group_name 和 owner_code。

#這樣做的好處是使得數(shù)據(jù)更加易于理解和操作,可以方便地進(jìn)行數(shù)據(jù)分析和處理。

#t_aa63affcd82ddfe013a1984425829dd740d86fc4_10003630_0_1.phone_no:原列名

payevents1.columns = ['phone_no', 'owner_name', 'event_time', 'payment_name',

'login_group_name', 'owner_code']#相當(dāng)于重命名

# 過濾特殊線路、政企用戶

payevents2 = payevents1.loc[(payevents1.owner_code != 2

)&(payevents1.owner_code != 9

)&(payevents1.owner_code != 10), :] # 去除特殊線路數(shù)據(jù)

print('查看過濾后的特殊線路的用戶:', payevents2.owner_code.unique())

payevents3 = payevents2.loc[(payevents2.owner_name != 'EA級(jí)'

)&(payevents2.owner_name != 'EB級(jí)'

)&(payevents2.owner_name != 'EC級(jí)'

)&(payevents2.owner_name != 'ED級(jí)'

)&(payevents2.owner_name != 'EE級(jí)'), :]

print('查看過濾后的政企用戶:', payevents3.owner_name.unique())

payevents3.to_csv('payevents3.csv', na_rep='NaN', header=True, index=False)

?結(jié)果:

?

繪制可視化圖片?

matplotlib:繪制代碼

# 代碼6-4

import pandas as pd

import matplotlib.pyplot as plt

import matplotlib.ticker as ticker

import seaborn as sns

import re

plt.rcParams['font.sans-serif'] = ['SimHei'] # 設(shè)置字體為SimHei顯示中文

plt.rcParams['axes.unicode_minus'] = False # 設(shè)置正常顯示符號(hào)

media3 = pd.read_csv('media3.csv', header='infer')

# 用戶觀看總時(shí)長(zhǎng)

m = pd.DataFrame(media3['wat_time'].groupby([media3['phone_no']]).sum())

m = m.sort_values(['wat_time'])

m = m.reset_index()

m['wat_time'] = m['wat_time'] / 3600

m['id'] = m.index

ax = sns.barplot(x='id', y='wat_time', data=m)

ax.xaxis.set_major_locator(ticker.MultipleLocator(250))

ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.xlabel('觀看用戶(排序后)')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('用戶觀看總時(shí)長(zhǎng)')

plt.show()

# 代碼6-5

# 所有收視頻道名稱的觀看時(shí)長(zhǎng)與觀看次數(shù)

media3.station_name.unique()

pindao = pd.DataFrame(media3['wat_time'].groupby([media3.station_name]).sum())

pindao = pindao.sort_values(['wat_time'])

pindao = pindao.reset_index()

pindao['wat_time'] = pindao['wat_time'] / 3600

pindao_n = media3['station_name'].value_counts()

pindao_n = pindao_n.reset_index()

pindao_n.columns = ['station_name', 'counts']

a = pd.merge(pindao, pindao_n, left_on='station_name', right_on ='station_name', how='left')

fig, ax1 = plt.subplots()

ax2 = ax1.twinx() # 構(gòu)建雙軸

sns.barplot(a.index, a.iloc[:, 1], ax=ax1)

sns.lineplot(a.index, a.iloc[:, 2], ax=ax2, color='r')

ax1.set_ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

ax2.set_ylabel('觀看次數(shù)')

ax1.set_xlabel('頻道號(hào)(排序后)')

plt.xticks([])

plt.title('所有收視頻道名稱的觀看時(shí)長(zhǎng)與觀看次數(shù)')

plt.show()

# 收視前15頻道名稱的觀看時(shí)長(zhǎng),由于pindao已排序,取后15條數(shù)據(jù)

sns.barplot(x='station_name', y='wat_time', data=pindao.tail(15))

plt.xticks(rotation=45)

plt.xlabel('頻道名稱')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('收視前15的頻道名稱')

plt.show()

# 代碼6-6

# 工作日與周末的觀看時(shí)長(zhǎng)比例

ind = [re.search('星期六|星期日', str(i)) != None for i in media3['星期']]

freeday = media3.loc[ind, :]

workday = media3.loc[[ind[i]==False for i in range(len(ind))], :]

m1 = pd.DataFrame(freeday['wat_time'].groupby([freeday['phone_no']]).sum())

m1 = m1.sort_values(['wat_time'])

m1 = m1.reset_index()

m1['wat_time'] = m1['wat_time'] / 3600

m2 = pd.DataFrame(workday['wat_time'].groupby([workday['phone_no']]).sum())

m2 = m2.sort_values(['wat_time'])

m2 = m2.reset_index()

m2['wat_time'] = m2['wat_time'] / 3600

w = sum(m2['wat_time']) / 5

f = sum(m1['wat_time']) / 2

plt.figure(figsize=(8, 8))

plt.subplot(211) # 參數(shù)為:行,列,第幾項(xiàng) subplot(numRows, numCols, plotNum)

colors = 'lightgreen','lightcoral'

plt.pie([w, f], labels = ['工作日', '周末'], colors=colors, shadow=True,

autopct='%1.1f%%', pctdistance=1.23)

plt.title('周末與工作日觀看時(shí)長(zhǎng)占比')

plt.subplot(223)

ax1 = sns.barplot(m1.index, m1.iloc[:, 1])

# 設(shè)置坐標(biāo)刻度

ax1.xaxis.set_major_locator(ticker.MultipleLocator(250))

ax1.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.xlabel('觀看用戶(排序后)')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('周末用戶觀看總時(shí)長(zhǎng)')

plt.subplot(224)

ax2 = sns.barplot(m2.index, m2.iloc[:, 1])

# 設(shè)置坐標(biāo)刻度

ax2.xaxis.set_major_locator(ticker.MultipleLocator(250))

ax2.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.xlabel('觀看用戶(排序后)')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('工作日用戶觀看總時(shí)長(zhǎng)')

plt.show()

# 代碼6-7

# 周觀看時(shí)長(zhǎng)分布

n = pd.DataFrame(media3['wat_time'].groupby([media3['星期']]).sum())

n = n.reset_index()

n = n.loc[[0, 2, 1, 5, 3, 4, 6], :]

n['wat_time'] = n['wat_time'] / 3600

plt.figure(figsize=(8, 4))

sns.lineplot(x='星期', y='wat_time', data=n)

plt.xlabel('星期')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('周觀看時(shí)長(zhǎng)分布')

plt.show()

# 付費(fèi)頻道與點(diǎn)播回看的周觀看時(shí)長(zhǎng)分布

media_res = media3.loc[media3['res_type'] == 1, :]

ffpd_ind = [re.search('付費(fèi)', str(i)) != None for i in media3.loc[:, 'station_name']]

media_ffpd = media3.loc[ffpd_ind, :]

z = pd.concat([media_res, media_ffpd], axis=0)

z = z['wat_time'].groupby(z['星期']).sum()

z = z.reset_index()

z = z.loc[[0, 2, 1, 5, 3, 4, 6], :]

z['wat_time'] = z['wat_time'] / 3600

plt.figure(figsize=(8, 4))

sns.lineplot(x='星期', y='wat_time', data=z)

plt.xlabel('星期')

plt.ylabel('觀看時(shí)長(zhǎng)(小時(shí))')

plt.title('付費(fèi)頻道與點(diǎn)播回看的周觀看時(shí)長(zhǎng)分布')

plt.show()

# 代碼6-8

# 設(shè)置Matplotlib正常顯示中文和負(fù)號(hào)

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

# 讀取csv文件

pay = pd.read_csv('payevents2.csv')

sns.countplot(x='payment_name', data=pay)

plt.xticks(rotation=80)

plt.xlabel('支付方式')

plt.ylabel('總數(shù)')

plt.title('用戶支付方式總數(shù)對(duì)比')

plt.show()

繪制可視化圖形

1、根據(jù)讀取與處理廣播電視數(shù)據(jù)只能簡(jiǎn)單的對(duì)數(shù)據(jù)進(jìn)行了解,并不能明確的看出數(shù)據(jù)中蘊(yùn)含的信息

2、因此,需要對(duì)清洗后的數(shù)據(jù)進(jìn)行可視化分析,清晰的展示出廣播電視數(shù)據(jù)中用戶的觀看信息,為運(yùn)營(yíng)商決策提供一定的參考

繪制用戶分析圖

分布分析是用戶在特定指標(biāo)下的頻次、總額等的歸類展現(xiàn),它可以展現(xiàn)出單個(gè)用戶對(duì)產(chǎn)品(電視)的依賴程度,從而分析出客戶觀看電視的總時(shí)長(zhǎng)、所購(gòu)買不同類型的產(chǎn)品數(shù)量等情況,幫助運(yùn)營(yíng)人員了解用戶的當(dāng)前狀態(tài)。如觀看時(shí)長(zhǎng)(20小時(shí)以下、20小時(shí)~50小時(shí)、50小時(shí)以上等區(qū)間)等分布情況三網(wǎng)融合讓人們可以便捷的獲取新聞資訊,各種平臺(tái)終端更是觸手可及,同時(shí)工作節(jié)奏的加快,忙碌的人們是否還花時(shí)間訂購(gòu)收看廣電節(jié)目?因此需要探索用戶的觀看總時(shí)長(zhǎng)分布情況。計(jì)算所有用戶在一個(gè)月內(nèi)的觀看總時(shí)長(zhǎng)并且排序,從而對(duì)用戶觀看總時(shí)長(zhǎng)分布進(jìn)行可視化分布。

import pandas as pd

import pyecharts.options as opts

from pyecharts.charts import Bar

media3 = pd.read_csv('media3.csv', header='infer')

#數(shù)據(jù)處理

media3_sum = media3['wat_time'].groupby([media3['phone_no']]).sum()

m = pd.DataFrame({'phone_no': media3_sum.index, 'wat_time': media3_sum.values})

m = m.sort_values(['wat_time'])

m['wat_time'] = m['wat_time'] / 3600

m['id'] = m.index

#繪圖

bar = (

Bar()

.add_xaxis(m['id'].tolist())

.add_yaxis('觀看時(shí)長(zhǎng)', m['wat_time'].tolist())

.set_global_opts(

xaxis_opts=opts.AxisOpts(

axislabel_opts=opts.LabelOpts(formatter='{value}'),

name='觀看時(shí)長(zhǎng)',

name_location='center',

name_gap=50

),

yaxis_opts=opts.AxisOpts(

axislabel_opts=opts.LabelOpts(formatter='{value}小時(shí)'),

name='用戶數(shù)',

name_location='center',

name_gap=30

),

title_opts=opts.TitleOpts(title='用戶觀看總時(shí)長(zhǎng)'))

.set_series_opts(

label_opts=opts.LabelOpts(position='top', formatter='{c}小時(shí)',is_show=False)

)

)

bar.render("1.html")

?

?

繪制頻道分析圖

貢獻(xiàn)度分析又稱帕累托分析,它的原理是帕累托法則又稱20/80定律。同樣的投入放在不同的地方會(huì)產(chǎn)生不同的效益。例如,對(duì)一個(gè)公司而言,80%的利潤(rùn)常來自于20%最暢銷的產(chǎn)品,而其他80%的產(chǎn)品只產(chǎn)生了20%的利潤(rùn)。為更好的了解觀眾最熱衷哪些節(jié)目或哪些頻道最受歡迎,提高收視率,因此需要對(duì)所有收視頻道名稱的觀看時(shí)長(zhǎng)與觀看次數(shù)進(jìn)行貢獻(xiàn)度分析。

??

?

?

繪制時(shí)長(zhǎng)分析圖

對(duì)比分析是指將兩個(gè)相互聯(lián)系的指標(biāo)進(jìn)行比較,從數(shù)量上展示和說明研究對(duì)象規(guī)模的大小、水平的高低、速度的快慢和各種關(guān)系是否協(xié)調(diào),特別適用于指標(biāo)間的橫縱向比較、時(shí)間序列的比較分析。在對(duì)比分析中,選擇合適的對(duì)比標(biāo)準(zhǔn)是十分關(guān)鍵的步驟。當(dāng)選擇合適的對(duì)比標(biāo)準(zhǔn)時(shí),才能做出客觀的評(píng)價(jià);當(dāng)選擇不合適的對(duì)比標(biāo)準(zhǔn)時(shí),評(píng)價(jià)可能得出錯(cuò)誤的結(jié)論。對(duì)比分析主要有兩種形式:靜態(tài)對(duì)比和動(dòng)態(tài)對(duì)比。靜態(tài)對(duì)比,是指在同一時(shí)間條件下對(duì)不同總體指標(biāo)進(jìn)行比較,如不同部門、不同地區(qū)、不同國(guó)家的比較,也稱為“橫比”;動(dòng)態(tài)對(duì)比,是指在同一總體條件下對(duì)不同時(shí)期指標(biāo)數(shù)據(jù)的比較,也稱為“縱比”。將工作日(5天)與周末(2天)進(jìn)行劃分,使用餅圖展示所有用戶的觀看總時(shí)長(zhǎng)的占比分布(計(jì)算觀看總時(shí)長(zhǎng)時(shí)需要除以天數(shù)),并對(duì)所有用戶在工作日和周末的觀看總時(shí)長(zhǎng)的分布使用柱狀圖進(jìn)行對(duì)比。

?

?

繪制周時(shí)長(zhǎng)分析圖

為了使運(yùn)營(yíng)商清楚的了解在一周時(shí)間內(nèi)每天的觀看時(shí)長(zhǎng),從而有針對(duì)性的投放受歡迎的節(jié)目,增加用戶的使用黏度。需要分別繪制了頻道周觀看時(shí)長(zhǎng)分布圖以及付費(fèi)頻道與點(diǎn)播回看的周觀看時(shí)長(zhǎng)分布圖。?

?

繪制用戶支付方式分析圖

傳統(tǒng)廣播電視企業(yè)如果在互聯(lián)網(wǎng)時(shí)代脫穎而出,那么不僅要在電視節(jié)目以及電視節(jié)目投放安排上進(jìn)行分析,還要開發(fā)一些產(chǎn)品的周邊服務(wù),為用戶帶來全新的體驗(yàn)。通過繪制用戶支付方式分析圖,觀察用戶的支付方式情況,從而方便傳統(tǒng)廣播電視企業(yè)為用戶開展一些便民服務(wù),吸引更多的用戶使用,增加收益。?

項(xiàng)目分析報(bào)告?

通過對(duì)收視行為信息數(shù)據(jù)和收費(fèi)數(shù)據(jù)的進(jìn)行清洗和可視化分析,已經(jīng)初觀察出用戶的觀看時(shí)長(zhǎng)走勢(shì)分布、收視頻道的排名、工作日與周末收視觀看占比、點(diǎn)播回看的總體情況以及用戶付費(fèi)方式。了解更清晰的展示項(xiàng)目的結(jié)果,需要撰寫項(xiàng)目分析報(bào)告,幫助開發(fā)者掌握廣電大數(shù)據(jù)可視化的項(xiàng)目分析結(jié)果,給決策部門提供一個(gè)完整規(guī)范的方案,并幫助企業(yè)靈活調(diào)整經(jīng)營(yíng)決策。分析報(bào)告包括了背景與目的、分析思路、分析結(jié)果、總結(jié)與建議,其模板如第一章撰寫項(xiàng)目分析報(bào)告示例圖所示。由于前面已經(jīng)介紹過本項(xiàng)目的背景與目的,所以此處將不再重復(fù)介紹。

背景與目的

新零售智能銷售設(shè)備以線上經(jīng)營(yíng)的理念,

了解銷售的整體情況,為新零售智能銷售設(shè)備商家提供相關(guān)的建議。

分析思路

收集大數(shù)據(jù)平臺(tái)上的數(shù)據(jù)進(jìn)行讀取,清楚的熟悉數(shù)據(jù)的結(jié)構(gòu)根據(jù)項(xiàng)目的分析目的對(duì)收集到的數(shù)據(jù)進(jìn)行清洗,包括對(duì)收視行為信息數(shù)據(jù)、賬單與收費(fèi)數(shù)據(jù)、訂單數(shù)據(jù)和用戶狀態(tài)數(shù)據(jù)進(jìn)行清洗處理根據(jù)清洗后數(shù)據(jù)進(jìn)行可視化分析,包括用戶分析、頻道分析、時(shí)長(zhǎng)分析、周時(shí)長(zhǎng)分析和用戶支付方式分析

?

分析結(jié)果

由圖可知,大部分用戶的觀看總時(shí)長(zhǎng)主要集中在100小時(shí)~400小時(shí)之間。且隨著收視用戶的增多,電視節(jié)目的觀看時(shí)長(zhǎng)也在穩(wěn)步增長(zhǎng)。一個(gè)月平均每天觀看10小時(shí)左右,這說明用戶對(duì)廣電節(jié)目有一定的依賴性,同時(shí)也說明了廣電節(jié)目對(duì)用戶有一定的吸引力,但仍然有一定的增長(zhǎng)空間。

?

分析結(jié)果

由圖可知,隨著觀看各頻道次數(shù)增多,觀看時(shí)長(zhǎng)也在隨之增多,且后面近28%的頻道帶來了80%的觀看時(shí)長(zhǎng)貢獻(xiàn)度。出現(xiàn)這種情況的原因可能是也部分頻道具有地方特色,或播放的節(jié)目比較受歡迎。

?

由圖可知,排名前15的頻道名稱為翡翠臺(tái)、中央3臺(tái)、中央新聞、廣東體育、中央8臺(tái)、CCTV5+體育賽事、廣東珠江、廣東南方衛(wèi)視、江蘇衛(wèi)視、中央6臺(tái)、鳳凰中文、中央4臺(tái)、廣州電視、中央1臺(tái)、中央5臺(tái)。其中,廣東體育、廣東珠江、廣東南方衛(wèi)視、廣州電視都相對(duì)具有地方特色,而翡翠臺(tái)則是廣東話(粵語)廣播為主的綜合娛樂頻道,也相對(duì)符合廣東人民的喜好。同時(shí)這也從側(cè)面證明了所有收視頻道名稱的觀看時(shí)長(zhǎng)與觀看次數(shù)圖的分析結(jié)果。

?

由圖可知,周末的觀看時(shí)長(zhǎng)占觀看總時(shí)長(zhǎng)的52.5%,而工作日的觀看時(shí)長(zhǎng)的占比為47.5%;周末觀看的用戶時(shí)長(zhǎng)集中在20小時(shí)~100小時(shí)之間,工作日觀看的用戶時(shí)長(zhǎng)集中在50小時(shí)~250小時(shí)之間。雖然在比例圖中,周末與工作日的比例相差不大,但是在分布圖中工作日的觀看總時(shí)長(zhǎng)仍比周末的觀看總時(shí)長(zhǎng)多,并且兩者分布圖形狀相似。出現(xiàn)這種情況的原因可能是因?yàn)橹苣┯脩艨芍涞臅r(shí)間更多,有更多的時(shí)間可用于觀看電視節(jié)目。但是周末只有2天,工作日有5天,所以工作日的觀看總時(shí)長(zhǎng)會(huì)比周末的觀看總時(shí)長(zhǎng)多。

?

由以下兩圖可知,在一周中,周一、周六、周日的觀看時(shí)間較長(zhǎng),其中周日觀看時(shí)間最長(zhǎng)。這說明人們更喜歡在周末且傾向于付費(fèi)觀看,在周二到周五忙于工作,無暇顧及電視節(jié)目,可能在周末點(diǎn)播回看。?

由圖可知,大多數(shù)用戶選擇現(xiàn)金支付,其次是翼支付托收、人行托收,選擇網(wǎng)廳網(wǎng)銀、短信支付、支付寶、支票、建行龍支付、微信等方式的用戶極少。說明用戶還是受傳統(tǒng)思想影響,傾向于使用現(xiàn)金支付,但是現(xiàn)金攜帶不便,也帶來一定的安全隱患。同時(shí)加強(qiáng)宣傳,引導(dǎo)用戶選擇掌上支付,業(yè)務(wù)也加強(qiáng)集成,方便終端綁定,一鍵式便捷支付。

?

總結(jié)與建議

通過對(duì)廣電大數(shù)據(jù)可視化分析,提出以下總結(jié)與建議。

大部分用戶的觀看總時(shí)長(zhǎng)主要集中在100小時(shí)~300小時(shí)之間且隨著用戶觀看各頻道次數(shù)增多,觀看時(shí)長(zhǎng)也在隨之增多。因此,可以適當(dāng)?shù)母牟煌l道的節(jié)目單,添加頻道的吸引力,從而增多用戶觀看各頻道次數(shù)和時(shí)長(zhǎng)。用戶觀看時(shí)長(zhǎng)前15名的頻道分別為翡翠臺(tái)、中央3臺(tái)、中央新聞、廣東體育、中央8臺(tái)、CCTV5+體育賽事、廣東珠江、廣東南方衛(wèi)視、江蘇衛(wèi)視、中央6臺(tái)、鳳凰中文、中央4臺(tái)、廣州電視、中央1臺(tái)、中央5臺(tái)。針對(duì)這個(gè)現(xiàn)象,并且周末的觀看時(shí)長(zhǎng)略高于工作日。針對(duì)這個(gè)現(xiàn)象,經(jīng)營(yíng)者可以在用戶觀看時(shí)長(zhǎng)前15名的頻道中將用戶喜好的節(jié)目投放時(shí)間把控在周末進(jìn)行播放,從而提高用戶的觀看興趣,增加用戶黏度。從而增加收視率。大多數(shù)用戶選擇現(xiàn)金支付。針對(duì)這個(gè)現(xiàn)象,經(jīng)營(yíng)者可以加大線上繳費(fèi)服務(wù)推廣宣傳,吸引更多的用戶,付費(fèi)頻道可以在周日提供更多的節(jié)目吸引用戶消費(fèi),增加收益。

?

小結(jié)

?本章基于廣播電視數(shù)據(jù),包括用戶的收視行為信息數(shù)據(jù)和收費(fèi)數(shù)據(jù),介紹了數(shù)據(jù)清洗的方法。并從用戶分析、頻道分析、時(shí)長(zhǎng)分析、周時(shí)長(zhǎng)分析和用戶支付方式分析5個(gè)方面對(duì)廣播電視數(shù)據(jù)進(jìn)行可視化分析。從而根據(jù)可視化結(jié)果,撰寫項(xiàng)目分析報(bào)告。

?

?

?

柚子快報(bào)激活碼778899分享:數(shù)據(jù)可視化之廣電大數(shù)據(jù)

http://yzkb.51969.com/

精彩文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19124260.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄