Spaces:
Sleeping
Sleeping
| 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) | |