如何使用Pivot函数重塑电影数据集的DataFrame?
用Pivot函数重塑你的电影数据集
嘿,我来帮你拆解怎么用Pandas的pivot()和pivot_table()来重塑你的电影DataFrame~先理清楚核心逻辑,再结合你的数据集举几个实用例子:
核心概念:pivot() vs pivot_table()
pivot():适合无重复组合的场景——要求你指定的index(行索引)和columns(列分组)的每一对组合,对应唯一的values值,否则会报错。pivot_table():是pivot()的增强版,支持聚合操作,当同一index+columns组合对应多个值时,可以自动计算均值、总和等,不会报错,实际工作中用得更多。
结合你的数据集的实用例子
假设你的DataFrame叫movie_df,以下是几种常见的重塑场景:
1. 按导演分组,看不同年份的电影票房
如果每个导演每年只拍一部电影(无重复组合),可以直接用pivot():
# 行:导演名字;列:电影上映年份;单元格:对应电影的票房 director_year_gross = movie_df.pivot( index='director_name', columns='title_year', values='gross' )
如果有导演同一年拍了多部电影,就换成pivot_table(),用聚合函数处理重复值(比如取平均票房):
director_year_avg_gross = movie_df.pivot_table( index='director_name', columns='title_year', values='gross', aggfunc='mean' # 也可以用'sum'取总票房,'max'取最高票房 )
2. 按国家分组,看不同分级的平均预算
想对比不同国家、不同内容分级电影的预算水平:
country_rating_budget = movie_df.pivot_table( index='country', columns='content_rating', values='budget', aggfunc='median', # 用中位数比均值更抗极端值 fillna(0) # 把缺失值填充为0,也可以换成'N/A' )
3. 按演员分组,看不同类型电影的IMDB评分
比如想了解演员Joel David Moore(你的第一条数据里的actor2)参演不同类型电影的评分表现:
# 先筛选出该演员的电影,再做透视 actor_genre_score = movie_df[movie_df['actor_2_name'] == 'Joel David Moore'].pivot_table( index='actor_2_name', columns='genres', values='imdb_score', aggfunc='mean' )
注意事项
- 如果你的
genres字段是多值(比如Action|Adventure|Fantasy|Sci-Fi),想按单个类型透视的话,需要先拆分这个字段(比如用str.split('|', expand=True)),再做后续操作。 - 透视后的结果可以用
reset_index()把行索引变回普通列,方便后续分析。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

