Pandas là thư viện dành cho các nhà phân tích dữ liệu và lập trình viên Python muốn dấn thân vào thế giới xử lý và phân tích dữ liệu. Cú pháp trực quan và cấu trúc dữ liệu mạnh mẽ của nó giúp việc xử lý các tập dữ liệu lớn không chỉ dễ quản lý mà còn hiệu quả. Cho dù bạn đang nhập tệp CSV, dọn dẹp các tập dữ liệu lộn xộn hay phân tích xu hướng dữ liệu, Pandas đều có các công cụ bạn cần.
Nếu bạn mới bắt đầu hành trình học Pandas, bài viết này sẽ giới thiệu cho bạn 10 hàm và phương pháp thiết yếu mà mọi người mới bắt đầu nên nắm vững. Các hàm này sẽ giúp bạn tải, kiểm tra, dọn dẹp và phân tích dữ liệu một cách dễ dàng.
Sau đây là tổng quan nhanh về từng phương pháp và tác dụng của chúng:
đọc_csv()
: Tải dữ liệu từ tệp CSV vào Pandas DataFrame.cái đầu()
: Hiển thị một vài hàng đầu tiên của DataFrame.thông tin()
: Cung cấp bản tóm tắt ngắn gọn về DataFrame, bao gồm các kiểu cột và giá trị còn thiếu.mô tả()
: Tạo số liệu thống kê mô tả cho các cột số.không rỗng()
: Xác định dữ liệu bị thiếu trong DataFrame.thả()
: Xóa các hàng hoặc cột bị thiếu dữ liệu.điền()
: Thay thế dữ liệu bị thiếu bằng các giá trị được chỉ định.nhóm theo()
: Nhóm dữ liệu dựa trên một hoặc nhiều cột và áp dụng các hàm tổng hợp.sắp xếp_giá_trị()
: Sắp xếp DataFrame theo một hoặc nhiều cột.áp dụng()
: Áp dụng các hàm tùy chỉnh cho các hàng hoặc cột của DataFrame. Trước tiên, hãy đảm bảo Python đã được cài đặt trên máy của bạn. Nếu chưa, bạn có thể tải xuống từ liên kết này .
Sau khi Python được thiết lập, hãy xác nhận rằng thư viện Pandas đã được cài đặt. Nếu chưa, bạn có thể dễ dàng thêm nó bằng lệnh sau:
pip cài đặt pandas
Chúng tôi sẽ sử dụng tập dữ liệu bất động sản giả sau đây làm ví dụ:
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
101 | New York | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | San Francisco | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | Los Angeles | 4 | 3 | 2500 | 2023-04-10 | |
104 | Chicago | 3 | 2 | 650000 | 1700 | |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | Houston | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Bước đầu tiên khi sử dụng pandas là tải dữ liệu của bạn để chuẩn bị xử lý hoặc phân tích. Một trong những phương pháp phổ biến nhất để nhập dữ liệu vào pandas DataFrame là hàm read_csv() .
import pandas as pd # Tải tập dữ liệu vào Pandas DataFrame file_path = "real_estate_listings.csv" # Thay thế bằng đường dẫn tệp thực tế của bạn # Tạo DataFrame df = pd.read_csv(file_path)
Đầu tiên, chúng ta bắt đầu bằng cách nhập thư viện pandas. Sử dụng như pd
là một quy ước chung giữa các nhà phát triển để đơn giản hóa mã. Ví dụ, thay vì viết pandas.read_csv()
, chúng ta có thể chỉ cần sử dụng pd.read_csv()
, làm cho mã ngắn gọn hơn và dễ đọc hơn.
Tiếp theo, chỉ định đường dẫn đến tệp CSV mà bạn muốn tải vào Pandas DataFrame. Sau đó, tạo một biến và sử dụng đọc_csv
phương pháp tải tệp vào DataFrame.
Bây giờ chúng ta hãy cùng khám phá một số thông số quan trọng theo phương pháp này:
dấu phân cách:
Chỉ định dấu phân cách được sử dụng trong tệp CSV (ví dụ: ,, ;, \t).df = pd.read_csv(đường dẫn tệp, dấu phân cách= ',' )
chỉ mục_cột
: Trong bảng của chúng tôi, mỗi danh sách bất động sản được xác định bằng một ID tìm thấy trong "Thuộc tínhID"cột. Để đảm bảo pandas sử dụng cột này làm mã định danh duy nhất cho mỗi thuộc tính, chúng ta có thể thiết lập rõ ràng cột này làm cột ID. Nếu không, pandas sẽ tự động tạo và gán giá trị ID riêng cho mỗi danh sách.df = pd.read_csv(đường dẫn tệp, index_col= 'PropertyID' )
sử dụngcột
:Nếu tệp CSV của bạn chứa nhiều cột nhưng bạn chỉ cần một vài cột được chọn, pandas cho phép bạn dễ dàng thực hiện điều này bằng cách sử dụng một tham số cụ thể.df = pd.read_csv(file_path, usecols=[ 'Vị trí' , 'Giá' , 'Phòng ngủ' ])
Bây giờ dữ liệu đã được tải vào DataFrame, chúng ta có thể bắt đầu khám phá nó. Để làm như vậy, Pandas cung cấp hai phương pháp rất tiện dụng: cái đầu()
Và đuôi()
. Các phương pháp này rất cần thiết để kiểm tra nhanh hàng đầu tiên hoặc hàng cuối cùng trong tập dữ liệu của bạn.
# Xem 5 hàng đầu tiên in (df.head()) # Xem 3 hàng cuối cùng in (df.tail(3))
Đầu ra của cái đầu()
:
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
101 | New York | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | San Francisco | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | Los Angeles | 4 | 3 | 2500 | 2023-04-10 | |
104 | Chicago | 3 | 2 | 650000 | 1700 | |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
Đầu ra của đuôi()
:
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
104 | Chicago | 3 | 2 | 650000 | 1700 | |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | Houston | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Hàm info() cung cấp tóm tắt ngắn gọn về DataFrame. Nó bao gồm các chi tiết như:
Phương pháp này hữu ích để hiểu nhanh cấu trúc tập dữ liệu của bạn và phát hiện các vấn đề như giá trị bị thiếu hoặc kiểu dữ liệu không chính xác.
# Nhận tóm tắt ngắn gọn về bản in DataFrame (df. info ())
Đoạn mã trên tạo ra kết quả sau:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PropertyID 6 non-null int64
1 Location 6 non-null object
2 Bedrooms 6 non-null int64
3 Bathrooms 6 non-null int64
4 Price 5 non-null float64
5 SquareFootage 6 non-null int64
6 ListingDate 5 non-null object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes
Các mô tả() phương pháp này cung cấp một bản tóm tắt nhanh về các số liệu thống kê quan trọng như nghĩa là, độ lệch chuẩn, phần trămvà nhiều hơn nữa. Theo mặc định, mô tả()
hoạt động với dữ liệu số nhưng cũng có thể xử lý dữ liệu phân loại, cung cấp thông tin chi tiết phù hợp dựa trên loại dữ liệu.
phần trăm
: Danh sách các số từ 0 đến 1, chỉ định phần trăm nào sẽ trả về. Mặc định là None, trả về phần trăm thứ 25, 50 và 75. Đọc thêm đây.bao gồm
: Danh sách các kiểu dữ liệu để đưa vào tóm tắt. Bạn có thể chỉ định các kiểu dữ liệu như int, float, object (cho chuỗi), v.v. Mặc định là None, nghĩa là tất cả các kiểu số đều được đưa vào.loại trừ
: Danh sách các kiểu dữ liệu để loại trừ khỏi bản tóm tắt. Tham số này cũng Không có
theo mặc định, nghĩa là không có loại nào bị loại trừ.in (df.describe() )
Đầu ra của mã như sau:
PropertyID Vị trí Phòng ngủ ... Giá SquareFootage ListingNgày đếm 6 . 000000 6 6 . 000000 ... 5 . 000000 e+ 00 6 . 000000 5 NaN duy nhất 6 NaN ... NaN NaN 5 top NaN New York NaN ... NaN NaN 2023 - 05 - 15 tần số NaN 1 NaN ... NaN NaN 1 nghĩa là 103 . 500000 NaN 3 . 500000 ... 7 . 800000 đ+ 05 2150 . 000000 NaN tiêu chuẩn 1 . 870829 NaN 1 . 048809 ... 2 . 774887 e+ 05 755 . 645419 NaN tối thiểu 101 . 000000 NaN 2 . 000000 ... 4 . 500000 đ+ 05 1400 . 000000 NaN 25 % 102 . 250000 NaN 3 . 000000 ... 6 . 500000 đ+ 05 1725 . 000000 NaN 50 % 103 . 500000 NaN 3 . 500000 ... 7 . 500000 đ+ 05 1900 . 000000 NaN 75 % 104 . 750000 NaN 4 . 000000 ... 8 . 500000 đ+ 05 2375 . 000000 NaN tối đa 106 . 000000 NaN 5 . 000000 ... 1 . 200000 đ+ 06 3500 . 000000 NaN
đếm = 6
vì Phòng ngủ, biểu thị tất cả các hàng đều có dữ liệu hợp lệ.trung bình = 3,5
vì Phòng ngủ, chỉ ra mức trung bình của 3,5 phòng ngủ theo bất động sản.chuẩn = 1.048809
vì Phòng ngủ, nghĩa là có sự thay đổi vừa phải về số lượng phòng ngủ.phút = 2
Và tối đa = 5
vì Phòng ngủ.25%
: Giá trị mà dưới đó 25% dữ liệu nằm trong (tứ phân vị đầu tiên).50%
: Giá trị trung bình.75%
: Giá trị mà dưới đó 75% dữ liệu nằm trong (tứ phân vị thứ ba). Các không rỗng() hàm giúp xác định dữ liệu bị thiếu trong DataFrame. Nó trả về một DataFrame có cùng hình dạng với bản gốc, với ĐÚNG VẬY
nơi dữ liệu bị thiếu NaN
Và SAI
nếu không. Nó thường được sử dụng với các chức năng khác như tổng()
để đếm các giá trị bị thiếu trên các cột hoặc hàng.
# Xác định các giá trị bị thiếu print(df. isnull ()) # Đếm các giá trị bị thiếu cho mỗi cột print(df. isnull ().sum())
df.isnull()
Đầu ra:
ID tài sản Vị trí Phòng ngủ Phòng tắm Giá SquareFootage ListingNgày 0 Sai Sai Sai Sai Sai Sai Sai Sai 1 Sai Sai Sai Sai Sai Sai Sai 2 Sai Sai Sai Sai Đúng Sai Sai 3 Sai Sai Sai Sai Sai Sai Đúng 4 Sai Sai Sai Sai Sai Sai Sai 5 Sai Sai Sai Sai Sai Sai Sai Sai
df.isnull().tổng()
Đầu ra:
PropertyID 0 Vị trí 0 Phòng ngủ 0 Phòng tắm 0 Giá 1 Diện tích 0 Ngày niêm yết 1 dtype : int64
Các thả() chức năng loại bỏ hàng hoặc cột với dữ liệu bị thiếu NaN
từ DataFrame. Theo mặc định, nó xóa các hàng có bất kỳ giá trị nào bị thiếu. Bạn có thể tùy chỉnh hành vi của nó để chỉ xóa các cột hoặc xóa các hàng/cột khi tất cả hoặc một tập hợp con cụ thể của các giá trị bị thiếu
# Xóa các hàng có bất kỳ giá trị nào bị thiếu df_dropped_rows = df.dropna() print(df_dropped_rows) # Xóa các cột có bất kỳ giá trị nào bị thiếu df_dropped_columns = df.dropna(axis= 1 ) print(df_dropped_columns)
Đây là hình ảnh của DataFrame sau khi xóa tất cả hàng chứa đựng NaN
giá trị:
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
101 | New York | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | San Francisco | 2 | 1 | 850000 | 1400 | 2023-06-01 |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | Houston | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Đây là khung dữ liệu với cột chứa đựng NaN
các giá trị đã bị xóa.
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Diện tích hình vuông |
101 | New York | 3 | 2 | 1800 |
102 | San Francisco | 2 | 1 | 1400 |
103 | Los Angeles | 4 | 3 | 2500 |
104 | Chicago | 3 | 2 | 1700 |
105 | Miami | 5 | 4 | 3500 |
106 | Houston | 4 | 3 | 2000 |
Các điền() chức năng thay thế dữ liệu bị thiếu NaN
với các giá trị được chỉ định. Các chú gấu trúc thả()
phương pháp xử lý và loại bỏ các giá trị null khỏi DataFrame một cách hiệu quả, trong khi điền()
phương pháp cung cấp một giải pháp linh hoạt để thay thế NaN
giá trị với giá trị cụ thể theo lựa chọn của bạn. Phương pháp này cung cấp một cách tiếp cận linh hoạt để quản lý dữ liệu bị thiếu bằng cách cho phép bạn lấp đầy khoảng trống bằng cách sử dụng một giá trị cố định, nghĩa là, trung bình, cách thứchoặc các số liệu thống kê được tính toán khác.
# Điền giá trị còn thiếu vào cột 'Giá' với giá trung bình df['Giá'] = df [ 'Giá' ].fillna( df [ 'Giá' ].mean()) print ( df )
Đầu ra của mã chứng minh rằng NaN
giá trị đã được thay thế thành công bằng giá trung bình.
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
101 | New York | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | San Francisco | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | Los Angeles | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | Chicago | 3 | 2 | 650000 | 1700 | NaN |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | Houston | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Các Ngày niêm yết cột cũng chứa một NaN
giá trị. Thay vì thực hiện phép tính, chúng ta có thể chỉ cần sử dụng một trình giữ chỗ như "không rõ. Sau đây là cách thực hiện;
# Điền các giá trị còn thiếu vào cột 'ListingDate' bằng một chỗ giữ chỗ df [ 'ListingDate' ] = df [ 'ListingDate' ].fillna( 'Unknown' ) print ( df )
Khung dữ liệu hiện trông như sau:
Thuộc tínhID | Vị trí | Phòng ngủ | Phòng tắm | Giá | Diện tích hình vuông | Ngày niêm yết |
101 | New York | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | San Francisco | 2 | 1 | NaN | 1400 | 2023-06-01 |
103 | Los Angeles | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | Chicago | 3 | 2 | 650000 | 1700 | Không rõ |
105 | Miami | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | Houston | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Hàm groupby() trong Pandas là một công cụ đa năng và mạnh mẽ để chia DataFrame thành các nhóm dựa trên một hoặc nhiều cột, cho phép phân tích và tổng hợp dữ liệu hiệu quả.
Nó hoạt động theo nguyên tắc chia tách-áp dụng-kết hợp :
Đầu tiên, dữ liệu được chia thành các nhóm;
tiếp theo, một chức năng cụ thể được áp dụng cho mỗi nhóm;
Cuối cùng, kết quả được kết hợp thành một DataFrame mới.
Phương pháp hợp lý này giúp đơn giản hóa các tác vụ xử lý dữ liệu phức tạp và nâng cao hiệu quả phân tích.
Ví dụ, bạn có thể tính giá trung bình của bất động sản theo vị trí hoặc đếm số lượng danh sách theo từng loại phòng ngủ.
# Nhóm theo 'Vị trí' và tính giá trung bình avg_price_by_location = df.groupby( 'Vị trí' )[ 'Giá' ]. mean () pr int (avg_price_by_location) # Nhóm theo 'Phòng ngủ' và tính tổng diện tích vuông total_sqft_by_bedrooms = df.groupby( 'Phòng ngủ' )[ 'SquareFootage' ]. sum () pr int (total_sqft_by_bedrooms) # Nhóm theo nhiều cột và tính số lượng count_by_location_bedrooms = df.groupby([ 'Vị trí' , 'Phòng ngủ' ]).size() pr int (count_by_location_bedrooms)
Giá trung bình theo vị trí:
Vị trí Chicago 650000 . 0 Houston 450000 . 0 Los Angeles NaN Miami 1200000 . 0 New York 750000 . 0 San Francisco 850000 . 0 Tên : Price, dtype: float64
Tổng diện tích theo phòng ngủ:
Phòng ngủ 2 1400 3 3500 4 4500 5 3500
Đếm theo vị trí và phòng ngủ:
Vị trí Phòng ngủ Chicago 3 1 Houston 4 1 Los Angeles 4 1 Miami 5 1 New York 3 1 San Francisco 2 1 dtype : int64
Hàm sort_values() được sử dụng để sắp xếp DataFrame của bạn theo một hoặc nhiều cột, theo thứ tự tăng dần hoặc giảm dần. Sắp xếp là điều cần thiết để xếp hạng dữ liệu, xác định các giá trị cực đại (ví dụ: các thuộc tính có giá cao nhất) hoặc chỉ đơn giản là sắp xếp tập dữ liệu để dễ đọc hơn. Bạn có thể sắp xếp dựa trên các cột số , danh mục hoặc ngày giờ .
# Sắp xếp theo 'Giá' theo thứ tự giảm dần df_sorted_by_price = df.sort_values( by = 'Giá' , tăng dần = False ) print (df_sorted_by_price) # Sắp xếp theo 'Vị trí' theo thứ tự tăng dần df_sorted_by_location = df.sort_values( by = 'Vị trí' ) print (df_sorted_by_location) # Sắp xếp theo nhiều cột: đầu tiên theo 'Phòng ngủ' (tăng dần) và sau đó theo 'Giá' (giảm dần) df_sorted_by_bedrooms_price = df.sort_values(by=[ 'Phòng ngủ' , 'Giá' ], tăng dần=[ True , False ]) print (df_sorted_by_bedrooms_price)
Sắp xếp theo Giá (Giảm dần):
PropertyID Vị trí Phòng ngủ ... Giá Diện tích Ngày niêm yết 4 105 Miami 5 ... 1200000 . 0 3500 2023 - 03 - 22 1 102 San Francisco 2 ... 850000 . 0 1400 2023 - 06 - 01 0 101 New York 3 ... 750000 . 0 1800 2023 - 05 - 15 3 104 Chicago 3 ... 650000 . 0 1700 NaN 5 106 Houston 4 ... 450000 . 0 2000 2023 - 07 - 01 2 103 Los Angeles 4 ... NaN 2500 2023 - 04 - 10
Sắp xếp theo Vị trí (Tăng dần):
[6 hàng x 7 cột] PropertyID Vị trí Phòng ngủ ... Giá Diện tích Ngày niêm yết 3 104 Chicago 3 ... 650000.0 1700 NaN 5 106 Houston 4 ... 450000.0 2000 2023-07-01 2 103 Los Angeles 4 ... NaN 2500 2023-04-10 4 105 Miami 5 ... 1200000.0 3500 2023-03-22 0 101 New York 3 ... 750000.0 1800 2023-05-15 1 102 San Francisco 2 ... 850000.0 1400 2023-06-01
Sắp xếp theo Phòng ngủ (Tăng dần) và Giá (Giảm dần):
PropertyID Vị trí Phòng ngủ ... Giá Diện tích Ngày niêm yết 1 102 San Francisco 2 ... 850000 . 0 1400 2023 - 06 - 01 0 101 New York 3 ... 750000 . 0 1800 2023 - 05 - 15 3 104 Chicago 3 ... 650000 . 0 1700 NaN 5 106 Houston 4 ... 450000 . 0 2000 2023 - 07 - 01 2 103 Los Angeles 4 ... NaN 2500 2023 - 04 - 10 4 105 Miami 5 ... 1200000 . 0 3500 2023 - 03 - 22
Hàm apply() cho phép bạn áp dụng các hàm tùy chỉnh cho các hàng hoặc cột trong DataFrame. Đây là phương pháp mạnh mẽ để thực hiện các phép biến đổi từng phần tử, phép tính hoặc các phép toán có điều kiện vượt xa các hàm Pandas tích hợp sẵn.
Hãy xem một ví dụ về việc chúng ta muốn tạo một cột mới để tính giá cho mỗi feet vuông.
# Định nghĩa một hàm tùy chỉnh để tính giá cho mỗi foot vuông def price_per_sqft(price, sqft): return price / sqft if sqft != 0 else 0 # Áp dụng hàm tùy chỉnh để tạo một cột mới df[ 'PricePerSqFt' ] = df.apply(lambda row : price_per_sqft( row [ 'Price' ], row [ 'SquareFootage' ]), axis = 1 ) print(df)
Sau đây là kết quả của đoạn mã trên:
PropertyID Vị trí Phòng ngủ ... SquareFootage ListingNgày GiáPerSqFt 0 101 New York 3 ... 1800 2023 - 05 - 15 416 . 666667 1 102 San Francisco 2 ... 1400 2023 - 06 - 01 607 . 142857 2 103 Los Angeles 4 ... 2500 2023 - 04 - 10 NaN 3 104 Chicago 3 ... 1700 NaN 382 . 352941 4 105 Miami 5 ... 3500 2023 - 03 - 22 342 . 857143 5 106 Houston 4 ... 2000 2023 - 07 - 01 225 . 000000
Một ví dụ khác có thể là chuyển đổi tên địa điểm sang chữ in hoa;
# Áp dụng phép biến đổi để viết hoa tất cả tên vị trí df [ 'Location' ] = df [ 'Location' ].apply(lambda x: x.upper()) print ( df )
Nó trông như thế này:
PropertyID Vị trí Phòng ngủ ... Giá Diện tích Ngày niêm yết 0 101 NEW YORK 3 ... 750000 . 0 1800 2023 - 05 - 15 1 102 SAN FRANCISCO 2 ... 850000 . 0 1400 2023 - 06 - 01 2 103 LOS ANGELES 4 ... NaN 2500 2023 - 04 - 10 3 104 CHICAGO 3 ... 650000 . 0 1700 NaN 4 105 MIAMI 5 ... 1200000 . 0 3500 2023 - 03 - 22 5 106 HOUSTON 4 ... 450000 . 0 2000 2023 - 07 - 01
Trong hướng dẫn này, chúng tôi đã khám phá 10 hàm Pandas thiết yếu để phân tích dữ liệu, từ việc tải và kiểm tra dữ liệu bằng
Và đọc_csv()
để làm sạch và chuyển đổi nó bằng các phương pháp như thông tin()
, không rỗng()
, Và điền()
. Các chức năng này tạo thành nền tảng của bất kỳ quy trình phân tích dữ liệu nào, cho phép bạn dọn dẹp, thao tác và tóm tắt các tập dữ liệu một cách hiệu quả. Việc thành thạo chúng sẽ giúp bạn chuẩn bị để xử lý các thách thức dữ liệu trong thế giới thực một cách tự tin. Hãy bắt đầu thực hành ngay hôm nay và khám phá cách các công cụ này có thể đơn giản hóa các tác vụ phân tích của bạn! áp dụng()