本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本项目利用Python中的Pandas库,对movielens数据集进行深入分析,以挖掘用户对电影的喜好模式并构建电影推荐系统的基础。项目涵盖数据加载、预处理、探索性数据分析(EDA)、相关性分析、数据聚合、合并和分组等操作,使用Pandas的强大功能来实现电影喜好模式的挖掘和推荐系统的原型开发。 利用pandas库以及movielens数据进行电影喜好相关性的分析.zip

1. Pandas库数据处理基础

1.1 Pandas库简介

Pandas是一个开源的、基于Python的数据分析库,它提供了高性能、易于使用的数据结构和数据分析工具。Pandas中的两个主要数据结构是Series和DataFrame,它们分别是一维和二维的标签化数据结构,使得处理和分析数据变得异常方便。Pandas支持各种类型的数据导入导出功能,并提供了一系列的内置方法,这些方法包括数据清洗、排序、聚合、绘图等,非常适合于处理表格数据。

1.2 Pandas的安装与导入

要使用Pandas库,首先需要确保已经安装了Python环境,然后可以使用pip安装Pandas:

pip install pandas

安装完成后,在Python脚本中导入Pandas库:

import pandas as pd

1.3 Pandas基本数据结构

Pandas的两个核心数据结构是Series和DataFrame:

  • Series : 一维数组,可以存储任何数据类型(整数、字符串、浮点数、Python对象等),轴标签统称为索引。
  • DataFrame : 二维的表格型数据结构,轴标签分别被称为列名和行索引。

这里是一个简单的示例,展示如何创建和操作这些结构:

# 创建一个Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})

# 数据结构的基本操作
print(s.head()) # 显示前5行数据
print(df.describe()) # 显示数据描述性统计信息

Pandas库为数据分析师提供了一个强大的基础工具,从数据导入到处理再到分析,Pandas扮演着重要的角色。随着我们对Pandas的深入学习,你将能够利用它完成更复杂的任务,例如时间序列分析、数据清洗和数据转换等。

2. Movielens数据集介绍与应用

2.1 Movielens数据集概述

2.1.1 数据集的起源和背景

Movielens数据集是由GroupLens研究小组创建的,它是一个在线电影评分系统。该数据集的创建目的是为了研究和开发基于用户电影评分的推荐系统。最初,Movielens数据集发布于1998年,当时只有10万个评分记录。随着项目的持续发展,Movielens数据集逐渐扩展,现在已经成为一个包含数千万条用户评分记录的大型数据集。它的开放性让研究者和开发者能够自由地访问和利用这些数据进行各种研究,包括推荐系统、用户行为分析、评分系统设计等。

2.1.2 数据集的结构和字段含义

Movielens数据集包含了多个不同的数据文件,例如用户信息、电影信息以及用户对电影的评分记录。数据集结构通常包括如下几个主要的文件:

  • 用户文件:包含用户ID、年龄、性别、职业等信息。
  • 电影文件:包括电影ID、电影标题、发行年份、电影类型等信息。
  • 评分文件:记录了用户对电影的评分以及评分时间。
  • 其他可能包含的信息有标签、电影的详细描述等。

每一条记录通常都是以逗号分隔值(CSV)格式存储的,以便于数据的交换和分析。字段含义清晰,为分析和处理数据提供了良好的基础。

2.2 数据集的实际应用案例

2.2.1 电影推荐系统的应用场景

在实际的应用场景中,Movielens数据集被广泛用于开发和测试电影推荐系统。推荐系统的核心目标是根据用户的历史行为和偏好,为用户提供个性化的推荐。通过分析用户对不同电影的评分数据,推荐系统可以识别出用户的喜好模式,并据此推荐新的电影或视频内容。

Movielens数据集的规模和多样性使它非常适合构建和测试推荐算法。开发人员可以利用数据集中的用户评分信息,训练机器学习模型,并对推荐算法的性能进行评估和优化。例如,可以应用协同过滤、矩阵分解、深度学习等技术,并利用Movielens数据集进行模型的训练和验证。

2.2.2 数据集在电影评分预测中的作用

除了推荐系统外,Movielens数据集在电影评分预测领域也扮演着重要角色。评分预测是通过分析用户历史评分数据,构建预测模型,以预测用户对未观看电影的评分。这不仅能帮助用户发现潜在感兴趣的电影,也能够为电影制片人和发行商提供关于市场反馈的宝贵信息。

