首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:如何对阵列状场进行分析?

熊猫:如何对阵列状场进行分析?
EN

Stack Overflow用户
提问于 2016-10-07 00:45:22
回答 1查看 251关注 0票数 0

我正在对电影进行分析,每部电影都有一个genre属性,它可能是几种特定的类型,比如dramacomedy,数据如下:

代码语言:javascript
复制
movie_list = [
    {'name': 'Movie 1',
    'genre' :'Action, Fantasy, Horror'},
    {'name': 'Movie 2',
    'genre' :'Action, Comedy, Family'},
    {'name': 'Movie 3',
    'genre' :'Biography, Drama'},
    {'name': 'Movie 4',
    'genre' :'Biography, Drama, Romance'},
    {'name': 'Movie 5',
    'genre' :'Drama'},
    {'name': 'Movie 6',
    'genre' :'Documentary'},
]

问题是,我该如何分析这个问题?例如,我如何知道这里有多少个动作莫视图,以及如何查询类别操作?具体地说:

  1. 我如何获得这个列表中的所有类别?所以我知道每一个都包含了多少个moview
  2. 我如何查询某类电影,如动作片?
  3. 我需要把genre转换成array吗?

目前,我可以用df[df['genre'].str.contains("Action")].describe()解决第二个问题,但是有更好的语法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-07 01:49:37

如果你的数据不是太大,我会做一些预处理,并得到一个记录每种类型。也就是说,我会像这样构造你的数据框架:

代码语言:javascript
复制
 Name    Genre
 Movie 1 Action
 Movie 1 Fantasy
 Movie 1 Horor
 ...

注意,名称应该重复。虽然这可能会使您的数据集更大,但如果您的系统能够处理它,它可以使数据分析非常容易。使用以下代码进行转换:

代码语言:javascript
复制
import pandas as pd

def reformat_movie_list(movies):
    name = []
    genre = []
    result = pd.DataFrame()
    for movie in movies:
        movie_name = movie["name"]
        movie_genres = movie["genre"].split(",")
        for movie_genre in movie_genres:
             name.append(movie_name.strip())
             genre.append(movie_genre.strip())
    result["name"] = name
    result["genre"] = genre
    return result

在这种格式中,您的三个问题将变成

  1. 我如何获得这个列表中的所有类别?所以我知道每个里面有多少部电影? Movie_df.groupby(“体裁”).agg(计数)

请参阅How to count number of rows in a group in pandas group by object?

  1. 我如何查询某类电影,如动作片? horror_movies =movie_df[movie_df]体裁“==”恐怖]

请参阅pandas: filter rows of DataFrame with operator chaining

  1. 我需要把这个体裁变成数组吗?

你的数据去正常化应该能处理好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39907720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档