Skip to content

Commit b7e1b89

Browse files
authored
Merge pull request #12 from com-480-data-visualization/jo
Merging bar chart and cartogram
2 parents b848295 + cd86492 commit b7e1b89

8 files changed

Lines changed: 1060 additions & 9344 deletions

File tree

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212

1313
# Strip other roles outside from author
1414
best_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"])
1516
international_bestsellers = pd.read_csv("datasets/international_bestsellers.csv")
1617
international_bestsellers = international_bestsellers.drop_duplicates(subset=["title"])
1718

1819
rest = 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'] != "[]"]
2022
df = rest[["title","author", "rating", "genres", "language"]].copy()
2123

2224

@@ -56,10 +58,10 @@ def guess_gender(authors: str):
5658
merged["gender"] = merged["gender"].apply(lambda g: str(g).replace(" ", "").replace(",", ";"))
5759

5860
merged = merged[["title","author", "rating", "genres", "language", "gender"]]
61+
5962
df_merged = pd.concat([df_known, merged ])
6063
df_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
6567
def find_genre(series):
@@ -73,11 +75,17 @@ def find_genre(series):
7375
df_merged["genres"] = df_merged["genres"].apply(find_genre)
7476

7577
df_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")
7782
print(f"df_unknown: {len(df_unknown)}")
7883
df_merged = df_merged[df_merged["genres"].isin(defined_genres)]
84+
print(f"df_known: {len(df_merged)}")
7985

8086
df_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)
8189
df_merged["count"] = df_merged.groupby(["gender", "genres"])["gender"].transform("count")
8290

8391
df_merged = df_merged.drop_duplicates(subset=["gender", "genres"]).sort_values(by=["genres"])

data/datasets/genders_genres.csv

Lines changed: 59 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,72 @@
11
gender,genres,count
2-
m;m,Childrens,29
3-
w,Childrens,680
4-
w;m,Childrens,21
5-
m;w,Childrens,11
6-
m,Childrens,850
72
w;w,Childrens,53
8-
w,Classics,527
9-
m,Classics,2826
10-
w;m,Classics,4
11-
m;m,Classics,70
12-
w;w,Classics,6
13-
m;w,Classics,7
14-
w;m,Fantasy,29
3+
m;m,Childrens,29
4+
w,Childrens,679
5+
m,Childrens,847
6+
w;m,Childrens,32
7+
m;m,Classics,65
8+
w;w,Classics,5
9+
m,Classics,2654
10+
w,Classics,484
11+
w;m,Classics,11
12+
w,Drama,141
13+
m;m,Drama,5
14+
w;w,Drama,2
15+
m,Drama,333
16+
w;m,Drama,2
17+
w;m,Fantasy,78
1518
m;m,Fantasy,137
16-
w,Fantasy,2730
17-
m,Fantasy,4244
18-
m;w,Fantasy,49
19-
w;w,Fantasy,78
19+
w;w,Fantasy,77
20+
w,Fantasy,2719
21+
m,Fantasy,4221
22+
m,Feminism,35
23+
w;w,Feminism,1
24+
w,Feminism,100
2025
m;m,Horror,34
21-
m;w,Horror,11
22-
w;m,Horror,1
23-
w,Horror,153
24-
m,Horror,935
26+
w,Horror,151
27+
m,Horror,930
28+
w;m,Horror,12
2529
w;w,Horror,2
26-
m;m,Nonfiction,332
27-
w,Nonfiction,1380
30+
m;m,Literary Fiction,6
31+
w;m,Literary Fiction,2
32+
w;w,Literary Fiction,1
33+
m;m;m,Literary Fiction,1
34+
m,Literary Fiction,863
35+
w,Literary Fiction,367
36+
m,Nonfiction,4703
37+
w,Nonfiction,1335
38+
w;m,Nonfiction,171
2839
w;w,Nonfiction,80
29-
m,Nonfiction,4713
30-
m;w,Nonfiction,100
31-
w;m,Nonfiction,71
32-
m,Philosophy,855
33-
w,Philosophy,48
34-
m;w,Philosophy,1
35-
w;m,Philosophy,2
40+
m;m,Nonfiction,332
41+
w,Philosophy,45
42+
w;m,Philosophy,3
43+
m,Philosophy,841
3644
m;m,Philosophy,39
37-
m;w,Poetry,2
38-
m;m,Poetry,9
39-
w;m,Poetry,1
4045
w;w,Poetry,2
41-
w,Poetry,167
42-
m,Poetry,736
43-
m;m;m,Romance,1
44-
m;w,Romance,13
45-
w;w,Romance,91
46-
n,Romance,1
47-
m,Romance,2644
46+
w;m,Poetry,3
47+
w,Poetry,163
48+
m;m,Poetry,9
49+
m,Poetry,730
50+
m,Romance,2586
51+
w;m,Romance,22
52+
w;w,Romance,89
53+
w,Romance,4729
4854
m;m,Romance,11
49-
w;m,Romance,9
50-
w,Romance,4777
51-
m;m,Science Fiction,75
52-
m,Science Fiction,1588
53-
w,Science Fiction,242
54-
w;m,Science Fiction,13
55+
n,Romance,1
56+
m;m;m,Romance,1
57+
w;m,Science Fiction,37
5558
w;w,Science Fiction,13
56-
m;w,Science Fiction,24
57-
w;m,Thriller,2
58-
w,Thriller,530
59-
w;w,Thriller,9
59+
m;m,Science Fiction,75
60+
w,Science Fiction,238
61+
m,Science Fiction,1579
62+
w;m,Thriller,18
63+
w,Thriller,513
6064
m;m,Thriller,72
61-
m,Thriller,1715
62-
m;w,Thriller,16
63-
w,Young Adult,2534
65+
m,Thriller,1683
66+
w;w,Thriller,9
67+
m,Young Adult,1856
68+
m;m;m,Young Adult,1
6469
w;w,Young Adult,59
70+
w;m,Young Adult,46
6571
m;m,Young Adult,30
66-
w;m,Young Adult,21
67-
m,Young Adult,1878
68-
m;w,Young Adult,25
69-
m;m;m,Young Adult,1
72+
w,Young Adult,2516

0 commit comments

Comments
 (0)