python - 分析对象列表中的数据

标签 python object youtube analyzer

我正在尝试分析多个 YouTube 视频的数据。我不知道如何使用 YouTube API,也不知道是否可以通过该方法使用。相反,我通过 PythonAnywhere 使用 Python 2.7。

我创建了一个具有许多属性的“视频”类:

class Video:
    def __init__(self, title, description, views, likes, dislikes, tags, comments...):
        self.title = title
        ...

并已抓取了数千个视频的数据。该计划是分析数据,找出平均观看次数、点赞数等,以及标题、描述中最流行的单词……或每天观看次数最多的视频(基于上传日期和当前观看次数)。我正在尝试分析很多事情。

问题是:分析许多对象列表的此类数据的最佳方法是什么? (或者有比使用对象列表更好的方法吗?)

我已通过单个 for 尝试过此操作循环累积数字,然后在最后显示数字。

我还尝试使用列表理解(例如 print("Longest title:" + str(max([len(v.title) for v in allVids])))

我担心使用像这样的多个列表理解是低效的,并且单个巨大的 for如果不是为了可读性,从长远来看,循环会更好。

非常感谢任何帮助,对于如此广泛的问题我深表歉意;我在本网站的其他地方找不到答案。

编辑 - 更多信息: 我每天同一时间从十大热门视频中抓取数据。一天的对象列表将保存为 pickle 文件。在分析数据时,我加载了所有文件并将它们全部添加到一个列表中。

我正在寻找最/更有效的方法的原因是因为我正在使用PythonAnywhere来安排数据的抓取,并且我不想一直在tarpit中;我需要一些处理时间来分析数据。

最佳答案

对我来说,这听起来像是 Pandas 数据框的一个很好的例子,其中每个视频的统计数据将是包含相关数据的列或行。

您可能需要执行一个 for 循环来最初构建数据帧,但假设它适合内存,您应该已经为其余的评估做好了准备。它看起来像这样。

import pandas as pd

# create a data frame
df = pd.DataFrame(columns=['upload date', 'title', 'description', 'views', 'likes', 'dislikes']

# add data to data frame
for vid in saved_vids:
    df[vid, 'title'] = vid.title
    df[vid, 'views'] = vid.views
    # and so on

这可以让您轻松找到每天的平均观看次数、点赞数等。

df.views.mean()

查看索引和选择以进行子集化选项和过滤。

您可能需要对评论做一些不同的事情,具体取决于您想要如何分析它们,但我认为 pandas 将为您提供一个良好的基础来评估您可能希望看到的内容。如果将所有注释加载到数据框中,则可以使用 str.contains 运算符来查找内容。不过我还没有做太多的事情,所以可能有更好的方法。

关于python - 分析对象列表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50047919/

相关文章:

python - 3.x 中的 "join"是否变慢?

javascript - 将数据转换为数组数组

video - 有没有办法将某人链接到高清 1080p 质量的 YouTube 视频?

iphone - 如何从 My WebApp 调用 YouTube 应用程序

python - 国际化django模板中的多个复数变量

python - 使用 python 的 ElementTree 合并 xml 文件

JavaScript - 将一种方法应用于多个对象

youtube - 如何从youtube预览图像中删除黑色边框(图像黑色边框的长度不同)

Python 3.5 PIP 安装 pyperclip 错误 (Windows)

Javascript 类型错误 : can't convert undefined to object