如何统计单列中各独立电影类型数量并绘图 避免多类型组合被计为单独类别
IMDb多标签类型列统计方案
问题背景
现有IMDb电影数据集的DataFrame,其genres列存储电影所属类型,单条数据可能是Drama, Adventure, Romance的多类型组合,也可能是仅包含Drama的单一类型。需要统计每个单独类型的出现次数并绘制图表,而非将组合类型识别为独立分类。
最简实现方案
不需要手动写循环拆分,直接用pandas内置的str.split+explode方法即可完成列展开,代码如下:
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 1. 预处理:拆分多类型列并展开为单行单类型格式 # 正则`,\s*`适配逗号后可能存在的空格,避免出现` Drama`这类带空格的异常统计项 df_genre_expand = df.assign( single_genre = df['genres'].str.split(',\s*') ).explode('single_genre') # 2. 直接复用原有统计逻辑绘图即可 sns.countplot( y="single_genre", data=df_genre_expand, palette="Set2", order=df_genre_expand['single_genre'].value_counts().index[0:15] ) # 可选:补充图表标注 plt.xlabel('出现次数') plt.ylabel('电影类型') plt.title('热度前15的电影类型分布') plt.show()
补充说明
- 如果数据集存在
genres为空的异常数据,可以在预处理前先执行df = df.dropna(subset=['genres'])过滤 - 直接运行
df_genre_expand['single_genre'].value_counts()即可输出所有类型的统计结果
内容的提问来源于stack exchange,提问作者abdurion
相关产品推荐
相关产品推荐

