Làm cách nào để nối hai khung dữ liệu trong một cột trong python?
Để hợp nhất hai Pandas DataFrame với cột chung, hãy sử dụng hàm merge() và đặt tham số BẬT làm tên cột Show
Đầu tiên, chúng ta hãy nhập thư viện gấu trúc với bí danh - import pandas as pd Hãy để chúng tôi tạo DataFrame đầu tiên - dataFrame1 = pd.DataFrame( { "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90] } ) Tiếp theo, tạo DataFrame thứ 2 - dataFrame2 = pd.DataFrame( { "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Mercedes', 'Jaguar'],"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000] } ) Bây giờ, hợp nhất hai DataFrames với một cột cột “Xe hơi” − mergedRes = pd.merge(dataFrame1, dataFrame2, on ='Car') Thí dụSau đây là mã hoàn chỉnh - import pandas as pd # Create DataFrame1 dataFrame1 = pd.DataFrame( { "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90] } ) print"DataFrame1 ... đầu raĐiều này sẽ tạo ra đầu ra sau - DataFrame1 ... Car Units 0 BMW 100 1 Lexus 150 2 Audi 110 3 Mustang 80 4 Bentley 110 5 Jaguar 90 DataFrame2 ... Car Reg_Price 0 BMW 7000 1 Lexus 1500 2 Audi 5000 3 Mustang 8000 4 Mercedes 9000 5 Jaguar 6000 Merged data frame with common column... Car Units Reg_Price 0 BMW 100 7000 1 Lexus 150 1500 2 Audi 110 5000 3 Mustang 80 8000 4 Jaguar 90 6000 Cập nhật ngày 22-Sep-2021 12. 12. 13 Trong mọi tình huống khoa học dữ liệu trong thế giới thực với Python, bạn sẽ mất khoảng 10 phút để hợp nhất hoặc tham gia các Khung dữ liệu Pandas lại với nhau để tạo thành tập dữ liệu phân tích của mình. Hợp nhất và tham gia các khung dữ liệu là một quy trình cốt lõi mà bất kỳ nhà phân tích dữ liệu tham vọng nào cũng cần phải thành thạo. Bài đăng trên blog này đề cập đến quá trình hợp nhất các bộ dữ liệu, nghĩa là nối hai bộ dữ liệu lại với nhau dựa trên các cột chung giữa chúng. Các chủ đề chính được đề cập ở đây
Nếu bạn muốn tự mình thực hiện hướng dẫn, tôi đang sử dụng thiết lập sổ ghi chép Jupyter với Python từ Anaconda và tôi đã đăng mã trên GitHub tại đây. Tôi đã đưa bộ dữ liệu mẫu vào kho lưu trữ GitHub Dữ liệu mẫuĐối với bài đăng này, tôi đã lấy một số dữ liệu thực từ ứng dụng KillBiller và một số dữ liệu đã tải xuống, chứa trong ba tệp CSV
Chúng tôi có thể tải các tệp CSV này dưới dạng Pandas DataFrames vào gấu trúc bằng cách sử dụng lệnh Pandas read_csv và kiểm tra nội dung bằng cách sử dụng lệnh DataFrame head() Có thể bạn quan tâmCó các thuộc tính liên kết giữa các tập dữ liệu mẫu cần lưu ý – “use_id” được chia sẻ giữa user_usage và user_device, đồng thời cột “device” của user_device và cột “Model” của tập dữ liệu thiết bị chứa các mã phổ biến vấn đề mẫuChúng tôi muốn xác định xem các kiểu sử dụng của người dùng có khác nhau giữa các thiết bị khác nhau không. Ví dụ: người dùng sử dụng thiết bị Samsung có sử dụng nhiều phút gọi hơn những người sử dụng thiết bị LG không? Chúng tôi muốn tạo một khung dữ liệu duy nhất với các cột cho số liệu sử dụng của người dùng (số cuộc gọi mỗi tháng, sms mỗi tháng, v.v.) và cả các cột có thông tin thiết bị (kiểu máy, nhà sản xuất, v.v.). Chúng tôi sẽ cần “hợp nhất” (hoặc “tham gia”) các bộ dữ liệu mẫu của chúng tôi lại với nhau thành một bộ dữ liệu duy nhất để phân tích Hợp nhất khung dữ liệu
Các từ "hợp nhất" và "tham gia" được sử dụng tương đối thay thế cho nhau trong Pandas và các ngôn ngữ khác, cụ thể là SQL và R. Trong Pandas, có các chức năng "hợp nhất" và "tham gia" riêng biệt, cả hai đều làm những việc tương tự Trong trường hợp ví dụ này, chúng tôi sẽ cần thực hiện hai bước
Tôi có thể sử dụng vòng lặp for không?Đúng. Bạn có thể viết các vòng lặp cho nhiệm vụ này. Đầu tiên sẽ lặp qua use_id trong tập dữ liệu user_usage, sau đó tìm phần tử phù hợp trong user_devices. Vòng lặp for thứ hai sẽ lặp lại quy trình này cho các thiết bị Tuy nhiên, việc sử dụng vòng lặp for sẽ chậm hơn và dài dòng hơn nhiều so với việc sử dụng chức năng hợp nhất của Pandas. Vì vậy, nếu bạn gặp tình huống này – đừng sử dụng vòng lặp for Hợp nhất user_usage với user_devicesHãy xem cách chúng ta có thể thêm chính xác cột "thiết bị" và "nền tảng" vào khung dữ liệu user_usage bằng cách sử dụng lệnh Pandas Merge result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id') result.head() Vì vậy, nó hoạt động, và rất dễ dàng. Bây giờ – nó hoạt động như thế nào? . hợp nhất lệnh đang làm gì? Lệnh hợp nhất là mục tiêu học tập chính của bài đăng này. Thao tác hợp nhất đơn giản nhất lấy khung dữ liệu bên trái (đối số đầu tiên), khung dữ liệu bên phải (đối số thứ hai), sau đó là tên cột hợp nhất hoặc cột để hợp nhất “trên”. Trong đầu ra/kết quả, các hàng từ các khung dữ liệu bên trái và bên phải được đối sánh với các giá trị chung của cột hợp nhất được chỉ định bởi "bật" Với kết quả này, giờ đây chúng ta có thể chuyển sang lấy số nhà sản xuất và kiểu máy từ tập dữ liệu “thiết bị”. Tuy nhiên, trước tiên chúng ta cần hiểu thêm một chút về các loại hợp nhất và kích thước của khung dữ liệu đầu ra Các loại hợp nhất bên trong, bên trái và bên phảiTrong ví dụ của chúng tôi ở trên, chúng tôi đã hợp nhất user_usage với user_devices. Bản xem trước head() của kết quả trông rất tuyệt, nhưng điều này còn nhiều điều hơn là bắt mắt. Trước tiên, hãy xem kích thước hoặc hình dạng của đầu vào và đầu ra của lệnh hợp nhất Tại sao kết quả có kích thước khác với cả hai khung dữ liệu gốc? Theo mặc định, hoạt động hợp nhất Pandas hoạt động với một hợp nhất "bên trong". Hợp nhất bên trong, (hoặc nối bên trong) chỉ giữ các giá trị chung trong cả khung dữ liệu bên trái và bên phải cho kết quả. Trong ví dụ của chúng tôi ở trên, chỉ những hàng chứa giá trị use_id phổ biến giữa user_usage và user_device mới được lưu lại trong tập dữ liệu kết quả. Chúng ta có thể xác thực điều này bằng cách xem có bao nhiêu giá trị phổ biến Có 159 giá trị của use_id trong bảng user_usage xuất hiện trong user_device. Đây là những giá trị giống nhau cũng xuất hiện trong khung dữ liệu kết quả cuối cùng (159 hàng) Các loại hợp nhất khácCó ba loại hợp nhất khác nhau có sẵn trong Pandas. Các loại hợp nhất này là phổ biến trên hầu hết các ngôn ngữ hướng dữ liệu và cơ sở dữ liệu (SQL, R, SAS) và thường được gọi là "tham gia". Nếu bạn chưa biết chúng, hãy tìm hiểu chúng ngay bây giờ
Loại hợp nhất sẽ sử dụng được chỉ định bằng cách sử dụng tham số “làm thế nào” trong lệnh hợp nhất, nhận các giá trị “trái”, “phải”, “bên trong” (mặc định) hoặc “bên ngoài” Sơ đồ Venn thường được sử dụng để minh họa các loại hợp nhất và nối khác nhau. Xem ví dụ này từ Stack tràn Nếu đây là điều mới mẻ đối với bạn hoặc bạn đang cau mày nhìn vào phần trên, hãy dành thời gian xem video này về "hợp nhất các khung dữ liệu" từ Coursera để có một lời giải thích khác có thể hữu ích. Bây giờ chúng ta sẽ xem xét từng loại hợp nhất chi tiết hơn và làm việc thông qua các ví dụ về từng loại Ví dụ về hợp nhất trái / nối tráiHãy lặp lại thao tác hợp nhất của chúng ta, nhưng lần này hãy thực hiện "hợp nhất bên trái" trong Pandas
Bạn có thể thay đổi hợp nhất thành hợp nhất trái với tham số “làm thế nào” cho lệnh hợp nhất của bạn. Phần trên cùng của khung dữ liệu kết quả chứa các mục được khớp thành công và ở dưới cùng chứa các hàng trong user_usage không có use_id tương ứng trong user_device result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='left') Ví dụ về hợp nhất bên phải/nối bên phảiVí dụ, chúng ta có thể lặp lại quy trình này với nối phải / hợp nhất phải, chỉ bằng cách thay thế how=’left’ bằng how=’right’ trong lệnh hợp nhất Pandas ________số 8Kết quả dự kiến sẽ có cùng số hàng như khung dữ liệu bên phải, user_device, nhưng có một số giá trị NaN hoặc trống trong các cột bắt nguồn từ khung dữ liệu bên trái, user_usage (cụ thể là “outgoing_mins_per_month”, “outgoing_sms_per_month” và “monthly_mb”). Ngược lại, chúng tôi mong đợi không có giá trị nào bị thiếu trong các cột bắt nguồn từ khung dữ liệu bên phải, “user_device” Ví dụ về kết hợp bên ngoài/nối bên ngoài đầy đủCuối cùng, chúng tôi sẽ thực hiện hợp nhất bên ngoài bằng cách sử dụng Pandas, còn được gọi là "nối ngoài đầy đủ" hoặc chỉ "nối bên ngoài". Phép nối ngoài có thể được coi là sự kết hợp của phép nối trái và phải hoặc ngược lại với phép nối trong. Trong các liên kết bên ngoài, mọi hàng từ các khung dữ liệu bên trái và bên phải được giữ lại trong kết quả, với các NaN không có biến liên kết phù hợp Do đó, chúng tôi hy vọng kết quả sẽ có cùng số lượng hàng vì có các giá trị riêng biệt của “use_id” giữa user_device và user_usage, i. e. mọi giá trị nối từ khung dữ liệu bên trái sẽ có trong kết quả cùng với mọi giá trị từ khung dữ liệu bên phải và chúng sẽ được liên kết nếu có thể Trong sơ đồ bên dưới, các hàng ví dụ từ kết quả hợp nhất bên ngoài được hiển thị, hai hàng đầu tiên là các ví dụ trong đó "use_id" phổ biến giữa các khung dữ liệu, hai hàng thứ hai chỉ bắt nguồn từ khung dữ liệu bên trái và hai hàng cuối cùng chỉ bắt nguồn từ bên phải Sử dụng chỉ báo hợp nhất để theo dõi hợp nhấtĐể hỗ trợ xác định vị trí các hàng bắt nguồn từ đâu, Pandas cung cấp một tham số "chỉ báo" có thể được sử dụng với hàm hợp nhất để tạo một cột bổ sung có tên là "_merge" trong đầu ra gắn nhãn nguồn ban đầu cho mỗi hàng result = pd.merge(user_usage, user_device[['use_id', 'platform', 'device']], on='use_id', how='outer', indicator=True) Hợp nhất cuối cùng – Kết hợp các chi tiết thiết bị để tạo kết quảQuay trở lại vấn đề ban đầu của chúng tôi, chúng tôi đã hợp nhất user_usage với user_device, vì vậy chúng tôi có nền tảng và thiết bị cho mỗi người dùng. Ban đầu, chúng tôi đã sử dụng "hợp nhất bên trong" làm mặc định trong Pandas và do đó, chúng tôi chỉ có các mục nhập dành cho người dùng có cả thông tin thiết bị. Chúng tôi sẽ thực hiện lại quá trình hợp nhất này bằng cách sử dụng một phép nối bên trái để giữ tất cả người dùng, sau đó sử dụng phép hợp nhất bên trái thứ hai để cuối cùng đưa các nhà sản xuất thiết bị vào cùng một khung dữ liệu dataFrame1 = pd.DataFrame( { "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90] } )0 Sử dụng left_on và right_on để hợp nhất với các tên cột khác nhauCác cột được sử dụng trong toán tử hợp nhất không cần phải được đặt tên giống nhau trong cả khung dữ liệu bên trái và bên phải. Trong lần hợp nhất thứ hai ở trên, lưu ý rằng ID thiết bị được gọi là "thiết bị" trong khung dữ liệu bên trái và được gọi là "Mẫu" trong khung dữ liệu bên phải Các tên cột khác nhau được chỉ định cho các hợp nhất trong Pandas bằng cách sử dụng thông số “left_on” và “right_on”, thay vì chỉ sử dụng thông số “on” Tính toán số liệu thống kê dựa trên thiết bịKhi quá trình hợp nhất của chúng tôi hoàn tất, chúng tôi có thể sử dụng chức năng tổng hợp dữ liệu của Pandas để nhanh chóng tìm ra mức sử dụng trung bình cho người dùng dựa trên nhà sản xuất thiết bị. Lưu ý rằng kích thước mẫu nhỏ thậm chí còn tạo ra các nhóm nhỏ hơn, vì vậy tôi sẽ không gán bất kỳ ý nghĩa thống kê nào cho những kết quả cụ thể này dataFrame1 = pd.DataFrame( { "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],"Units": [100, 150, 110, 80, 110, 90] } )1 Trở thành bậc thầy về sáp nhập – Phần 2Điều đó hoàn thành phần đầu tiên của hướng dẫn hợp nhất này. Bây giờ bạn đã chinh phục được những kiến thức cơ bản về hợp nhất và có thể giải quyết các vấn đề về hợp nhất và kết hợp của riêng bạn với thông tin ở trên. Phần 2 của bài đăng trên blog này đề cập đến các chủ đề nâng cao hơn sau đây
Các tài nguyên hữu ích khácĐừng để khả năng kết hợp của bạn dừng lại ở đây. Hãy thử các liên kết sau để được giải thích thêm và thông tin về chủ đề này Bạn có thể nối hai DataFrames trong Python không?Sử dụng gấu trúc.
phương thức concat() để nối hai DataFrame theo hàng nghĩa là nối thêm hai DataFrame. Theo mặc định, nó thực hiện các hoạt động chắp thêm tương tự như một liên kết trong đó nó làm sáng tất cả các hàng từ cả hai Khung dữ liệu thành một Khung dữ liệu duy nhất.
3 cách chính để kết hợp DataFrames với nhau là gì?Việc nối hai DataFrame có thể được thực hiện theo nhiều cách ( trái, phải và bên trong ) tùy thuộc vào dữ liệu phải có trong DataFrame cuối cùng. |
Bài Viết Liên Quan
Hướng dẫn how do you do a for loop in one line in python? - làm thế nào để bạn thực hiện một vòng lặp for trong một dòng trong python?
Giới thiệu về Python cho vòng lặp trong một dòngBắt đầu với Python cho vòng lặp trong một dòngCú pháp đơn giản của Python cho vòng lặp trong một dòngVí dụ-1: ...
Hướng dẫn how do you return a value from a key in python? - làm thế nào để bạn trả về một giá trị từ một khóa trong python?
Bài viết này mô tả cách lấy giá trị từ một từ điển (đối tượng loại # print(d[key4]) # KeyError: key4 3) bằng khóa trong Python.Nhận giá trị từ từ điển ...
Hướng dẫn does python have a syntax? - python có cú pháp không?
Python ban đầu được phát triển như một ngôn ngữ giảng dạy, nhưng sự dễ sử dụng và cú pháp sạch đã khiến nó được những người mới bắt đầu và các ...
Hướng dẫn insert data into multiple tables using one form php - chèn dữ liệu vào nhiều bảng bằng cách sử dụng một biểu mẫu php
4 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Tôi đang cố gắng chèn dữ liệu vào 2 bảng bằng một ...
Hướng dẫn how to check duplicate key in php? - làm thế nào để kiểm tra khóa trùng lặp trong php?
Tôi có một mảng từ điển như bên dưới$foo = array( key1 => value 1, key1 => value 2, key2 => value 3, key2 => value 4, key3 => value 5 ); Như ...
Thác pongour 2023
Pongour - Thác nước đẹp nhất Đông Dương ở Việt NamThác Pongour (hay còn gọi là thác Bảy Tầng) là một trong những kiệt tác của hóa công ưu đãi cho đất và ...
Hướng dẫn function inside function javascript es6 - hàm bên trong hàm javascript es6
TrướcTiếp theo Các chức năng là một trong những khối xây dựng cơ bản trong JavaScript. Một hàm trong JavaScript tương tự như một thủ tục, một tập hợp các ...
Hướng dẫn how do you execute queries in php? - làm thế nào để bạn thực hiện các truy vấn trong php?
Các câu lệnh có thể được thực thi với mysqli :: query (), mysqli :: real_query () và mysqli :: multi_query (). Hàm MySQLI :: Query () là phổ biến nhất và kết hợp câu ...
Hướng dẫn python json set value by key - python json đặt giá trị bằng khóa
38 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Tôi chưa quen với Python và tôi đang chơi với dữ liệu ...
Hướng dẫn read semicolon delimited file python - đọc python tệp được phân tách bằng dấu chấm phẩy
39 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Tôi nhập một tệp 0 a1;b1;c1;d1;e1;... 1 a2;b2;c2;d2;e2;... ...
Hướng dẫn install phpunit composer - cài đặt trình soạn nhạc phpunit
Th6 09, 2022 Hai G. 7ít nhất Đọc Trong bài này, chúng tôi sẽ chỉ bạn cách làm thế nào để cài đặt và sử dụng Composer trên nhiều nền tảng khác nhau. Composer ...
Total solar eclipse 2024
HomeNewsSkywatching A total solar eclipse photographed from Madras, Oregon, in 2017. (Image credit: NASA/Aubrey Gemignani)On April 8, 2024, the Great North American Solar Eclipse will ...
Hướng dẫn datetime format mysql create table - định dạng datetime mysql tạo bảng
Trong MySQL, bạn có thể tạo các bảng thông qua GUI hoặc bằng cách chạy mã SQL. Đây là một danh sách trên cả hai phương thức.Bây giờ chúng tôi đã tạo cơ sở ...
Viết chương trình pascal lớp 11 chuong 2
Giải Tin học 11 Chương 2: Chương trình đơn giảnHaylamdo biên soạn và sưu tầm lời giải Tin học 11 Chương 2: Chương trình đơn giản hay, chi tiết được biên ...
Hướng dẫn create a dictionary python - tạo một python từ điển
Giới thiệu về Dictionary trong PythonDictionary là một danh sách có chứa một tập hợp các phần tử, mỗi phần tử của dictionary được thể hiện dưới dạng một ...
Hướng dẫn dùng example python python
Python là một ngôn ngữ đề cao khả năng dễ đọc, ngắn gọn là quan trọng là LÀM ĐƯỢC NHIỀU THỨ.Nội dung chính Show 2. Thử chạy tập lệnh Python 3. Các kiểu ...
Hướng dẫn what is argument and parameter in python with example? - đối số và tham số trong python là gì với ví dụ?
Xem thảo luậnCải thiện bài viếtLưu bài viếtĐọcBàn luậnXem thảo luậnCải thiện bài viếtLưu bài viếtĐọcParameters:Bàn luậnExample:Python3Luôn có một chút ...
Hướng dẫn find escape characters in string python - tìm ký tự thoát trong chuỗi python
Nó không hoàn toàn rõ ràng những gì bạn đang hỏi. Bạn nói về một chuỗi, nhưng cũng là một phiên bản thô và chuỗi của bạn chứa RawString, dường như ...
Hướng dẫn scientific computing with python - máy tính khoa học với python
Tham dự khóa học 22-25.november.2022?Xem trang khóa học ở đây. Cho dù bạn là hoặc aren, tài liệu khóa học dưới đây.Python là một ngôn ngữ lập trình hiện ...
Hướng dẫn how set mysql root password localhost? - cách đặt mật khẩu gốc mysql localhost?
Giới thiệuMySQL là một hệ thống quản lý cơ sở dữ liệu phổ biến cho phần mềm ứng dụng web. Giống như nhiều dịch vụ web, MySQL có mật khẩu cấp quản ...