首页
学习
活动
专区
圈层
工具
发布
清单首页pyhton文章详情

用 Python 分析 YouTube 百万条数据

前言

之前 Python 写了一个简单的 WordCount 的程序,这里我们处理一些相对大点的数据,即对 YouTube 的百万条视频数据集进行处理。

该数据集是有格式的,各个字段的具体含义如下:

字段名

解释及数据类型

video ID

视频ID:每个视频均有唯一的11位字符串

uploader

上传者用户名:字符串类型

age

视频年龄:整数值,代表视频上传时间与2007年2月15日(Youtube创立日)的时间间隔

category

分类:由上传者选择的视频分类,字符串类型

length

视频长度:整数值

views

浏览量:整数值

rate

视频评分:浮点值

ratings

评分次数:整数值

comments

评论数:整数值

related IDs

相关视频ID:数量不超过20个,每一个相关视频的ID均为单独的一列

附图如下:

每条记录的相关视频数量不尽相同,因此数据不是很整齐,数据来自:Youtube Dataset,本次实验总数据大小共 826M3435539 行。

知识前提概要:

计算评分前 100 的视频

示例如下(”\t“分隔符隔开):

1234567891011

CRVmdd_bpA 4.87BFBixmV-pc 4.81BArP_-_vXI 4.566M41YqM_xk 4.52CYhSNHbeC8 4.38BwggJEPZQ 4.29FDJ8x3ZKQE 3.75BbtF1Ysel0 3.4AdZ6wRHsrE 2.9AKiJZEOqzQ 1.33.....

mapper

1234567891011121314

#!/usr/bin/env python#coding=utf-8import sysfor line in sys.stdin: line = line.strip() lineList = line.split("\t") if len(lineList) > 7: #规律少于7个字段的无效数据 videoName = lineList0 try: videoRating = float(lineList6) #去除脏数据,将不符合数据的评分归零 except ValueError: videoRating = 0.0 print "%s\t%s"%(videoName, videoRating)

reducer

1234567891011121314151617

#!/usr/bin/env python#coding=utf-8import sysdict = {}for line in sys.stdin: line = line.strip() line = line.split('\t') dict[line0] = float(line1) #将所有数据放到 dictionary 中,以便进行排序## 根据值进行排序,然后输出前 100 个sortResult = sorted(dict.items(),key=lambda d:d1,reverse=True)i = 0for max in sortResult: print "%s\t%s"%(max0,max1) i+=1 if i > 99: break

计算每个视频类型下的视频数量

示例如下(”\t“分隔符隔开):

123456

Science & Technology 45151Sports 23548Travel & Events 11544Nonprofits & Activism 15644People & Blogs 35165...

mapper

12345678

#!/usr/bin/env python#coding=utf-8import sysfor line in sys.stdin: line = line.strip() lineList = line.split('\t') if len(lineList) > 4: print "%s\t%s"%(lineList3, 1)

reducer

123456789101112

#!/usr/bin/env python#coding=utf-8import sysdict = {}for line in sys.stdin: line = line.strip() key, count = line.split('\t') dict.setdefault(key, 0) dictkey += int(count)for key, value in dict.items(): print "%s\t%s"%(key,value)

123456789101112131415161718

News & Politics 153677Education 15033Nonprofits & Activism 5879Entertainment 726567Travel & Events 25934Howto & DIY 36750Gadgets & Games 129481People & Blogs 275704Science & Technology 15856Howto & Style 45422Pets & Animals 54339UNA 33252Music 825158Travel & Places 34962Comedy 364937Sports 286697Autos & Vehicles 94111Film & Animation 296458

总数为 3410217,处理的文件总行数为 3435539,说明其中有 25322 条脏数据。

下一篇
举报
领券