pandas指定分类树下节目点击次数和人数的统计

#指定分类树下节目点击次数和人数的统计,这次采用pandas模块
#Linux python3
#select p.name, p.code, c.name, c.categoryid
#  from program p,
#       categorydtl cdtl,
#       (select *
#          from category
#         start with categoryid = '41719'
#        connect by parentid = prior categoryid) c
# where cdtl.categoryid = c.categoryid
#   and p.programid = cdtl.objid
# 可以在linux上同时保留python2和python3的环境,python3建议安装Anaconda3,很多常用的模块就不需要在线安装。
#https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.0-Linux-x86_64.sh


import pandas as pd

#C3文件名
txtfile = '/newdata/C3/00000000.00000002.viewinfo.20181111.0001.txt'

#指定分类下节目明细表,就是上面的sql导出的csv文件
csvfile = '/root/bestv-categorydtl1.csv'

#读两个文件,由于C3文件比较大,1千万行左右,所以加载时需要30秒左右。C3文件采用“|”分割(sep='|'),csv文件用“,”分割,names指定每个列的列名
txtdf = pd.read_table(txtfile,sep='|',encoding='utf-8',low_memory=False,names = ['user_id','start_time','end_time','unknow','program_name','program_code'])
csvdf = pd.read_table(csvfile,sep=',',encoding='utf-8',low_memory=False,names = ['program_code','category_id'])

#merge 合并合并,on='program_code'指定合并时的连接键,默认采用两个文件的同名列名连接。
mergedf = pd.merge(csvdf,txtdf,on='program_code')

#根据合并结果,对user_id去重,然后取len,得到去重后user_id的个数
usercount = len(mergedf.user_id.drop_duplicates())

#根据合并结果,然后取len,得到观看次数
viewcount = len(mergedf)

#打印输出
print(usercount,viewcount)

#输出结果,表示有1747个不同user_id,这些用户产生5579次观看就
# time python3 bestvview.py
1747 5579

real    1m7.260s
user    0m18.158s
sys     0m43.385s 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值