python-3.x - 我如何计算我的 DataFrame 中的所有类型?
问题描述
我有一个名为 df_imdb 的 DataFrame:
每行包含有关电影的信息,此 DataFrame 有一个列名“流派”,显示该电影的流派,可能有多个流派,例如[{'id': 53, 'name': 'Thriller'}, {'id': 28, 'name': 'Action'}, {'id': 9648, 'name': 'Mystery'}]
我想找出这部电影中使用最多的类型是什么(在这个 DataFrame 中找到前 3 个最常用的类型)
解决方案
数据是字典列表,这里有多个选项:
选项 1:纯 pandas,将与 key 关联的值转换name
为 aSeries
并使用value_counts
df = pd.DataFrame({'genres':[[{'id': 53, 'name': 'Thriller'}, {'id': 28, 'name': 'Action'}, {'id': 9648, 'name': 'Mystery'}],[{'id': 53, 'name': 'Thriller'}, {'id': 30, 'name': 'Blah'}, {'id': 9648, 'name': 'Mystery'}]]})
df['genres'].apply(lambda x: pd.Series([i['name'] for i in x]))\
.stack().value_counts()
你得到
Thriller 2
Mystery 2
Action 1
Blah 1
选项 2:将值转换为列表并使用Counter
from collections import Counter
l_genres = df['genres'].apply(lambda x: [i['name'] for i in x]).sum()
Counter(l_genres)
你得到
Counter({'Thriller': 2, 'Action': 1, 'Mystery': 2, 'Blah': 1})
df['genres'].apply(lambda x: pd.Series([i['name'] for i in x])).stack().value_counts()
编辑:数据类型是 str 而不是列表,首先使用literal_eval
from ast import literal_eval
df['genres'] = df['genres'].apply(literal_eval)
推荐阅读
- javascript - 未捕获的类型错误:无法在“AudioContext”上执行“createMediaElementSource”:参数 1 不是“HTMLMediaElement”类型
- graphql - gatsby-source-prismic-graphql 查询结构
- c# - 如何将对象传递给复选框的 checkChanged 事件?
- java - 更新一个实体时,休眠尝试删除其他实体中的引用
- javascript - 如何使用 Google Drive API REST 下载文件?
- grep - (Windows › Cygwin › grep › Notepad++) 用空格打开 grep 找到的文件
- api - 我正在使用 POS API:Web callBack 来获取 Trans.ID,它可以工作。如何获取交易金额?
- function - 是否有一种方法可以在整个文档/环境中的所有函数调用中添加参数并更改它们?
- google-apps-script - 根据列名删除 Google 表格列
- python - 为列中的每个唯一值生成唯一列