-2
votes

Comment trouver les entrées de la liste uniques dans un Dataframe Python?

J'ai un jeu de données qui a le titre de film avec les différents genres qu'il relevait. Chaque film a plus d'un genre. Par conséquent, pour l'ensemble du jeu de données, je souhaite trouver le nombre total de genres uniques présents.

Je ne suis pas en mesure d'utiliser df.unique () code> telle qu'il s'agit d'une liste dans chaque colonne de le Dataframe lui-même. P>

movieId title   genres
0   1   Toy Story (1995)    Adventure|Animation|Children|Comedy|Fantasy
1   2   Jumanji (1995)  Adventure|Children|Fantasy
2   3   Grumpier Old Men (1995) Comedy|Romance
3   4   Waiting to Exhale (1995)    Comedy|Drama|Romance
4   5   Father of the Bride Part II (1995)  Comedy
5   6   Heat (1995) Action|Crime|Thriller
6   7   Sabrina (1995)  Comedy|Romance
7   8   Tom and Huck (1995) Adventure|Children
8   9   Sudden Death (1995) Action
9   10  GoldenEye (1995)    Action|Adventure|Thriller
10  11  American President, The (1995)  Comedy|Drama|Romance
11  12  Dracula: Dead and Loving It (1995)  Comedy|Horror
12  13  Balto (1995)    Adventure|Animation|Children
13  14  Nixon (1995)    Drama
14  15  Cutthroat Island (1995) Action|Adventure|Romance
15  16  Casino (1995)   Crime|Drama
16  17  Sense and Sensibility (1995)    Drama|Romance
17  18  Four Rooms (1995)   Comedy
18  19  Ace Ventura: When Nature Calls (1995)   Comedy
19  20  Money Train (1995)  Action|Comedy|Crime|Drama|Thriller
20  21  Get Shorty (1995)   Comedy|Crime|Thriller
21  22  Copycat (1995)  Crime|Drama|Horror|Mystery|Thriller
22  23  Assassins (1995)    Action|Crime|Thriller
23  24  Powder (1995)   Drama|Sci-Fi
24  25  Leaving Las Vegas (1995)    Drama|Romance
25  26  Othello (1995)  Drama
26  27  Now and Then (1995) Children|Drama
27  28  Persuasion (1995)   Drama|Romance
28  29  City of Lost Children, The (Cité des enfants p...   


4 commentaires

Avez-vous essayé d'abord de collecter toutes les colonnes de genres dans un tableau, puis appelez le .unique ()?


Non pas encore. Je suis plutôt nouveau à Python, je ne connais donc pas ça. Je vais essayer.


J'ai essayé cela, ça a fonctionné. Mais cela a juste pris le temps de courir. Merci!


Heureux ça fonctionnait! De toute façon, la réponse Akshaynevrekar semble être meilleure


3 Réponses :


0
votes

Vous pouvez le faire comme suit: xxx

sortie: xxx


1 commentaires

Cela a également fonctionné bien. Mais celui donné par Ashish14 semblait être plus rapide. Merci quand même!



1
votes

Essayez d'utiliser cette approche:

temp = df.genres.str.split("|").tolist() # this will return a list of lists for all the genres
import functools
import operator

unique_genres = set(functools.reduce(operator.concat, temp)) #this will flatten the list of lists and ultimately call the set to get the unique genres. Use len to get the number of unique genres afterwards


0 commentaires

0
votes

essayer suivi:

df = pda.read_csv('movies.csv')
df['genres'] = df['genres'].apply(lambda x: x.strip().split('|'))
df['count'] = df['genres'].apply(lambda y: len(y))
print(df)

OUTPUT :

   movie   Id  ...                                             genres count
     0    1  ...  [Adventure, Animation, Children, Comedy, Fantasy]     5
     1    2  ...                     [Adventure, Children, Fantasy]     3
     2    3  ...                                  [Comedy, Romance]     2
     3    4  ...                           [Comedy, Drama, Romance]     3
     4    5  ...                                           [Comedy]     1
     5    6  ...                          [Action, Crime, Thriller]     3


0 commentaires