在数据集的推动下,研究人员能够不断探索和尝试新的数据分析技术和算法,比如集成学习、神经网络等,来提升评分预测的准确度。这些研究对电影产业有着深远的影响,可以指导电影的营销策略和提升用户体验。

通过这些应用场景,我们可以看到Movielens数据集对电影推荐系统和评分预测的实践研究中扮演的基石角色。接下来,我们将探讨如何对这些数据进行清洗和预处理,以便于后续分析和模型构建的需要。

3. 电影数据预处理方法

3.1 数据清洗流程

3.1.1 缺失值的处理方法

在处理现实世界的数据集时,遇到缺失值是常见的现象。缺失值可能是因为数据在收集、存储或传输过程中发生的错误或遗漏。在电影数据集中,缺失值可能存在于评分、电影信息、用户信息等字段中。缺失值的处理方法大致可以分为以下几种:

  • 删除含有缺失值的记录 :如果数据集足够大,缺失值不多,可以选择删除缺失值所在的记录。但这种方法可能导致数据丢失过多,影响分析结果。
  • 填充缺失值 :这是一种常见的方法,可以选择使用均值、中位数、众数等统计量填充,或者根据某些规则进行填充。例如,如果电影评分数据中缺失值很少,可以用同电影的平均评分来填充缺失值。

代码示例:

import pandas as pd

# 假设df是已经加载的电影数据集的DataFrame
# 使用均值填充评分中的缺失值
df['rating'].fillna(df['rating'].mean(), inplace=True)

逻辑分析: 上述代码块读取了名为 df 的DataFrame中的 rating 列,然后使用该列的均值填充其中的缺失值。 inplace=True 参数表明直接在原数据上修改,而不是创建一个新的DataFrame。

3.1.2 异常值的检测与处理

异常值是指那些不符合数据总体分布的值。异常值可能是由于错误输入、测量误差或自然变异引起的。在电影数据集中,评分的异常值可能表现为极高的分数或极低的分数,这可能是用户的误操作或恶意评价。

检测异常值可以通过以下方法:

  • 可视化方法 :使用箱型图等可视化工具可以帮助我们直观地看到数据的分布情况。
  • 统计方法 :例如,可以使用Z分数或IQR(四分位数范围)来确定哪些值是异常的。

代码示例:

import matplotlib.pyplot as plt

# 箱型图可视化评分分布
plt.boxplot(df['rating'])
plt.show()

逻辑分析: 此代码块使用了matplotlib库生成了评分字段的箱型图。箱型图能够直观地显示数据的分布情况,包括异常值。异常值通常表现为离群点,位于箱型图的“须”外。

3.2 数据转换技术

3.2.1 数据类型转换

数据类型转换是指将数据从一种类型转换为另一种类型。这是数据预处理的重要环节,尤其是当数据集涉及到不同数据格式的时候。例如,日期和时间字段往往需要转换为 datetime 类型,以便于进行时间序列分析。

代码示例:

# 假设有一个时间字符串,需要转换为datetime类型
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')

逻辑分析: 上述代码块中, pd.to_datetime 函数用于将时间戳(以秒为单位)转换为 datetime 类型,这使得后续可以基于时间进行筛选、排序等操作。

3.2.2 分类数据的编码方法

分类数据是数据集中经常遇到的一种数据类型,包括电影类型、性别等。这些数据通常是非数值的,因此在进行统计分析前,需要转换为数值型数据。常见的编码方法有:

  • 标签编码 :为每个类别分配一个唯一的整数。
  • 独热编码 :为每个类别创建一个新的二进制列。

代码示例:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

# 标签编码
le = LabelEncoder()
df['gender'] = le.fit_transform(df['gender'])

# 独热编码
onehot_encoder = OneHotEncoder(sparse=False)
gender_onehot = onehot_encoder.fit_transform(df[['gender']])

逻辑分析: 上述代码块中,使用 sklearn.preprocessing 模块中的 LabelEncoder 进行标签编码,将性别从字符串转换为整数。使用 OneHotEncoder 进行独热编码时,创建了一个新的二进制数组 gender_onehot ,其中每个元素代表原始 gender 列中一个类别的存在与否。

在本章节中,我们学习了电影数据预处理的基本方法,包括数据清洗和数据转换技术。这些方法是构建高效、准确数据分析模型的基础,为后续章节的探索性数据分析和推荐系统开发提供了坚实的支撑。接下来的章节将会继续深入探索数据,从统计分析到模型构建,每一步都将建立在本章数据预处理的基础之上。

