1212
1313# Strip other roles outside from author
1414best_books ['author' ] = best_books ['author' ].str .replace (r',\s*[^,]+\([^)]+\)' , '' , regex = True ).str .strip ().str .strip (',' ).str .strip ()
15+ best_books = best_books .drop_duplicates (subset = ["title" ])
1516international_bestsellers = pd .read_csv ("datasets/international_bestsellers.csv" )
1617international_bestsellers = international_bestsellers .drop_duplicates (subset = ["title" ])
1718
1819rest = best_books [~ best_books ['title' ].isin (international_bestsellers ['title' ])]
19- rest = rest .drop_duplicates (subset = ["title" ])
20+ rest .drop_duplicates (subset = ['title' ], inplace = True )
21+ rest = rest .loc [rest ['genres' ] != "[]" ]
2022df = rest [["title" ,"author" , "rating" , "genres" , "language" ]].copy ()
2123
2224
@@ -56,10 +58,10 @@ def guess_gender(authors: str):
5658merged ["gender" ] = merged ["gender" ].apply (lambda g : str (g ).replace (" " , "" ).replace ("," , ";" ))
5759
5860merged = merged [["title" ,"author" , "rating" , "genres" , "language" , "gender" ]]
61+
5962df_merged = pd .concat ([df_known , merged ])
6063df_merged = df_merged .drop_duplicates (subset = ["title" ])
61- defined_genres = {"Nonfiction" , "Science Fiction" , "Fantasy" , "Thriller" , "Classics" , "Romance" , "Philosophy" , "Horror" , "Childrens" , "Young Adult" , "Poetry" }
62-
64+ defined_genres = {"Nonfiction" , "Science Fiction" , "Fantasy" , "Thriller" , "Classics" , "Romance" , "Philosophy" , "Horror" , "Childrens" , "Young Adult" , "Poetry" , "Feminism" , "Drama" , "Literary Fiction" , "Historical Fiction" }
6365
6466## create gender-genres dataset
6567def find_genre (series ):
@@ -73,11 +75,17 @@ def find_genre(series):
7375df_merged ["genres" ] = df_merged ["genres" ].apply (find_genre )
7476
7577df_unknown = df_merged [~ df_merged ["genres" ].isin (defined_genres )]
76- df_unknown .to_csv ("datasets/unkown_genres.csv" )
78+ df_genres = best_books [["genres" , "title" ]].copy ()
79+ df_genres = df_genres .rename (columns = {"genres" :"genres_list" })
80+ df_unknown = pd .merge (df_unknown , df_genres , on = 'title' , how = 'left' )
81+ df_unknown .to_csv ("datasets/unknown_genres.csv" )
7782print (f"df_unknown: { len (df_unknown )} " )
7883df_merged = df_merged [df_merged ["genres" ].isin (defined_genres )]
84+ print (f"df_known: { len (df_merged )} " )
7985
8086df_merged = df_merged [["gender" , "genres" ]]
87+ df_merged ["gender" ] = df_merged ["gender" ].apply (lambda s : "w;m" if s == "m;w" else s )
88+ df_merged .to_csv ("datasets/genders_genres_merged.csv" , index = False )
8189df_merged ["count" ] = df_merged .groupby (["gender" , "genres" ])["gender" ].transform ("count" )
8290
8391df_merged = df_merged .drop_duplicates (subset = ["gender" , "genres" ]).sort_values (by = ["genres" ])
0 commit comments