【问题标题】:Problem : Relationship between the length of a film that lasts between 60 and 200 minutes and its average rating问题:时长在 60 到 200 分钟之间的电影长度与其平均收视率之间的关系
【发布时间】:2021-04-21 01:48:34
【问题描述】:

我想用曲线显示时长在 60 到 200 分钟之间的电影的时长与其在 IMDb 上的平均收视率之间的关系:

movies['duree'] = movies[(movies.duree<200) | (movies.duree>60)] #ERROR is HERE
sns.relplot(x=movies['duree'], y="averageRating", kind='line', data=movies)

TypeError: '

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    您没有正确进行转换,例如:

    import pandas as pd
    import seaborn as sns
    
    movies = pd.DataFrame({
        'duration':["95 min","118 min","143 min","89 min","91 min","221 min"],
        "averageRating":[6.8,5.3,6.4,7.8,4.6,7.7],
        "listed_in":['A','B','C','D','E','F']
    })
    

    如果我运行你的代码,我会得到同样的错误。除非您提供完整的数据框,否则很难排除故障,或者尝试定位字符串转换失败的位置。如果我在示例中执行此操作,它会起作用,请注意,您将数据框子集化并将其传递给绘图:

    movies['duree'] = movies['duration'].str.slice(0,-4).astype('int')
    sns.relplot(x='duree', y="averageRating", kind='line', 
    data=movies[(movies.duree<200) | (movies.duree>60)])
    

    【讨论】:

      【解决方案2】:

      好吧,movies.duree 似乎是一个字符串而不是整数。试试这个:

      movies['duree'] = movies[(int(movies.duree)<200) | (int(movies.duree)>60)]
      

      【讨论】:

      • 我现在遇到了这个错误:TypeError: cannot convert the series to
      • movies['duree'] = movies['duree'].astype(int) movies['duree'] = movies[(int(movies.duree)&lt;200) | (int(movies.duree)&gt;60)] sns.relplot(x=movies['duree'], y="averageRating", kind='line', data=movies) 我也遇到了同样的错误......也许它来自我过去的代码? movies = df[df['type'] == 'Movie'] movies = df[df['type'] == 'Movie'].copy() movies['duration'] = movies['duration'].astype(object).str[:-4] movies.rename(columns = {'duration':'duree'}, inplace=True) movies.astype({'duree': 'int64'}).dtypes movies
      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多