先前發文
DAY 01 : 參賽目的與規劃
DAY 02 : python3 virtualenv 建置
DAY 03 : python3 request
DAY 04 : 使用beautifulsoup4 和lxml
DAY 05 : select 和find 抓取tag
DAY 06 : soup解析後 list取值
DAY 07 : request_header_cookie 通過網頁18限制
DAY 08 : ppt內文爬取
DAY 09 : 資料處理 split replace strip
DAY 10 : python csv 寫入 和dict 合併
DAY 11 : python class function
DAY 12 : crawl 框架 scrapy 使用
DAY 13 : scrapy 架構
DAY 14 : scrapy pipeline data insert mongodb
DAY 15 : scrapy middleware proxy
DAY 16 : scrapy selenium
DAY 17 : scrapy 爬取js畫面資料(二)
DAY 18 : scrapy splash 爬取js畫面資料(三)
DAY 19 : python .env 使用
DAY 20 : python chartify 資料視覺化套件
DAY 21 : python3 pandas 資料處理
DAY 22 : scrapy 資料應用apriori
DAY 23 : Datamining twitch data
由於期中是做 人數和類群分析 , 本來是想做實況主的開台時間預測 , 但很難做不出來 , 所以選擇使用apriori 做觀眾對 實況主 的關聯性
Twitch api:
https://dev.twitch.tv/docs/api/reference/#get-extension-analytics
官方提供的API 主要抓取==遊戲類群== 觀看總人數 ==前10名== , ==類群==裡前==100位實況主== , ==實況主==聊天室內==所有觀眾==
因為資料量很大 , 電腦load檔案就會有memory err的問題 , 所以切成==一個星期10個group==
目的:解決資料一次讀進來時 , 記憶體不足
df1 = pd.read_csv('./10_grand_theft_auto_v/twitch_0601_0607.txt', sep=",", chunksize = 100000, header=None, names=["mid", "viewer", "group", "master"])
# # print(df1)
df2 = pd.read_csv('./10_grand_theft_auto_v/twitch_0608_0614.txt', sep=",", chunksize = 100000, header=None, names=["mid", "viewer", "group", "master"])
# print(df2)
df = pd.DataFrame(columns=[])
合併使用chunksize ,生成的迭代器 並重新給index
for df1 in df1:
# print(df1)
# print(type(df1))
df3 = pd.concat([df,df1],ignore_index=True)
for df2 in df2:
# print(df2)
# print(type(df2))
df4 = pd.concat([df,df2],ignore_index=True)
2個星期合併
res = pd.concat([df3, df4], axis=0)
res['count'] = 1
new = res.pivot_table(index = 'viewer', columns = 'master', values = 'count', fill_value = 0, aggfunc = np.sum)
def encode_units(x):
if x <= 0:
return 0
if x>= 1:
return 1
new_sets = new.applymap(encode_units)
print(type(new_sets))
frequent_itemsets = apriori(new_sets, min_support = 0.01, use_colnames = True)
rules = association_rules(frequent_itemsets, metric="confidence", min_threshold = 0.1)
1 . overpow - LOL
2 . buli - GTA5
到這個網站找歷史資料
最後覺得有點不知如何是好 , 只好直接google ==Overpow Buli bonkol twitch==
所以在我使用的資料裡面 , 可以發現觀眾看的實況主們==Overpow== ==Buli== ==bonkol== 是比較多人同時或都會觀看的
在觀看youtube剪輯的時候發現這幾位實況主原來 在6月份的時候是一起玩遊戲的 , 所以觀眾在看其中一個實況主的時候 , 也會好奇另一個在同一個伺服器裡的實況主在做什麼, 所以才會出現這3位實況主有那麼強的關聯性