File size: 5,525 Bytes
e964b12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
import pandas as pd

'''# Gộp 2 data từ the-numbers và movie-mojo
df_a = pd.read_csv("../mojo/data/all_movie_mojo.csv")
df_b = pd.read_csv("../the-numbers/data/all_the-numbers.csv")

# Thêm cột genres cho df_b với giá trị ""
df_b["genres"] = ""
df_b.drop("international_box_office", axis=1, inplace=True)
df_b.drop("worldwide_box_office", axis=1, inplace=True)

df_a.drop_duplicates(subset=["movie_name"], inplace=True)
df_b.drop_duplicates(subset=["movie_name"], inplace=True)
print(df_a.info())
print(df_b.info())
# Gộp dữ liệu từ hai DataFrame
merged_df = pd.merge(
    df_a,
    df_b,
    on=[
        "movie_name",
    ],
    how="outer",
    suffixes=("_a", "_b"),
)

print(merged_df.info())

# Tạo hàm để lấy giá trị lớn hơn
def choose_greater_value(value_a, value_b):
    if pd.isna(value_a):
        return value_b
    elif pd.isna(value_b):
        return value_a
    else:
        return max(value_a, value_b)


# Áp dụng hàm cho các cột cần so sánh
cols_to_compare = ["month","year","mpaa"]
for col in cols_to_compare:
    merged_df[col] = merged_df.apply(
        lambda row: (
            row[f"{col}_a"] if not pd.isna(row[f"{col}_a"]) else row[f"{col}_b"]
        ),
        axis=1,
    )

# Lấy giá trị lớn hơn cho các cột còn lại
cols_to_get_greater = [
    "budget",
    "runtime",
    "screens",
    "opening_week",
    "domestic_box_office",
]
for col in cols_to_get_greater:
    merged_df[col] = merged_df.apply(
        lambda row: choose_greater_value(row[f"{col}_a"], row[f"{col}_b"]), axis=1
    )

merged_df["genres"] = merged_df["genres_a"]

print(merged_df.info())

# Loại bỏ các cột dư thừa
columns_to_drop = [col for col in merged_df.columns if col.endswith(("_a", "_b"))]
merged_df = merged_df.drop(columns=columns_to_drop, axis=1)

# Lưu kết quả vào file mới
print(merged_df.info())
merged_df.to_csv("merged.csv", index=False)

merged_df.dropna(
    subset=[
        "month",
        "year",
        "runtime",
        "budget",
        "mpaa",
        "screens",
        "opening_week",
        "domestic_box_office",
    ],
    inplace=True,
)
print(merged_df.info())
merged_df = merged_df[merged_df["mpaa"] != "Not"]
merged_df.to_csv("filtered_merged_data.csv", index=False)

print("Tổng hợp dữ liệu thành công và lưu vào file 'merged.csv'.")
'''

# ==================================================================================

# Gộp dữ liệu từ imdb và filtered_merged_data
'''
df_a = pd.read_csv("filtered_merged_data.csv")
df_b = pd.read_csv("../imdb/data/all_data.csv")

print(df_a.info())
print(df_b.info())
# Gộp dữ liệu từ hai DataFrame
merged_df = pd.merge(
    df_a,
    df_b,
    on=[
        "movie_name",
    ],
    how="outer",
    suffixes=("_a", "_b"),
)

cols_to_compare = ["country", "genres", "month", "year"]
for col in cols_to_compare:
    merged_df[col] = merged_df.apply(
        lambda row: (
            row[f"{col}_a"] if not pd.isna(row[f"{col}_a"]) else row[f"{col}_b"]
        ),
        axis=1,
    )

columns_to_drop = [col for col in merged_df.columns if col.endswith(("_a", "_b"))]
merged_df = merged_df.drop(columns=columns_to_drop, axis=1)

merged_df.dropna(subset=["country", "genres","ratings","user_vote"], inplace=True)
print(merged_df.info())
merged_df.to_csv("imdb_merged.csv", index=False)

'''

# Gộp dữ liệu từ critic_data.csv và imdb_merged.csv
'''
df_a = pd.read_csv("imdb_merged.csv")
df_b = pd.read_csv("critic_data.csv")
print(df_b.info())
df_b = df_b.dropna(subset=["critic_vote_rotten","critic_vote_metacritic","meta_score_metacritic","meta_score_rotten"],how = "all")
print(df_b.info())
merged_df = pd.merge(
    df_a,
    df_b,
    on=[
        "movie_name",
    ],
    how="outer",
    suffixes=("_a", "_b"),
)
print(merged_df.info())
merged_df["month"] = merged_df["month_a"]
merged_df["year"] = merged_df["year_a"]
columns_to_drop = [col for col in merged_df.columns if col.endswith(("_a", "_b"))]
merged_df = merged_df.drop(columns=columns_to_drop, axis=1)
merged_df.drop(columns = ["critic_vote_rotten","critic_vote_metacritic","meta_score_metacritic","meta_score_rotten"], axis=1, inplace=True)
merged_df = merged_df.dropna(subset = ["critic_vote","meta_score"], how = "all")
print(merged_df.info())
merged_df.to_csv("critic_merged.csv", index=False)
'''

# Gộp dữ liệu từ critic_merged.csv và themoviedb.csv

df_a = pd.read_csv("critic_merged.csv")
df_b = pd.read_csv("../themoviedb/data/all_data_themoviedb.csv")
merged_df = pd.merge(
    df_a,
    df_b,
    on=[
        "movie_name",
    ],
    how="outer",
    suffixes=("_a", "_b"),
)
print(merged_df.info())
merged_df["month"] = merged_df["month_a"]
merged_df["year"] = merged_df["year_a"]
columns_to_drop = [col for col in merged_df.columns if col.endswith(("_a", "_b"))]
merged_df = merged_df.drop(columns=columns_to_drop, axis=1)

print(merged_df.info())



# Hàm sửa đổi cột "genres"
def fix_genres(genres_str):
    genres = genres_str.split()
    if "Music" in genres and "Musical" in genres:
        genres.remove("Music")
    else:
        genres = [genre.replace("Music", "Musical") for genre in genres]
        genres = [genre.replace("Musicalal", "Musical") for genre in genres]
    return " ".join(genres)


# Áp dụng hàm sửa đổi cho cột "genres"
merged_df["genres"] = merged_df["genres"].apply(fix_genres)

merged_df.drop(["tt_id","rl_id"],axis=1,inplace = True)
merged_df.to_csv("final_merged.csv", index=False)