4. 探索性数据分析(EDA)

EDA(Exploratory Data Analysis)是数据分析中不可或缺的一步,其目的是通过统计图形和计算方法来理解数据的主要特性,发现数据之间的关联和模式,为后续的数据处理和建模提供依据。本章我们将详细介绍描述性统计分析和可视化探索的方法与技巧,以及它们在Movielens数据集中的应用。

4.1 描述性统计分析

4.1.1 数据集的基本统计特性

描述性统计分析是对数据集中的数值特征进行总结的过程。Pandas库提供了一系列方便的函数来获取数据集的统计特性,比如:均值、标准差、最小值、最大值、四分位数等。

import pandas as pd

# 加载数据集
ratings = pd.read_csv('ratings.csv')
movies = pd.read_csv('movies.csv')

# 获取评分数据的基本统计特性
ratings_stats = ratings.describe()

print(ratings_stats)

执行上述代码块后,我们得到了包括均值、标准差、最大值、最小值等在内的统计特性。这些基础的统计信息对于理解数据分布情况至关重要,比如,评分数据的均值可以告诉我们用户对电影的总体评价倾向是积极还是消极,标准差则反映了用户评分的一致性程度。

4.1.2 评分分布和用户活跃度分析

评分分布是电影推荐系统中一个关键的统计特性。利用Pandas,我们可以快速获得不同评分等级的用户数量,并通过直方图等可视化手段直观地展示出来。

import matplotlib.pyplot as plt

# 计算每个评分等级的用户数量
rating_counts = ratings['rating'].value_counts().sort_index()

# 绘制评分分布直方图
plt.figure(figsize=(10, 6))
rating_counts.plot(kind='bar')
plt.title('Rating Distribution')
plt.xlabel('Rating')
plt.ylabel('Number of Ratings')
plt.show()

通过该可视化,我们可以看到哪些评分更普遍,用户倾向于给出哪些特定的评分。对于用户活跃度的分析,我们可以用类似的方法来统计每位用户进行评分的次数,从而识别出最活跃的用户群体。

4.2 可视化探索

4.2.1 评分与电影属性的关系

利用可视化技术,我们可以探索电影的某些属性(如类型、上映年代)与评分之间的关系。例如,我们可以使用热力图来表示不同电影类型组合的平均评分情况。

import seaborn as sns

# 将电影类型字段拆分并进行one-hot编码
genre_dummies = movies['genres'].str.get_dummies(sep='|')
movie Genre Rating = pd.concat([movies['movieId'], genre_dummies, ratings], axis=1)

# 计算每种类型组合的平均评分
genre_rating_means = movie Genre Rating.groupby(list(genre_dummies.columns)).mean()

# 绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(genre_rating_means, cmap='coolwarm', annot=True)
plt.title('Average Rating by Movie Genre')
plt.ylabel('Genre Combination')
plt.xlabel('Rating')
plt.show()

4.2.2 用户评分习惯的可视化

用户评分习惯的可视化有助于理解用户如何给电影打分,以及他们评分的倾向性。我们可以绘制箱形图来表示不同用户的评分习惯。

# 绘制用户评分箱形图
plt.figure(figsize=(15, 8))
sns.boxplot(x='userId', y='rating', data=ratings)
plt.title('User Rating Habits')
plt.xlabel('User ID')
plt.ylabel('Rating')
plt.xticks(rotation=45)
plt.show()

通过箱形图,我们可以观察到哪些用户的评分分布较宽(评分变异性大),哪些用户更倾向于给出极好或极坏的评分,以及是否存在异常评分行为的用户。

以上章节内容详细介绍了在EDA阶段如何通过描述性统计分析和可视化方法对数据集进行初步的探索。这些分析有助于我们了解数据的内在结构和模式,为进一步的数据处理和建模打下坚实的基础。

5. 用户电影喜好相关性分析

在如今的数字时代,通过分析用户行为模式来提供个性化推荐已经成为许多在线服务的核心策略。在电影推荐系统领域,了解和分析用户对电影的喜好相关性是构建一个成功推荐系统的关键。本章节深入探讨用户偏好与电影之间的相关性分析方法,以及如何识别用户喜好模式。

5.1 用户偏好的统计方法

5.1.1 用户评分的分布特征分析

