尝试根据仅有两列的df数据集,即“类型”和“性别”,找到每个性别最受欢迎的观看类型。

2024-06-16 11:01:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在处理一个大型电影数据集,我已将其筛选为两列:GenreGender

要将此可视化:

Genre:        Gender:
Romance       Male
Tech          Male
Romance       Male
Comedy        Female
Tech          Female
Comedy        Male
Romance       Female
Romance       Male

我想按性别显示前三大最受欢迎的类型,但我似乎无法获得正确的代码

我所尝试的:

df_final_gender['name'].groupby(df_final_gender['GENDER']).describe()

这只显示了每种性别中最受欢迎(排名前)的类型。我想要每个性别的前三名,任何帮助都是感激的


Tags: 数据类型df电影可视化gendertechmale
2条回答

按列切片,然后运行此函数pd.Series.value_counts() df["Gender"].value_counts()

使用以下数据帧:

df = pd.DataFrame({
    'Genre': ['Romance', 'Tech', 'Romance', 'Comedy', 'Tech', 'Comedy', 'Romance', 'Romance',], 
    'Gender': ['Male', 'Male', 'Male', 'Female', 'Female', 'Male', 'Female', 'Male',]})

为计数添加一个额外的列:

df['value'] = 1

这将为您提供:

    Genre   Gender  value
0   Romance Male    1
1   Tech    Male    1
2   Romance Male    1
3   Comedy  Female  1
4   Tech    Female  1
5   Comedy  Male    1
6   Romance Female  1
7   Romance Male    1

然后根据两个字段“类型”和“性别”进行分组,并获得计数:

counts = df.groupby(['Genre', 'Gender']).count()

产出:

                value
Genre   Gender  
Comedy  Female  1
        Male    1
Romance Female  1
        Male    3
Tech    Female  1
        Male    1

您可以排序:

sorted = counts.sort_values(by='value', ascending=False)

并绘制:

sorted.plot(kind='bar', figsize=(15,8))

将为您提供:

enter image description here

相关问题 更多 >