利用您的 Netflix 数据构建您的第一个数据科学项目
您是数据科学新手吗?您还在尝试启动并运行您的第一个项目吗?如果这是您,那么您来对地方了。
在本文中,我们将一起构建一个数据科学项目,或者我应该说您将使用自己的 Netflix 数据构建您的第一个数据科学项目。为数据科学项目获取正确的数据集并不总是那么容易,所以当您可以轻松地从 Netflix 获取自己的数据并将其转换为数据集时,为什么要承受这种压力呢?因为 Netflix 允许您下载完整的观看历史记录实际上可以用来构建很酷的数据科学项目。
我们将使用一些 Python 库(Pandas和Matplotlib),在本文末尾,您应该有一个可以添加到您的项目组合中的项目。
先决条件
- Python、Pandas和Matplotlib的基本知识。
- Pandas 和 Matplotlib 安装在您的计算机上,但如果您尚未安装它们,
pip install pandas
请pip install matplotlib
安装它们。 - 一个 Netflix 帐户。
🎯 获取原始数据
为了能够构建这个项目,我们需要数据。我们可以通过以下步骤获取原始数据:
- 登录您的 Netflix 帐户。
- 导航至“获取我的信息”页面并请求您的数据。
- 我们将向您发送一封确认电子邮件,请务必确认。
- 我们将向您发送一封电子邮件,告知您下载已准备就绪。 注意:这可能需要一段时间才能实现。
- 下载 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 下载原始数据,分析和可视化数据。您还可以看到,我们使用数据集回答了许多问题,相信我,仍然可以探索更多问题。我很想知道您从本文中获得了哪些项目想法以及您构建了什么。
与此同时,您如何用数据集回答这些问题:
- 最受欢迎/观看次数最多的标题。
- 所有用户都观看的电影。
- 根据其他用户的共同观看历史为一个用户推荐一部电影。
- 点赞
- 收藏
- 关注作者
评论(0)