(12-3-01)动漫推荐系统:数据分析(1)

本文介绍了如何通过基础数据探索方法,如查看数据格式、统计信息、数据集形状和内容、缺失值检测等,对动漫和评分数据集进行初步分析。作者展示了如何使用Pandas库进行数据预处理,包括数据形状检查、样式化输出、统计摘要和缺失值处理。
摘要由CSDN通过智能技术生成

12.4  数据分析

在接下来的内容中,将分析数据集的中信息,了解动漫信息和对应的用户评分信息,为实现后面的推荐系统打下基础。

12.4.1  基础数据探索方法

在数据分析的初期,我们需要采取一些基础的探索方法,以了解数据的整体情况、结构和特点。这包括:

  1. 查看前几行数据以了解数据的格式和结构。
  2. 统计数据集的基本信息,包括数据类型、非空值数量等。
  3. 描述性统计信息,帮助我们了解数值列的分布情况。

(1)打印输出动漫数据集的形状(shape)和前几行的内容,并通过样式设置使输出结果更具可读性。

# 输出动漫数据集的形状
print(f"Shape of The Anime Dataset: {anime.shape}")

# 输出动漫数据集前几行的内容,通过样式设置使输出更具可读性
print("\nGlimpse of The Dataset:")
anime.head().style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

对上述代码的具体说明如下所示:

  1. anime.shape:输出数据集的形状,即行数和列数。
  2. anime.head():获取数据集的前几行。
  3. style.set_properties(...):通过样式设置,将输出的背景颜色、文字颜色和边框进行调整。

这样的输出方式使得查看数据集的形状和前几行内容更加清晰,背景颜色、文字颜色的设定进一步增强了可读性。运行这段代码,将看到一个带有样式的表格,展示了动漫数据集的形状和前几行内容,如图12-1所示。

图12-1  数据集的形状和前几行内容

(2)打印输出有关动漫数据集的信息,anime.info() 提供了有关数据集的详细信息,包括每列的非空值数量、数据类型等。

# 输出有关动漫数据集的信息
print("Informations About Anime Dataset :\n")
print(anime.info())

运行这段代码后将得到有关动漫数据集的详细信息,如每列的数据类型、非空值数量等,这对于初步了解数据的结构和特性非常有用。