了解用户的评分分布特征是分析用户偏好的起点。在 Movielens 数据集中,每个用户对每部电影都有一个评分。这些评分数据呈现出何种分布特征?

首先,我们可以通过Pandas来提取评分数据,并使用matplotlib库来进行数据可视化。以下代码展示了如何加载评分数据并进行可视化处理:

import pandas as pd
import matplotlib.pyplot as plt

# 加载评分数据
ratings = pd.read_csv('ratings.csv')
# 提取评分数据
ratings_data = ratings['rating'].values

# 绘制评分分布直方图
plt.hist(ratings_data, bins=10, range=(0.5, 5.5), edgecolor='black')
plt.title('Distribution of Ratings')
plt.xlabel('Rating')
plt.ylabel('Frequency')
plt.show()

该直方图可以直观地展示评分的频率分布。从直方图中,我们可能会观察到评分聚集在某个区间,例如3到4之间。这有助于我们理解用户倾向于给出的评分范围。

5.1.2 用户评分与电影类别的相关性

电影类别是影响用户评分的一个重要因素。理解用户评分与电影类别之间的相关性,可以帮助我们构建更为精准的推荐模型。我们可以使用Pandas的数据透视表来分析各类电影的平均评分。

# 加载电影数据
movies = pd.read_csv('movies.csv')
# 创建数据透视表以分析电影类别和评分的相关性
pivot_table = pd.pivot_table(ratings, index='movieId', columns='genres', values='rating', aggfunc='mean')
# 合并电影ID和类别名称
pivot_table = pivot_table.merge(movies[['movieId', 'genres']], on='movieId')
# 计算各类别电影的平均评分
average_ratings_by_genre = pivot_table.mean()

通过计算各类别电影的平均评分,我们可以发现某些类型的电影可能普遍获得较高的评分,这对于推荐系统来说是非常有价值的信息。

5.2 用户喜好模式识别

5.2.1 用户群体的聚类分析

通过聚类分析,我们可以识别具有相似喜好的用户群体。K-means算法是一种常见的聚类方法,用于将用户按照其评分行为分组。

from sklearn.cluster import KMeans

# 使用Pandas提取用户ID和评分数据
user_ratings = ratings.pivot(index='userId', columns='movieId', values='rating').fillna(0)

# 应用K-means算法
kmeans = KMeans(n_clusters=5, random_state=0).fit(user_ratings)

# 为每个用户分配聚类标签
user_ratings['cluster'] = kmeans.labels_

# 输出聚类结果
print(user_ratings.head())

上述代码执行了K-means算法,并将用户根据其评分行为分为五个群集。这些群集代表不同的用户喜好模式。通过分析每个群集中的用户评分特征,我们可以得出哪些电影更受欢迎,以及不同群集的用户对电影的偏好差异。

5.2.2 用户喜好相似度的计算方法

为了实现基于内容的推荐,我们需要计算用户之间的相似度。余弦相似度是一种衡量用户评分向量相似性的有效方法。余弦相似度的值介于-1到1之间,值越大表示相似度越高。

from sklearn.metrics.pairwise import cosine_similarity

# 计算用户之间评分的余弦相似度
user_similarity = cosine_similarity(user_ratings.fillna(0))

# 构建一个相似度矩阵的DataFrame
user_similarity_df = pd.DataFrame(user_similarity, index=user_ratings.index, columns=user_ratings.index)

得到的 user_similarity_df 矩阵可以用来查询任何两个用户之间的相似度,从而帮助我们推荐其他用户评价较高的电影给当前用户。

以上方法和代码片段展示了如何分析和识别用户的喜好模式。接下来的章节将探讨如何构建基于这些分析结果的协同过滤推荐模型,进一步提升推荐系统的效果。

6. 构建协同过滤推荐模型

协同过滤是推荐系统中最流行的技术之一,它依赖于用户之间的相似性来预测目标用户的偏好,并据此提出推荐。本章将深入探讨协同过滤的理论基础,及其实现和优化方法。我们将从原理上理解协同过滤的工作方式,学习不同的相似度计算方法,并在实践中通过具体的代码实现一个推荐模型,并讨论如何进一步优化它。

6.1 协同过滤基础理论

协同过滤的工作原理基于这样一个假设:如果一些用户对一些物品的评价相似,那么他们对其他物品的评价也可能相似。基于这种思想,我们可以利用用户的历史行为数据,通过寻找相似用户或相似物品来预测目标用户可能感兴趣的物品,并据此进行推荐。

