Đối với bất kỳ ai làm việc trong vai trò phân tích, việc nhận yêu cầu so sánh dữ liệu sẽ quá quen thuộc. Cho dù đó là để chứng minh tính toàn vẹn của dữ liệu, việc phân phối dữ liệu thành công hoặc chỉ cố gắng hiểu sự khác biệt giữa hai tệp hoặc bộ dữ liệu, quá trình này hầu như sẽ luôn giống nhau. Đôi khi, khi dữ liệu đủ nhỏ, việc đặt mỗi bộ dữ liệu vào một bảng tính và sau đó thực hiện một so sánh giữa các ô sẽ phải đủ.
Trong hướng dẫn ngắn này, bạn sẽ thấy cách so sánh các giá trị giữa hai khung dữ liệu gấu trúc. Bạn cũng sẽ quan sát cách so sánh các giá trị từ hai tệp đã nhập.
Bước 1: Chuẩn bị các bộ dữ liệu được so sánh
Để bắt đầu, hãy để nói rằng bạn có hai bộ dữ liệu sau mà bạn muốn so sánh:
Bộ dữ liệu đầu tiên:
product_1 | price_1 |
máy tính | 1200 |
màn hình | 800 |
Máy in | 200 |
bàn | 350 |
Bộ dữ liệu thứ hai:
product_2 | price_2 |
máy tính | 900 |
màn hình | 800 |
Máy in | 300 |
bàn | 350 |
Bộ dữ liệu thứ hai:
Mục tiêu cuối cùng là so sánh giá [tức là, Price_1 so với Price_2].
Bước 2: Tạo hai khung dữ liệu
import pandas as pd data_1 = {'product_1': ['computer','monitor','printer','desk'], 'price_1': [1200,800,200,350] } df1 = pd.DataFrame[data_1] print[df1] data_2 = {'product_2': ['computer','monitor','printer','desk'], 'price_2': [900,800,300,350] } df2 = pd.DataFrame[data_2] print [df2]
Dựa trên dữ liệu trên, sau đó bạn có thể tạo hai khung dữ liệu sau bằng mã này:
product_1 price_1
0 computer 1200
1 monitor 800
2 printer 200
3 desk 350
product_2 price_2
0 computer 900
1 monitor 800
2 printer 300
3 desk 350
Chạy mã trong Python và bạn sẽ nhận được hai DataFrames:
Bước 3: So sánh các giá trị giữa hai khung dữ liệu gấu trúc
Trong bước này, bạn sẽ cần nhập gói Numpy.
df1['new column that will contain the comparison results'] = np.where[condition,'value if true','value if false']
Sau đó, bạn có thể sử dụng mẫu này để thực hiện so sánh:
df1['prices_match'] = np.where[df1['price_1'] == df2['price_2'], 'True', 'False']
Ví dụ của chúng tôi, đây là cú pháp mà bạn có thể thêm để so sánh giá [tức là, Price_1 so với Price_2] giữa hai khung dữ liệu:
- Bạn có thể nhận thấy rằng một cột mới [nghĩa là cột ‘price_match,] sẽ được tạo dưới khung dữ liệu đầu tiên [nghĩa là, DF1]. Cột mới này sẽ chứa kết quả so sánh dựa trên các quy tắc sau:True
- Nếu price_1 bằng giá_2, thì hãy gán giá trị của trueFalse
Nếu không, hãy gán giá trị sai
import pandas as pd import numpy as np data_1 = {'product_1': ['computer','monitor','printer','desk'], 'price_1': [1200,800,200,350] } df1 = pd.DataFrame[data_1] data_2 = {'product_2': ['computer','monitor','printer','desk'], 'price_2': [900,800,300,350] } df2 = pd.DataFrame[data_2] df1['price_2'] = df2['price_2'] #add the price_2 column from df2 to df1 df1['prices_match'] = np.where[df1['price_1'] == df2['price_2'], 'True', 'False'] #create a new column in df1 to check if prices match print[df1]
Dưới đây là mã Python hoàn chỉnh mà bạn có thể sử dụng để so sánh giá giữa hai khung dữ liệu:
product_1 price_1 price_2 prices_match
0 computer 1200 900 False
1 monitor 800 800 True
2 printer 200 300 False
3 desk 350 350 True
Chạy mã và bạn sẽ nhận được so sánh giá sau:
Lưu ý rằng trong mã trên, cột Price_2 từ DataFrame thứ hai cũng được thêm vào khung dữ liệu đầu tiên để có được cái nhìn tốt hơn khi so sánh giá.
Bây giờ điều gì sẽ xảy ra nếu bạn muốn tìm thấy sự khác biệt thực tế giữa hai mức giá?
[price_1] - [price_2]
df1['price_diff'] = np.where[df1['price_1'] == df2['price_2'], 0, df1['price_1'] - df2['price_2']]
Trong trường hợp đó, bạn có thể thêm cú pháp sau vào mã của mình:
import pandas as pd import numpy as np data_1 = {'product_1': ['computer','monitor','printer','desk'], 'price_1': [1200,800,200,350] } df1 = pd.DataFrame[data_1] data_2 = {'product_2': ['computer','monitor','printer','desk'], 'price_2': [900,800,300,350] } df2 = pd.DataFrame[data_2] df1['price_2'] = df2['price_2'] #add the price_2 column from df2 to df1 df1['prices_match'] = np.where[df1['price_1'] == df2['price_2'], 'True', 'False'] #create a new column in df1 to check if prices match df1['price_diff'] = np.where[df1['price_1'] == df2['price_2'], 0, df1['price_1'] - df2['price_2']] #create a new column in df1 for price diff print[df1]
Vì vậy, mã Python hoàn chỉnh sẽ trông như thế này:
product_1 price_1 price_2 prices_match price_diff
0 computer 1200 900 False 300
1 monitor 800 800 True 0
2 printer 200 300 False -100
3 desk 350 350 True 0
Khi bạn chạy mã, bạn sẽ nhận được sự khác biệt thực tế giữa giá:
So sánh các giá trị từ hai tệp đã nhập
Cuối cùng, bạn sẽ thấy cách so sánh các giá trị từ hai tệp đã nhập.file_1:
product_1 | price_1 |
máy tính | 1200 |
màn hình | 800 |
Máy in | 200 |
bàn | 350 |
Bộ dữ liệu thứ hai:file_2:
product_2 | price_2 |
máy tính | 900 |
màn hình | 800 |
Máy in | 300 |
bàn | 350 |
Bộ dữ liệu thứ hai:
- Mục tiêu cuối cùng là so sánh giá [tức là, Price_1 so với Price_2]. is stored under this path: C:\Users\Ron\Desktop\Test\file_1.csv
- Bước 2: Tạo hai khung dữ liệu is stored under this path: C:\Users\Ron\Desktop\Test\file_2.csv
Dựa trên dữ liệu trên, sau đó bạn có thể tạo hai khung dữ liệu sau bằng mã này:
- File_1 sẽ được gán cho DF1 will be assigned to df1
- File_2 sẽ được gán cho DF2 will be assigned to df2
Như trước đây, mục tiêu là so sánh giá [tức là, price_1 so với price_2].
Vì vậy, đây là mã Python hoàn chỉnh để so sánh các giá trị từ hai tệp đã nhập:
import pandas as pd import numpy as np data_1 = pd.read_csv[r'C:\Users\Ron\Desktop\Test\file_1.csv'] df1 = pd.DataFrame[data_1] data_2 = pd.read_csv[r'C:\Users\Ron\Desktop\Test\file_2.csv'] df2 = pd.DataFrame[data_2] df1['price_2'] = df2['price_2'] df1['prices_match'] = np.where[df1['price_1'] == df2['price_2'], 'True', 'False'] df1['price_diff'] = np.where[df1['price_1'] == df2['price_2'], 0, df1['price_1'] - df2['price_2']] print[df1]
Khi bạn chạy mã trong Python [được điều chỉnh theo đường dẫn của bạn], bạn sẽ nhận được sự khác biệt giữa giá:
product_1 price_1
0 computer 1200
1 monitor 800
2 printer 200
3 desk 350
product_2 price_2
0 computer 900
1 monitor 800
2 printer 300
3 desk 350
0Lưu ý cuối cùng khi so sánh DataFrames
Khi bạn so sánh hai DataFrames, bạn phải đảm bảo rằng số lượng bản ghi trong DataFrame đầu tiên khớp với số lượng bản ghi trong DataFrame thứ hai. Trong ví dụ của chúng tôi, mỗi trong số hai DataFrames có 4 bản ghi, với 4 sản phẩm và 4 giá.
Ví dụ, nếu một trong các DataFrames có 5 sản phẩm, trong khi DataFrame khác có 4 sản phẩm và bạn đã cố gắng chạy so sánh, thì bạn sẽ gặp lỗi sau:
ValueError: Chỉ có thể so sánh các đối tượng chuỗi được dán nhãn giống hệt nhau