# 1. 找出点赞数在100000次以上的视频ID、标题和赞数
# 2. 按照视频ID唯一的原则对原数据去重,创建一个新的表保存已经去重后的所有数据
# 3. 从已经去重的数据中找出点赞数排前10名的视频信息
# 4. 打印每个频道对应的发布的视频数量
# 5. 打印热度最高前三个视频的ID、标题、观看数量、点赞数量和评论数量
# 6. 根据上面的结果找出热门频道(“播放数+赞数+评论数”总和最高的前10名)。
import openpyxl
def get_all_data(is_new=False):
wb = openpyxl.load_workbook('files/某视频网站运营数据.xlsx')
if is_new:
sheet = wb['清洗后的数据']
else:
sheet = wb.active
max_r = sheet.max_row
max_c = sheet.max_column
# 获取第一行的所有内容(字典的所有键)
keys = []
for col in range(1, max_c+1):
keys.append(sheet.cell(1, col).value)
all_data = []
for row in range(2, max_r+1):
line_data = {}
for col in range(1, max_c+1):
line_data[keys[col-1]] = sheet.cell(row, col).value
all_data.append(line_data)
return all_data
if __name__ == '__main__':
# 获取所有数据
all_data = get_all_data(is_new=True)
# print(len(all_data))
# 1. 找出点赞数在100000次以上的视频ID、标题和赞数
# result = [x for x in all_data if x['likes'] > 100000]
# for x in result:
# print(x['video_id'], x['title'], x['likes'])
# 2. 按照视频ID唯一的原则对原数据去重,创建一个新的表保存已经去重后的所有数据
# 1)数据去重
# new_all_data = []
# ids = []
# for x in all_data:
# video_id = x['video_id']
# if video_id not in ids:
# new_all_data.append(x)
# ids.append(video_id)
# # print(new_all_data)
# print(len(new_all_data))
# 2)将去重后的数据写入新的表中
# wb = openpyxl.load_workbook('files/某视频网站运营数据.xlsx')
# sheet = wb.create_sheet('清洗后的数据')
# keys = list(new_all_data[0])
# for index in range(len(keys)):
# sheet.cell(1, index+1).value = keys[index]
#
#
# for row in range(2, len(new_all_data)+2):
# for col in range(1, len(keys)+1):
# sheet.cell(row, col).value = new_all_data[row-2][keys[col-1]]
# wb.save('files/某视频网站运营数据.xlsx')
# 3. 从已经去重的数据中找出点赞数排前10名的视频信息
# result = sorted(all_data, key=lambda x: x['likes'], reverse=True)[:10]
# print(result)
# 4.打印每个频道对应的发布的视频数量
# result = {} # {频道1: 数量1, 频道2:数量2,...}
# for x in all_data:
# channel = x['channel_title']
# num = result.get(channel, 0)
# result[channel] = num+1
# print(result)
# 5.打印热度最高前三个视频的ID、标题、观看数量、点赞数量和评论数量
result = {} # [(频道1, 热度值1), (频道2, 热度值2),...]
for x in all_data:
channel = x['channel_title']
num = result.get(channel, 0)
result[channel] = num + x['likes'] + x['views'] + x['comment_count']
new_result = [(key, result[key]) for key in result]
new_result.sort(key=lambda x: x[-1], reverse=True)
print(new_result[:10])
工作簿信息获取信息作业
最新推荐文章于 2024-08-10 10:46:00 发布