之前 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,本次实验总数据大小共
826M
、3435539
行。
知识前提概要:
示例如下(”\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..... |
---|
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) |
---|
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... |
---|
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) |
---|
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
条脏数据。