Hợp nhất và nối
Bài học 17 trên 19 trong khóa học Phân tích dữ liệu với pandas của Coddy.
Trong thực tế, dữ liệu thường đến từ nhiều bảng hoặc tệp. Để kết nối và phân tích dữ liệu này, chúng ta cần có khả năng kết hợp các bộ dữ liệu. Để kết hợp các dataframe, ta có thể dùng .merge(), .join() và .concat().
.merge() tương tự thao tác JOIN trong SQL, kết nối các cột hoặc chỉ số trong dataframe dựa trên một hoặc nhiều khóa:
merged_df = df1.merge(df2, on='common_column')Ví dụ, hai bảng sau:
| ID | VALUE |
| 1 | "val1" |
| 2 | "val2" |
| ID | POINTS |
| 1 | 9 |
Sẽ trở thành:
| ID | VALUE | POINTS |
| 1 | "val1" | 9 |
Hàm .concat() dùng để thêm các hàng của một dataframe vào cuối dataframe khác, rồi trả về một dataframe mới. Thao tác này tương tự thao tác 'UNION' trong SQL:
concatenated_df = pd.concat([df1, df2])Thử thách
DễTệp CSV visits.csv chứa thông tin về số lượt ghé thăm một địa điểm cụ thể vào một thời điểm cụ thể.
Đây là 5 dòng đầu tiên của tệp:
location_id,visits,timestamp
8,1771,27498
9,4187,79919
0,4959,54228
6,7721,41588Tính min, max, mean, std, sum và median cho mỗi location id, rồi gộp chúng vào một dataframe. Đổi tên các cột thành:
sum_visits, min_visits, max_visits, mean_visits, std_visits và median_visits.
Dataframe cuối cùng sẽ có dạng như sau:
| location_id | sum_visits | min_visits | max_visits | mean_visits | std_visits | median_visits |
| ... | ... | ... | ... | ... | ... | ... |
Lưu kết quả vào df.
Tự làm thử
# pandas đã được nhập với tên pd
df = pd.read_csv("./visits.csv")
sum_visits = df.groupby("location_id").sum()
min_visits = df.groupby("location_id").min()
max_visits = df.groupby("location_id").max()
mean_visits = df.groupby("location_id").mean()
std_visits = df.groupby("location_id").std()
median_visits = df.groupby("location_id").median()
# Viết code của bạn bên dưới
Tất cả bài học trong Phân tích dữ liệu với pandas
4Phân tích dữ liệu với Pandas
Thống kê mô tảNhóm và tổng hợp dữ liệuCác phép tổng hợp khác nhauHợp nhất và nốiTự luyện tập: Trình biên dịch Python online