6.1.1 协同过滤的工作原理

在协同过滤中,通常可以分为两类:

  • 用户基于协同过滤(User-based Collaborative Filtering) :找到与目标用户兴趣相似的其他用户,然后根据这些相似用户对物品的评分来预测目标用户对这些物品的喜好程度。
  • 物品基于协同过滤(Item-based Collaborative Filtering) :分析目标用户历史上喜欢的物品与目标物品之间的相似度,以此来推荐物品。

6.1.2 相似度计算方法的选择

协同过滤的核心在于相似度的计算,它直接影响推荐结果的质量。常见的相似度计算方法包括:

  • 余弦相似度 :衡量两个用户或物品之间角度的相似度。
  • 皮尔逊相关系数 :衡量两个用户或物品之间的线性关系。
  • 欧几里得距离 :衡量用户或物品之间在特征空间中的直线距离。

接下来,我们将通过一个简单的例子来实现一个基于用户的协同过滤推荐模型。

6.2 推荐模型的实现与优化

我们将使用Python的Pandas库和SciPy库来实现协同过滤推荐模型。以Movielens数据集为例子,我们将使用用户评分数据来构建模型。

6.2.1 基于用户的推荐模型

以下是构建基于用户推荐模型的简单步骤:

  1. 计算用户间的相似度。
  2. 对于目标用户,找出与他最相似的用户。
  3. 使用相似用户的评分数据来预测目标用户可能喜欢的物品。
  4. 根据预测结果生成推荐列表。

我们将通过代码来实现这一步骤。

import numpy as np
import pandas as pd
from scipy.spatial.distance import cosine

# 假设df是包含用户和电影评分的DataFrame
def user_based_recommendation(user_id, data, num_of_movies):
    # 计算目标用户与所有用户间的相似度
    similarity = data.apply(lambda x: 1 - cosine(x, data[user_id]), axis=1)
    # 找出与目标用户最相似的用户
    similar_users = data[similarity > 0].sort_values(by=user_id, ascending=False)
    # 计算预测评分
    predicted_ratings = {}
    for user, similarity in similar_users.items():
        for movie, rating in zip(data.columns[1:], similar_users[user].values[1:]):
            if pd.isnull(rating):
                continue
            if movie not in data[user_id].values:
                if movie not in predicted_ratings:
                    predicted_ratings[movie] = 0
                predicted_ratings[movie] += similarity * rating
    # 返回预测评分最高的n部电影
    return sorted(predicted_ratings.items(), key=lambda x: x[1], reverse=True)[:num_of_movies]

# 示例调用
user_based_recommendation(1, df, 10)

6.2.2 基于物品的推荐模型

基于物品的推荐模型与用户模型类似,但关注点是物品之间的相似度,而非用户之间的相似度。

def item_based_recommendation(user_id, data, num_of_movies):
    # 计算物品间的相似度
    item_similarity = pd.DataFrame(index=data.columns[1:], columns=data.columns[1:])
    for item in data.columns[1:]:
        # 使用余弦相似度计算物品间的相似度
        item_similarity[item] = data.apply(lambda x: 1 - cosine(x, data[item]), axis=1)
    # 目标用户评分
    user_ratings = data.loc[user_id, data.columns[1:]]
    # 预测评分
    predicted_ratings = {}
    for item, rating in user_ratings.items():
        if pd.isnull(rating):
            continue
        similar_items = item_similarity[item].sort_values(ascending=False)
        for similar_item in similar_items.index[1:]:  # 排除自身
            if similar_item not in user_ratings.index:
                if similar_item not in predicted_ratings:
                    predicted_ratings[similar_item] = 0
                predicted_ratings[similar_item] += similar_items[similar_item] * rating
    # 返回预测评分最高的n部电影
    return sorted(predicted_ratings.items(), key=lambda x: x[1], reverse=True)[:num_of_movies]

# 示例调用
item_based_recommendation(1, df, 10)

这两种方法各有优缺点。用户基础的方法在用户数量不是很多的情况下表现不错,但随着用户数量的增加,计算量会急剧增大。物品基础的方法相对更加稳定,因为它不需要频繁地重新计算用户间的相似度,但需要在推荐时计算目标用户与物品间的相似度。通过进一步的优化,如使用矩阵分解技术,可以提高模型的扩展性和准确性。

7. 数据聚合、合并和分组实践

