如何从Excel表提取数据并转为集合格式?含电影推荐系统Python代码需求
解答你的Excel数据转集合格式问题
Hey there! Let's work through your questions step by step—they're perfect for your movie recommendation system project.
问题2:将Excel导入的电影评分数据转成集合格式
首先看你现有的代码,读取后的DataFrame里USER列存在NaN值(比如Julia Roberts的后续行),这是因为Excel里同一个用户的信息只在第一行填写了。我们先把数据清洗好,再转成集合:
import pandas as pd # 读取Excel数据(注意:新版pandas中sheetname已改为sheet_name,避免版本警告) df = pd.read_excel('project.xlsx', sheet_name='Sheet1') # 填充USER列的缺失值:用前一行的有效值补全同一用户的所有行 df['USER'] = df['USER'].ffill() # 将每行数据转为元组,再转换为集合 movie_rating_set = set(df.itertuples(index=False, name=None)) # 打印结果示例 for item in movie_rating_set: print(item)
代码解释:
ffill():全称forward fill,会向下填充USER列的缺失值,这样Julia Roberts的所有电影评分行都会正确关联到她的名字。itertuples(index=False, name=None):把DataFrame的每一行转成不含索引、无自定义名称的元组,确保每个元素是(用户名, 电影名, 评分)的结构。set():将元组序列转换为集合,自动保证元素唯一性(如果Excel里有重复行,集合会自动去重)。
运行后你会得到类似这样的集合输出:
('Julia Roberts', 'Shrek', 2.5), ('Julia Roberts', 'V for Vendetta', 3.5), ('Julia Roberts', 'Pretty Woman', 3.0), ...
问题1:通用Excel数据转集合格式方法
如果是其他Excel数据,通用步骤如下:
- 读取数据:用
pd.read_excel()读取目标工作表,根据需要指定sheet_name、usecols等参数筛选数据。 - 清洗数据:处理缺失值(如
ffill()、bfill()或填充默认值)、转换数据类型(比如把评分转成float)。 - 转换为集合:通过
itertuples()或values.tolist()把每行转成可哈希的类型(比如元组),再用set()转换。
举个无缺失值的简单例子:
import pandas as pd df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # 直接转成集合 data_set = set(tuple(row) for row in df.values)
内容的提问来源于stack exchange,提问作者Sanchari Ghosh
相关产品推荐
相关产品推荐

