Je travaille sur un projet personnel utilisant IMDB Data et j'ai actuellement épuisé toutes les possibilités.Value_Counts, Mapping, GroupBy et traçage
Description rapide:
- Je suis en train de trouver le top 10 des directeurs grosses recettes et les acteurs
- Je peux le faire mais je voudrais prendre un peu plus loin et trouver que le top 10 si elles ont rencontré certains critères. EG: Vous avez déjà joué dans 4> Films
Jusqu'à présent, je l'ai exécuté les éléments suivants:
plt.subplot2grid((2,3),(0,1))
actor_1 = df.pivot_table(index="Actor_1", values="Gross_Earnings", aggfunc='sum').sort_values(ascending=False)
actor_1[:15].sort_values(ascending=True).plot(kind='barh', width=0.7, alpha=0.5, color='red')
ax.tick_params(axis='x', labelsize=60)
ax.tick_params(axis='y', labelsize=60)
plt.xlabel("Gross Earnings")
plt.tight_layout()
plt.show()
Cela fonctionne, mais il ne retourne que les premières valeurs; pas les meilleures valeurs avec les critères supplémentaires de> 4 films.
J'ai aussi essayé ce qui suit:
no_of_films = df.groupby("Actor_1")
name_count_key = df["Actor_1"].value_counts().to_dict()
no_of_films["Films"] = no_of_films["Actor_1"].map(name_count_key)
Mais il renvoie l'erreur suivante: « AttributeError: Impossible d'accéder à l'attribut appelable « carte » des objets « SeriesGroupBy », essayez d'utiliser la méthode apply »
no_of_films = df.groupby("Actor_1")
name_count_key = df["Actor_1"].value_counts().to_dict()
no_of_films["Films"] = no_of_films["Actor_1"].apply(name_count_key)
Mais il renvoie l'erreur suivante: « erreur de type: Type unhashable: « dict » »
l'idée groupe par la fonction était de créer une nouvelle colonne appelée « Films » donc comptez le volume des Films dans lesquels chaque acteur a joué, puis utilisez> 4, mais il renvoie les booléens et non la valeur réelle.
Director Actor_1 IMDB_Score Gross_Earnings Movie_Title
Andrew Stanton Daryl Sabara 6.6 73058679 John Carter
Sam Raimi J.K. Simmons 6.2 336530303 Spider-Man 3
Nathan Greno Brad Garrett 7.8 200807262 Tangled
Joss Whedon Chris Hemsworth 7.5 458991599 Avengers: Age of Ultron
Est-ce possible ou suis-je bête?
Toute aide serait grandement appréciée.
Merci,
Adrian
Il semble que vous avez besoin 'df [ "Films"] = df [ "Acteur_1"] carte (de name_count_key)', peut vous donner. échantillon de données? – jezrael
J'ai créé un nouveau bloc de données "no_of_films" donc je groupe des acteurs qui ont joué dans plusieurs films. La fonction de carte fonctionne sur la trame de données d'origine, mais lors de la récapitulation de la valeur compte, elle compte la somme (multipliée par le nombre d'apparences qui est incorrect) – AdrianC
Withoud data is n'est pas une réponse facile. Petit conseil - [Ne pas publier d'images de code (ou de liens vers eux)] (http: //meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-ask-a-question). – jezrael