工作簿信息获取信息作业

# 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])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值