Informations About Anime Dataset :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12294 entries, 0 to 12293
Data columns (total 7 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   anime_id  12294 non-null  int64  
 1   name      12294 non-null  object 
 2   genre     12232 non-null  object 
 3   type      12269 non-null  object 
 4   episodes  12294 non-null  object 
 5   rating    12064 non-null  float64
 6   members   12294 non-null  int64  
dtypes: float64(1), int64(2), object(4)
memory usage: 672.5+ KB
None

(3)打印输出评分数据集的形状和前几行的内容,并通过样式设置使输出更具可读性。

# 输出评分数据集的形状
print(f"Shape of The Rating Dataset: {rating.shape}")

# 输出评分数据集前几行的内容,通过样式设置使输出更具可读性
print("\nGlimpse of The Dataset:")
rating.head().style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

对上述代码的具体说明如下所示:

  1. rating.shape:输出数据集的形状,即行数和列数。
  2. rating.head():获取数据集的前几行。
  3. style.set_properties(...):通过样式设置,将输出的背景颜色、文字颜色和边框进行调整。

运行这段代码后将看到一个带有样式的表格,展示了评分数据集的形状和前几行内容,如图12-2所示。这样的输出方式使得查看数据集形状和前几行内容更加清晰。

图12-2  评分数据集的形状和前几行内容

(4)打印输出有关评分数据集的信息,rating.info()提供了有关数据集的详细信息,包括每列的非空值数量、数据类型等。

# 输出有关评分数据集的信息
print("Informations About Rating Dataset :\n")
print(rating.info())

通过运行这段代码,将得到有关评分数据集的详细信息,如每列的数据类型、非空值数量等。这对于初步了解数据的结构和特性非常有用。请注意,info()方法输出的信息会包含每列的非空值数量,以及数据类型,这有助于进一步数据的理解和处理。

Informations About Rating Dataset :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7813737 entries, 0 to 7813736
Data columns (total 3 columns):
 #   Column    Dtype
---  ------    -----
 0   user_id   int64
 1   anime_id  int64
 2   rating    int64
dtypes: int64(3)
memory usage: 178.8 MB
None

12.4.2  数据集摘要

在数据分析或项目报告中,数据集摘要通常是对整个数据集的简要总结,包括数据集的形状、列的含义、数据类型、缺失值情况等基本信息。这个部分有助于读者快速了解数据集的概况,为后续的分析和解释提供背景。

(1)生成动漫数据集的统计摘要,并通过样式设置使输出更具可读性。

# 生成动漫数据集的统计摘要,使用 .T 进行转置
summary_anime = anime.describe().T

# 设置样式,通过样式设置使输出更具可读性
styled_summary_anime = summary_anime.style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

# 输出摘要
print("Summary of The Anime Dataset:")
styled_summary_anime

对上述代码的具体说明如下所示:

  1. anime.describe():生成动漫数据集的统计摘要,包括均值、标准差、最小值、25%,50%,75% 分位数等统计信息。
  2. .T:进行转置,以便更好地查看摘要信息。
  3. style.set_properties(...):通过样式设置,将输出的背景颜色、文字颜色和边框进行调整。

运行这段代码后将看到一个带有样式的表格,显示了动漫数据集的统计摘要信息,如图12-3所示。

图12-3  动漫数据集的统计摘要信息

(2)使用 describe(include=object) 来生成关于动漫数据集中包含对象类型(字符串等)的列的统计摘要,并通过样式设置使输出更具可读性。

anime.describe(include=object).T.style.set_properties(**{"background-color": "#2a9d8f","color":"white","border": "1.5px  solid black"})

执行后输出显示动漫数据集中包含对象类型(字符串等)的列的统计摘要信息,如图12-4所示。

图12-4  动漫数据集中包含对象类型的列的统计摘要信息

(3)生成动漫数据集中的缺失值情况,并通过样式设置使输出更具可读性。

# 生成动漫数据集中的缺失值情况,使用 isna() 和 sum()
null_values_anime = anime.isna().sum().to_frame().T

# 设置样式,通过样式设置使输出更具可读性
styled_null_values_anime = null_values_anime.style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

# 输出缺失值情况
print("Null Values of Anime Dataset:")
styled_null_values_anime

运行这段代码后将看到一个带有样式的表格,显示了动漫数据集中每列的缺失值数量。

(4)删除动漫数据集中的缺失值,并生成删除后的数据集中的缺失值情况。

# 删除动漫数据集中的缺失值,使用 dropna() 方法
anime.dropna(axis=0, inplace=True)

# 生成删除后的动漫数据集中的缺失值情况,使用 isna() 和 sum()
null_values_after_drop_anime = anime.isna().sum().to_frame().T

# 设置样式,通过样式设置使输出更具可读性
styled_null_values_after_drop_anime = null_values_after_drop_anime.style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

# 输出删除后的缺失值情况
print("After Dropping, Null Values of Anime Dataset:")
styled_null_values_after_drop_anime

对上述代码的具体说明如下所示:

  1. anime.dropna(axis=0, inplace=True) :用于删除数据集中包含缺失值的行。
  2. anime.isna().sum().to_frame().T:生成删除后的数据集中的缺失值情况。
  3. style.set_properties(...):通过样式设置,将输出的背景颜色、文字颜色和边框进行调整。

运行这段代码后将看到一个带有样式的表格,显示了删除缺失值后的动漫数据集中每列的缺失值数量。如图12-5所示。

图12-5  删除缺失值后的动漫数据集中每列的缺失值数量

(5)检测并计算动漫数据集中的重复条目数量,具体实现代码如下所示。

# 使用 duplicated() 方法检测重复条目,并使用 shape[0] 获取重复条目的数量

dup_anime = anime[anime.duplicated()].shape[0]

# 输出重复条目的数量和总条目数
print(f"There are {dup_anime} duplicate entries among {anime.shape[0]} entries in the anime dataset.")

其中,anime[anime.duplicated()]用于选择包含重复值的行,shape[0] 用于获取重复行的数量。最后的 print 语句输出包含重复值的行的数量以及总行数。运行这段代码后将得到一条消息,提示在动漫数据集中有多少重复的条目。如果 dup_anime 的值为零,说明数据集中没有重复的条目。

There are 0 duplicate entries among 12017 entries in anime dataset.

(6)生成关于评分数据集的统计摘要,并通过样式设置使输出更具可读性。

# 生成评分数据集的统计摘要,使用 .T 进行转置
summary_rating = rating.describe().T

# 设置样式,通过样式设置使输出更具可读性
styled_summary_rating = summary_rating.style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

# 输出摘要
print("Summary of The Rating Dataset:")
styled_summary_rating

对上述代码的具体说明如下所示:

  1. rating.describe():生成评分数据集的统计摘要,包括均值、标准差、最小值、25%,50%,75% 分位数等统计信息。
  2. .T:进行转置,以便更好地查看摘要信息。
  3. style.set_properties(...):通过样式设置,将输出的背景颜色、文字颜色和边框进行调整。

运行这段代码后将看到一个带有样式的表格,显示了评分数据集的统计摘要信息。如图12-6所示。

图12-6  评分数据集的统计摘要信息

(7)生成评分数据集中的缺失值情况,并通过样式设置使输出更具可读性。

# 生成评分数据集中的缺失值情况,使用 isna() 和 sum()
null_values_rating = rating.isna().sum().to_frame().T

# 设置样式,通过样式设置使输出更具可读性
styled_null_values_rating = null_values_rating.style.set_properties(**{"background-color": "#2a9d8f", "color": "white", "border": "1.5px solid black"})

# 输出缺失值情况
print("Null Values of Rating Dataset:")
styled_null_values_rating

运行这段代码后将看到一个带有样式的表格,显示了评分数据集中每列的缺失值数量。如图12-7所示。

图12-7  评分数据集中每列的缺失值数量

(8)检测并计算评分数据集中的重复条目数量,并在删除重复条目后输出数据集中的新条目数量。

# 使用 duplicated() 方法检测重复条目,并使用 shape[0] 获取重复条目的数量
dup_rating = rating[rating.duplicated()].shape[0]

# 输出重复条目的数量和总条目数
print(f"There are {dup_rating} duplicate entries among {rating.shape[0]} entries in the rating dataset.")

# 使用 drop_duplicates() 方法删除重复条目,keep='first' 表示保留第一个出现的重复条目
rating.drop_duplicates(keep='first', inplace=True)

# 输出删除重复条目后的新条目数量
print(f"\nAfter removing duplicate entries, there are {rating.shape[0]} entries in this dataset.")

对上述代码的具体说明如下所示:

  1. rating[rating.duplicated()]:用于选择包含重复值的行。
  2. shape[0] :用于获取重复行的数量。
  3. print 语句:输出包含重复值的行的数量和总行数。
  4. rating.drop_duplicates(keep='first', inplace=True) :用于删除数据集中的重复行,保留第一次出现的重复行。
  5. print 语句:输出删除重复行后的新条目数量。

运行这段代码后将得到两条消息,一条指示数据集中有多少重复的条目,另一条指示删除重复条目后的新条目数量。执行后会输出:

There are 1 duplicate entries among 7813737 entries in rating dataset.
After removing duplicate entries there are 7813736 entries in this dataset.

未完待续

  • 32
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值