在数据处理的世界里,聚合、合并和分组是分析数据的强大工具。这些操作能够帮助我们以不同的角度观察数据,提取有意义的统计信息,并进行深入的数据分析。在Pandas库中,这些操作得到了有效的实现,并成为数据科学家和分析师日常工作中的常用技术。

7.1 数据聚合技术

7.1.1 使用Pandas进行数据聚合操作

数据聚合是指对数据集进行分组,然后对每个组应用某种函数(如求和、平均、计数等),以获得每个组的聚合结果。在Pandas中, groupby 方法配合聚合函数是实现数据聚合的最常见手段。

让我们以一个简单的例子来说明这个过程:

import pandas as pd

# 创建一个简单的DataFrame
data = {
    'Department': ['HR', 'HR', 'Sales', 'Sales', 'Marketing', 'Marketing'],
    'Salary': [3000, 3100, 2500, 2800, 3200, 3300]
}
df = pd.DataFrame(data)

# 使用groupby进行数据聚合
result = df.groupby('Department')['Salary'].agg(['mean', 'sum', 'count'])

print(result)

上述代码首先创建了一个包含部门和薪资的DataFrame,然后使用 groupby 对数据按照部门进行分组,并对每个部门的薪资进行了平均值、总和和计数的聚合操作。

7.1.2 分组与聚合结果的可视化

聚合结果的可视化是理解数据的关键,有助于发现隐藏在数据中的趋势和模式。Pandas提供了与Matplotlib的集成,使得绘制图表变得简单直观。以下是如何使用Pandas绘制聚合结果的图表:

import matplotlib.pyplot as plt

# 绘制每个部门的平均薪资条形图
result['mean'].plot(kind='bar')
plt.title('Average Salary by Department')
plt.ylabel('Salary')
plt.show()

这段代码将会生成一个柱状图,显示每个部门的平均薪资,从而直观地展示了部门间薪资的差异。

7.2 数据合并与重塑

7.2.1 内连接、外连接的数据合并技巧

数据合并通常指的是将两个或多个数据集按照一定的规则进行结合。在Pandas中, merge 方法是数据合并的主要工具,它支持内连接、外连接等多种合并方式。

内连接会返回两个数据集的交集部分,而外连接则会返回数据集的全部数据。例如:

# 创建第二个DataFrame
data2 = {
    'Department': ['HR', 'Sales', 'Marketing', 'IT'],
    'Location': ['New York', 'San Francisco', 'Chicago', 'Los Angeles']
}
df2 = pd.DataFrame(data2)

# 内连接
inner_merged_df = pd.merge(df, df2, on='Department', how='inner')

# 外连接
outer_merged_df = pd.merge(df, df2, on='Department', how='outer')

print("Inner Merge Result:")
print(inner_merged_df)
print("\nOuter Merge Result:")
print(outer_merged_df)

这段代码分别演示了如何通过部门名称进行内连接和外连接的数据合并。

7.2.2 多级索引与数据重塑的应用

数据重塑涉及到数据结构的转换,如将数据从宽格式转换为长格式,或者反向。Pandas提供了 pivot 、 melt 、 stack 和 unstack 等方法来实现数据的重塑。

例如,将一个宽格式的DataFrame转换为长格式的DataFrame:

# 假设我们有一个宽格式的DataFrame
wide_df = pd.DataFrame({
    'Department': ['HR', 'Sales', 'Marketing'],
    'Salary': [3000, 2500, 3200],
    'Bonus': [1000, 500, 800]
})

# 使用melt转换长格式
long_df = wide_df.melt(id_vars=['Department'], var_name='Type', value_name='Amount')

print(long_df)

这段代码将原始的宽格式DataFrame转换为长格式,其中 Department 列是标识变量,而 Salary 和 Bonus 转换为两行,显示每个部门对应的 Type 和 Amount 。

通过本章的实践,我们了解了Pandas库中数据聚合、合并和分组的具体操作和技巧,以及如何将这些操作应用于实际的数据分析工作。这为后续构建推荐系统提供了坚实的数据处理基础。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本项目利用Python中的Pandas库,对movielens数据集进行深入分析,以挖掘用户对电影的喜好模式并构建电影推荐系统的基础。项目涵盖数据加载、预处理、探索性数据分析(EDA)、相关性分析、数据聚合、合并和分组等操作,使用Pandas的强大功能来实现电影喜好模式的挖掘和推荐系统的原型开发。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

更多推荐