1 了解数据
数据来自kaggle,共包括三个文件:
- movies.dat
- ratings.dat
- users.dat
movies.dat
包括三个字段:['Movie ID', 'Movie Title', 'Genre']
使用pandas导入此文件:
import pandas
导入后,显示前5行:
依次导入其他两个数据文件
users.dat
:
'./data/movietweetings/users.dat', delimiter=
rating.data
:
'./data/movietweetings/ratings.dat', delimiter=
2 read_csv使用说明
说明,本次导入dat
文件使用pandas.read_csv
函数。
第一个位置参数./data/movietweetings/ratings.dat
表示文件的相对路径
第二个关键字参数:delimiter='::'
,表示文件分隔符使用::
后面几个关键字参数分别代表使用的引擎,文件没有表头,所以header
为None;
导入后dataframe的列名使用names
关键字设置,这个参数大家可以记住,比较有用。
3 处理组合值
表movies
字段Genre
表示电影的类型,可能有多个值,分隔符为|
,取值也可能为None
.
针对这类字段取值,可使用Pandas中Series提供的str
做一步转化,注意它是向量级的,下一步,如Python原生的str
类似,使用contains
判断是否含有comedy
字符串:
'comedy',case=
注意使用的两个参数:case
, na
case为 False,表示对大小写不敏感;na Genre列某个单元格为NaN
时,我们使用的充填值,此处填充为False
返回的mask
是一维的Series
,结构与 movies.Genre相同,取值为True 或 False.
观察结果:
验证结果,打印movies表的前10行,验证OK,只有index为5,6的行,其Genre取值包括 comedy.4 提取目标行记录
得到掩码mask后,pandas非常方便地能提取出目标记录:
comedy = movies[mask]
comdey_ids = comedy['Movie ID']
以上,在pandas中被最频率使用,不再解释。
因为字段 Movie ID 中间有空格,所以不能使用comedy.Movie ID提取这列值。
看结果comedy_ids.head(10)
:第一列为索引列,依然对应movies表的index,第二列为Movie ID,这些电影的Genre都包括comedy.
长按关注