利用您的 Netflix 数据构建您的第一个数据科学项目

举报
Q神 发表于 2023/06/23 11:50:53 2023/06/23
【摘要】 您是数据科学新手吗?您还在尝试启动并运行您的第一个项目吗?如果这是您,那么您来对地方了。在本文中,我们将一起构建一个数据科学项目,或者我应该说您将使用自己的 Netflix 数据构建您的第一个数据科学项目。为数据科学项目获取正确的数据集并不总是那么容易,所以当您可以轻松地从 Netflix 获取自己的数据并将其转换为数据集时,为什么要承受这种压力呢?因为 Netflix 允许您下载完整的观看...

您是数据科学新手吗?您还在尝试启动并运行您的第一个项目吗?如果这是您,那么您来对地方了。

在本文中,我们将一起构建一个数据科学项目,或者我应该说您将使用自己的 Netflix 数据构建您的第一个数据科学项目。为数据科学项目获取正确的数据集并不总是那么容易,所以当您可以轻松地从 Netflix 获取自己的数据并将其转换为数据集时,为什么要承受这种压力呢?因为 Netflix 允许您下载完整的观看历史记录实际上可以用来构建很酷的数据科学项目。

我们将使用一些 Python 库(PandasMatplotlib),在本文末尾,您应该有一个可以添加到您的项目组合中的项目。

先决条件

  • PythonPandasMatplotlib的基本知识。
  • Pandas 和 Matplotlib 安装在您的计算机上,但如果您尚未安装它们,pip install pandas 请pip install matplotlib安装它们。
  • 一个 Netflix 帐户。

🎯 获取原始数据

为了能够构建这个项目,我们需要数据。我们可以通过以下步骤获取原始数据:

  • 登录您的 Netflix 帐户。
  • 导航至“获取我的信息”页面并请求您的数据。
  • 我们将向您发送一封确认电子邮件,请务必确认。
  • 我们将向您发送一封电子邮件,告知您下载已准备就绪。 注意:这可能需要一段时间才能实现。
  • 下载 zip 文件后,您应该会看到这些目录。

zip 文件中的目录。

  • 单击CONTENT_INTERACTION文件夹并打开ViewingActivity.csv文件,其中包含您的完整观看历史记录。

🎯 让我们检查一下数据

我们将利用我们对 Pandas 的了解来检查数据并看看我们有什么。但首先,让我们将ViewingActivity.csv文件导入笔记本并将其作为 Pandas 数据框读取。

import pandas as pd
df = pd.read_csv('ViewingActivity.csv')

让我们看一下我们拥有的第一组行。

df.head()

让我们看看我们正在处理的行数和列数。

df.shape
#output: (9273, 10) 

从数据集中,我们有 10 列。

  • 个人资料名称 — 显示共享 Netflix 帐户的人员的个人资料。
  • 标题 — 此列包含特定用户正在观看的系列的名称。
  • 开始时间和持续时间 ——这向我们显示了个人资料上的用户观看电影的时间和时长。
  • 设备类型— 这包含用于观看这些电影的不同设备。 
  • 国家/地区 — 特定个人资料观看的位置(国家/地区)。

您可以查看剩余的列。

在更详细地处理数据之前,我们需要了解底层数据类型。

df.dtypes

从结果中我们看到所有列都以对象数据类型存储数据。

🎯 获取 Netflix 帐户的用户数量

我们可以获得共享同一 Netflix 帐户的人数,我们所要做的就是在“个人资料名称”列中找到唯一用户。

df["Profile Name"].unique()

🎯 获取 Netflix 帐户上观看的设备数量

就像我们找到 Netflix 帐户上的用户数量一样,我们也可以找到在该帐户上观看电影的唯一设备的数量。

df["Device Type"].unique()

🎯 获取观看次数和活动最多的个人资料

我们可以找出 Netflix 帐户上的所有用户中,哪些用户互动和观看次数最多。我们将使用该DataFrame.value_counts()方法来计算行出现的次数

 

df['Profile Name'].value_counts()

使用 Matplotlib,我们可以轻松地将其可视化。

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
df['Profile Name'].value_counts().plot(kind='bar')
plt.show()

输出如下所示:

观看次数和活动最多的个人资料。

🎯 获取观看次数最多的个人资料

为了获取观看电影次数最多的用户,我们要经过几个步骤。 

首先要做的是将开始时间持续时间列转换为日期时间格式。

df['Start Time'] = pd.to_datetime(df['Start Time'], utc=True)
df['Duration'] = pd.to_timedelta(df['Duration'])

接下来是检查所有配置文件的总体观看持续时间。

df['Duration'].sum()

让我们找出每个个人资料的观看持续时间。

df.loc[df['Profile Name']=='Add your profile name','Duration'].sum()

从结果中,我们会注意到我们的顺序与活动最多的配置文件相同。因此,这意味着活动最多的个人资料也具有更高的观看时间。 

可视化并不那么容易,因为Timedelta无法使用Matplotlib进行绘制。所以我们必须使用 NumPy 的 astype 方法执行另一个 Transformation。

df.loc[df['Profile Name']=='Your profile name','Duration'].astype('timedelta64[s]').sum()

因此,我们现在可以创建一个字典来存储每个用户的总观看时间(以秒为单位)。

watchTime = {}
watchTime.update({"First Profile": df.loc[df['Profile Name']=='First Profile','Duration'].astype('timedelta64[s]').sum()})
watchTime.update({"Second Profile": df.loc[df['Profile Name']=='Second Profile','Duration'].astype('timedelta64[s]').sum()})
watchTime.update({"Third Profile": df.loc[df['Profile Name']=='Third Profile','Duration'].astype('timedelta64[s]').sum()})

字典看起来像这样:

{'First Profile': 4138000.0, 'Second Profile': 1411573.0, 'Third Profile': 2050125.0,}

现在我们可以绘制条形图了。

%matplotlib inline
import matplotlib
import matplotlib.pyplot as plt
plt.bar(*zip(*watchTime.items()))
plt.show()

观看次数最多的个人资料。

🎯 获取用户使用的设备,以及使用最多的设备

我们首先看一下“设备类型”一栏,看看每个用户使用的设备,其实很多(有的甚至只使用过一次,有的则经常使用)。

df['Device Type'].value_counts()

我们可以再次快速地将其绘制在条形图中。

df['Device Type'].value_counts().plot(kind='bar')
plt.show()

使用最多的设备

我们现在可以根据每个用户过滤它们(以防万一您想知道您使用了多少设备)

df_device = df.loc[df['Profile Name'] == 'Your profile name']
df_device['Device Type'].value_counts()

我们将看到查看设备名称以及该特定用户使用该设备的次数。现在我们可以绘制条形图了。

df_device['Device Type'].value_counts().plot(kind='bar')
plt.show()

获取用户使用的设备

结论

在本文中,我们能够介绍一个简单的数据科学项目,从 Netflix 下载原始数据,分析和可视化数据。您还可以看到,我们使用数据集回答了许多问题,相信我,仍然可以探索更多问题。我很想知道您从本文中获得了哪些项目想法以及您构建了什么。

与此同时,您如何用数据集回答这些问题:

  • 最受欢迎/观看次数最多的标题。
  • 所有用户都观看的电影。
  • 根据其他用户的共同观看历史为一个用户推荐一部电影。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。