我正在尝试分析多个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
循环会更好。非常感谢您的帮助,对于如此广泛的问题,我深表歉意。我在该网站的其他地方找不到答案。
编辑-更多信息:
我每天都在同一时间抓取十大热门视频中的数据。一天的对象列表将另存为泡菜文件。分析数据时,我一直在加载所有文件并将它们全部添加到一个列表中。
我之所以寻求最有效/最有效的方法,是因为我正在使用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运算符查找内容。尽管我没有做太多,所以可能会有更好的方法。