第二周-python实战-youtube视频分析

python实践


前言:本文主要针对kaggle上的一份 数据集,内容是关于youtube热点视频的分析,用python进行了一些分析,主要用到的是pandas的一些方法,结合案例加以操作,巩固python知识。

# 引入模块
import pandas as pd
import arrow
from matplotlib import pyplot as plt
%matplotlib inline

# 导入数据集,因为数据是按国家/地区分开的,鉴于全部数据量太多,本文只选择了四个国家/地区的数据
# 导入youtube数据,将不同地区的文件拼接在一起
data = pd.DataFrame()
for reg in ['CA', 'DE', 'FR', 'IN']:
    df = pd.read_csv(r'./data/youtube-new/{reg}videos.csv'.format(reg=reg))
    df['country'] = reg
    data = pd.concat([df, data], ignore_index=True )

# 观察数据结构,可以看到description包含较多的空值
data.info()

# 数据清洗
# 将趋势日期进行转换
data['trending_date'] = data['trending_date'].apply(lambda x: arrow.get(str('20'+x[:2]+'-'+x[6:8]+'-'+x[3:5])))
data['trending_year'] = data['trending_date'].apply(lambda x: x.year)
# 统计每一年有多少个视频量,及占比,可看出2017占24%, 2018占76%
video_num = data.groupby(['trending_year'])['video_id'].count().reset_index()
video_num['rate'] = video_num['video_id']/data['video_id'].shape[0]

# 描述性统计,流行视频的平均观看数802574.2,中位数为197466, 说明有一大流行视频的观看数量远小于平均数
data.describe()

# 是否成为流行视频需要大量的评论
# 将评论的数量划分为(0,100000),(100000,200000),(200000,300000),(300000,500000),(500000,800000),(800000,1000000),(1000000,1500000),(1500000,2000000),(2000000,5000000),(5000000,10000000),100000000+等
bins = [0,100000,200000,300000,500000,800000,1000000,1500000,2000000,5000000,10000000,20000000,50000000,100000000,1000000000]
cats = pd.cut(data['views'], bins=bins, right=False).value_counts()

# 观察views的分布情况,可以看到观看量达100万以上的,仅占了16%而已,也就是不一定流行视频就必须观看数特别高
views_trend = {}
for i in range(1,101,1):
    views_trend[i] = data['views'].quantile(i/100)

# 那个国家/地区流行视频数量最多,可以看到IN相对很多
views_num_country = pd.pivot_table(data,index='country', values='video_id',aggfunc='count').reset_index().sort_values(by='video_id')

# 被最多喜欢的视频是哪个及视频链接缩略图
most_like = data.groupby(['video_id','thumbnail_link'])['likes'].sum().reset_index().sort_values(by='likes',ascending=False)
# 也可以直接用max()
most_like = data[data['likes'] == data['likes'].max()]

# 流行视频中标签最多的词是什么
tags_num = data['tags'].value_counts()
tags_num

# 观看数、喜欢、不喜欢、评论数的相关性?
releation = data[['views', 'likes', 'dislikes', 'comment_count']].corr()

除了以上的分析过程,我也进行了相关的其他分析,比如可以进行如下分析:

  1. 趋势视频标题的长度是多少?这个长度与视频的流行有关吗?
  2. 趋势视频标题中最常见的词是什么?
  3. 哪些YouTube频道的趋势视频数量最多?
  4. 哪个视频类别(如娱乐、游戏、喜剧等)的趋势视频数量最多?
  5. 什么时候发布了趋势视频?一周中的哪一天?一天中的什么时候?
    自己在学习pandas过程中感觉在分析过程中比较重要,使用频率相当高的方法应该属pivot_table,这也可能是以前使用数据透视表比较多的缘故吧。

可能刚开始现在对python用的还不够多,虽然只是用了一些简单的方法,但也花了点时间去整理学习,希望自己坚持下,一步一步来。

最后还是习惯性的奶一波:

  1. 大家可以关注大神:微信搜【木东居士】
  2. 第二周参考资料
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenCV-Python是一个基于Python的计算机视觉库,它提供了许多用于图像处理和计算机视觉任务的函数和工具。在使用OpenCV-Python进行实战时,首先需要安装配套使用的opencv-contrib-python库,最好保持版本一致,可以使用以下命令进行安装:pip install opencv-contrib-python。 在实战中,可以通过OpenCV-Python进行图像的基本操作。例如,可以使用OpenCV-Python读取图像文件,可以使用cv2.imread函数来读取图像,如下所示:img = cv2.imread('image.jpg')。 另外,OpenCV-Python还可以用于处理视频文件。可以使用cv2.VideoCapture函数来打开视频文件,然后使用循环逐帧读取视频帧,并对每一帧进行处理。例如,可以将每一帧转换为灰度图像,并使用cv2.imshow函数显示处理结果。可以使用以下代码来实现视频文件的处理: ``` vc = cv2.VideoCapture('video.mp4') # 打开视频文件 while vc.isOpened(): ret, frame = vc.read() # 读取视频帧 if frame is None: break if ret == True: gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 将帧转换为灰度图像 cv2.imshow("result", gray) # 显示灰度图像 if cv2.waitKey(10) & 0xFF == 27: # 按下ESC键退出循环 break vc.release() cv2.destroyAllWindows() ``` 此外,OpenCV-Python还可以进行图像数据的截取,可以使用切片操作来截取图像的特定区域。例如,可以使用以下代码来截取图像的一部分数据:cat = img[0:50, 0:200],其中[0:50, 0:200]表示截取图像的高度为50像素,宽度为200像素的区域。 还可以使用OpenCV-Python提取图像的颜色通道。例如,可以使用以下代码来提取图像的蓝色通道:blue_channel = img[:, :, 0],其中[:, :, 0]表示提取图像的第0个通道,即蓝色通道。同样的方法可以用于提取其他颜色通道。 综上所述,OpenCV-Python提供了丰富的函数和工具,可以用于图像处理和计算机视觉任务的实战。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于python的opencv的学习和实战](https://blog.csdn.net/weixin_44001965/article/details/112862177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值