Chuyển đến nội dung chính

Hướng dẫn Python pandas: Cẩm nang tối ưu cho người mới bắt đầu

Bạn đã sẵn sàng bắt đầu hành trình với pandas? Dưới đây là hướng dẫn từng bước để bắt đầu.
Đã cập nhật 5 thg 6, 2026  · 15 phút đọc

pandas có lẽ là gói Python quan trọng nhất cho phân tích dữ liệu. Với hơn 100 triệu lượt tải mỗi tháng, đây là gói tiêu chuẩn de facto cho thao tác dữ liệu và phân tích khám phá. Khả năng đọc và ghi từ một danh sách định dạng phong phú khiến nó trở thành công cụ linh hoạt cho người làm khoa học dữ liệu. Các hàm thao tác dữ liệu của nó giúp việc tổng hợp, phân tích và làm sạch dữ liệu trở nên rất dễ tiếp cận và thực tiễn. 

Trong bài viết về cách học pandas, chúng tôi đã bàn về lộ trình bạn có thể đi để làm chủ gói này. Hướng dẫn thân thiện với người mới bắt đầu này sẽ bao quát các khái niệm cơ bản và minh họa những chức năng khác nhau của pandas. Bạn cũng có thể xem khóa học Nền tảng pandas để biết thêm chi tiết. 

Bài viết này dành cho người mới với kiến thức Python cơ bản và chưa có kinh nghiệm với pandas, giúp bạn bắt đầu đúng cách.

pandas là gì?

pandas là một gói Python dùng để thao tác dữ liệu dạng bảng: dữ liệu theo hàng và cột, còn gọi là DataFrame. Trực quan, bạn có thể hình dung DataFrame giống như một trang tính Excel. 

Chức năng của pandas bao gồm các phép biến đổi dữ liệu như sắp xếp hàng và lấy tập con, tính các thống kê tóm tắt như trung bình, biến đổi hình dạng DataFrame và nối các DataFrame với nhau. pandas hoạt động tốt với các gói khoa học dữ liệu Python phổ biến khác, thường gọi là hệ sinh thái PyData, bao gồm

pandas dùng để làm gì?

pandas được sử dụng xuyên suốt quy trình phân tích dữ liệu. Với pandas, bạn có thể:

  • Nhập tập dữ liệu từ cơ sở dữ liệu, bảng tính, tệp CSV và nhiều hơn nữa.
  • Làm sạch dữ liệu, ví dụ xử lý giá trị thiếu.
  • Chuẩn hóa (tidy) dữ liệu bằng cách biến đổi cấu trúc về định dạng phù hợp để phân tích.
  • Tổng hợp dữ liệu bằng cách tính các thống kê tóm tắt như trung bình theo cột, tương quan giữa các cột, v.v.
  • Trực quan hóa tập dữ liệu và khám phá insight.

pandas cũng có chức năng cho phân tích chuỗi thời gian và phân tích dữ liệu văn bản.

Lợi ích chính của gói pandas

Không nghi ngờ gì, pandas là một công cụ thao tác dữ liệu mạnh mẽ đi kèm nhiều lợi ích, bao gồm:

  • Sinh ra cho Python: Python là ngôn ngữ phổ biến nhất thế giới cho học máy và khoa học dữ liệu.
  • Ít rườm rà trên mỗi phép toán: Mã viết bằng pandas ngắn gọn hơn, cần ít dòng hơn để tạo ra kết quả mong muốn. 
  • Cách nhìn dữ liệu trực quan: pandas cung cấp cách biểu diễn dữ liệu rất trực quan, giúp việc hiểu và phân tích dữ liệu dễ dàng hơn.
  • Tập tính năng phong phú: Hỗ trợ bộ thao tác rộng từ phân tích khám phá, xử lý giá trị thiếu, tính thống kê, trực quan hóa dữ liệu đơn biến và song biến, và nhiều hơn nữa.
  • Xử lý dữ liệu lớn: pandas xử lý các tập dữ liệu lớn một cách dễ dàng. Nó mang lại tốc độ và hiệu quả khi làm việc với tập dữ liệu lên đến hàng triệu bản ghi và hàng trăm cột, tùy vào máy.

Cài đặt pandas như thế nào?

Trước khi đi vào chức năng, hãy cài đặt pandas trước. Bạn có thể bỏ qua bước này bằng cách đăng ký tài khoản DataCamp miễn phí và sử dụng DataLab, một IDE trên nền tảng đám mây có sẵn pandas (cùng các gói khoa học dữ liệu Python hàng đầu) được cài đặt sẵn.

Chạy và chỉnh sửa mã từ hướng dẫn trực tuyến này.

Chạy mã

Cài đặt pandas

Cài đặt pandas rất đơn giản; chỉ cần dùng lệnh pip install trong terminal của bạn. 

pip install pandas

Ngoài ra, bạn có thể cài đặt qua conda:

conda install pandas

Sau khi cài pandas, nên kiểm tra phiên bản đã cài để đảm bảo mọi thứ hoạt động đúng:

import pandas as pd
print(pd.__version__)  # Prints the pandas version

Điều này xác nhận pandas được cài đặt đúng và giúp bạn kiểm tra khả năng tương thích với các gói khác.

Nhập dữ liệu trong pandas

Để bắt đầu làm việc với pandas, hãy nhập gói Python pandas như dưới đây. Khi import, bí danh phổ biến nhất cho pandas là pd.

import pandas as pd

Nhập tệp CSV

Dùng read_csv() với đường dẫn đến tệp CSV để đọc tệp giá trị phân tách bằng dấu phẩy (xem hướng dẫn nhập dữ liệu với read_csv() để biết chi tiết).

df = pd.read_csv("diabetes.csv")

Thao tác đọc này tải tệp diabetes.csv để tạo một đối tượng DataFrame của pandas là df. Xuyên suốt hướng dẫn này, bạn sẽ thấy cách thao tác những đối tượng DataFrame như vậy. 

Nhập tệp văn bản

Đọc tệp văn bản tương tự như tệp CSV. Khác biệt là bạn cần chỉ định ký tự phân tách bằng tham số sep như dưới đây. Tham số separator ám chỉ ký hiệu dùng để phân tách các trường trong DataFrame. Dấu phẩy (sep = ","), khoảng trắng (sep = "\s"), tab (sep = "\t") và dấu hai chấm (sep = ":") là những separator thường dùng. Ở đây \s đại diện cho một ký tự khoảng trắng đơn.

df = pd.read_csv("diabetes.txt", sep="\s")

Nhập tệp Excel (một sheet)

Đọc tệp Excel (cả XLS và XLSX) rất dễ với hàm read_excel(), dùng đường dẫn tệp làm đầu vào.

df = pd.read_excel('diabetes.xlsx')

Bạn cũng có thể chỉ định các tham số khác, như header để xác định hàng nào là tiêu đề của DataFrame. Mặc định là 0, nghĩa là hàng đầu tiên là tiêu đề hoặc tên cột. Bạn cũng có thể chỉ định tên cột dưới dạng danh sách ở tham số names. Tham số index_col (mặc định None) dùng nếu tệp có chứa chỉ mục hàng.

Lưu ý: Trong một DataFrame hoặc Series của pandas, index là định danh trỏ tới vị trí của một hàng hoặc cột. Nói ngắn gọn, index gán nhãn cho hàng hoặc cột của DataFrame và cho phép bạn truy cập một hàng hoặc cột cụ thể bằng index của nó (bạn sẽ thấy ở phần sau). Chỉ mục hàng của DataFrame có thể là một dải (vd. 0 đến 303), chuỗi thời gian (ngày hoặc timestamp), định danh duy nhất (vd. employee_ID trong bảng employees), hoặc kiểu dữ liệu khác. Với cột, thường là chuỗi (biểu thị tên cột).

Nhập tệp Excel (nhiều sheet)

Đọc tệp Excel có nhiều sheet cũng tương tự. Bạn chỉ cần thêm tham số sheet_name, có thể truyền tên sheet dạng chuỗi hoặc vị trí sheet dạng số (lưu ý Python dùng đánh chỉ mục từ 0, sheet đầu tiên truy cập bằng sheet_name = 0)

# Trích sheet thứ hai vì Python dùng đánh chỉ mục từ 0
df = pd.read_excel('diabetes_multi.xlsx', sheet_name=1)

Nhập tệp JSON

Tương tự hàm read_csv(), bạn có thể dùng read_json() cho tệp JSON với tên tệp JSON làm tham số (để biết thêm, đọc hướng dẫn này về nhập dữ liệu JSON và HTML vào pandas). Đoạn mã dưới đây đọc một tệp JSON từ đĩa và tạo đối tượng DataFrame df.

df = pd.read_json("diabetes.json")

Nếu muốn tìm hiểu thêm về nhập dữ liệu với pandas, hãy xem cheat sheet này về nhập các loại tệp khác nhau với Python. 

Nhập dữ liệu từ cơ sở dữ liệu SQL

Để tải dữ liệu từ cơ sở dữ liệu quan hệ, dùng pd.read_sql() cùng với một kết nối cơ sở dữ liệu.

import sqlite3

# Establish a connection to an SQLite database
conn = sqlite3.connect("my_database.db")

# Read data from a table
df = pd.read_sql("SELECT * FROM my_table", conn)

Với tập dữ liệu lớn, cân nhắc dùng SQLAlchemy để tối ưu truy vấn.

Nhập dữ liệu từ API (định dạng JSON)

Nếu dữ liệu của bạn đến từ web API, pandas có thể đọc trực tiếp bằng pd.read_json():

df = pd.read_json("https://api.example.com/data.json")

Nếu phản hồi API được phân trang hoặc ở dạng JSON lồng nhau, bạn có thể cần xử lý thêm bằng json_normalize() từ pandas.io.json.

Xuất dữ liệu trong pandas

Cũng như có thể nhập dữ liệu từ nhiều loại tệp, pandas cho phép bạn xuất dữ liệu sang nhiều định dạng. Điều này đặc biệt hữu ích khi dữ liệu đã được biến đổi bằng pandas và cần lưu cục bộ trên máy. Dưới đây là cách xuất DataFrame của pandas sang các định dạng khác nhau.

Xuất DataFrame ra tệp CSV

Một DataFrame của pandas (ở đây là df) được lưu thành tệp CSV bằng phương thức .to_csv(). Các tham số gồm tên tệp kèm đường dẫn và index – trong đó index = True nghĩa là ghi cả chỉ mục của DataFrame.

df.to_csv("diabetes_out.csv", index=False)

Xuất DataFrame ra tệp JSON

Xuất đối tượng DataFrame ra tệp JSON bằng cách gọi phương thức .to_json().

df.to_json("diabetes_out.json")

Lưu ý: Tệp JSON lưu một đối tượng dạng bảng như DataFrame dưới dạng cặp khóa-giá trị. Do đó bạn sẽ thấy tiêu đề cột lặp lại trong tệp JSON.

Xuất DataFrame ra tệp văn bản

Tương tự việc ghi DataFrame ra tệp CSV, bạn có thể gọi .to_csv(). Khác biệt là định dạng tệp đầu ra là .txt, và bạn cần chỉ định ký tự phân tách bằng tham số sep.

df.to_csv('diabetes_out.txt', header=df.columns, index=None, sep=' ')

Xuất DataFrame ra tệp Excel

Gọi .to_excel() từ đối tượng DataFrame để lưu thành tệp “.xls” hoặc “.xlsx”.

df.to_excel("diabetes_out.xlsx", index=False)

Xem và hiểu DataFrame bằng pandas 

Sau khi đọc dữ liệu dạng bảng thành DataFrame, bạn sẽ cần lướt qua dữ liệu. Bạn có thể xem một mẫu nhỏ hoặc xem tóm tắt dữ liệu dưới dạng thống kê mô tả.

Cách xem dữ liệu bằng .head().tail()

Bạn có thể xem vài hàng đầu hoặc vài hàng cuối của DataFrame bằng các phương thức .head() hoặc .tail(). Bạn có thể chỉ định số hàng qua tham số n (mặc định là 5).

df.head()

First five rows of the DataFrame (df) using .head()

Năm hàng đầu tiên của DataFrame 

df.tail(n = 10)

last 10 rows of a Dataframe with df.head()

10 hàng đầu tiên của DataFrame 

Hiểu dữ liệu bằng .describe()

Phương thức .describe() in ra các thống kê tóm tắt của mọi cột số, như số lượng, trung bình, độ lệch chuẩn, khoảng và các tứ phân vị của các cột số.

df.describe()

Get summary statistics with .describe()

Lấy thống kê tóm tắt với .describe()

Nó cho cái nhìn nhanh về độ lớn, độ lệch và khoảng của dữ liệu số.

Bạn cũng có thể điều chỉnh các tứ phân vị bằng tham số percentiles. Ở đây, ví dụ, chúng ta xem các bách phân vị 30%, 50% và 70% của các cột số trong DataFrame df.

df.describe(percentiles=[0.3, 0.5, 0.7])

Get summary statistics with specific percentiles  pandas

Lấy thống kê tóm tắt với các bách phân vị cụ thể 

Bạn cũng có thể chỉ lấy các kiểu dữ liệu cụ thể trong đầu ra tóm tắt bằng tham số include. Ở đây, ví dụ, chúng ta chỉ tóm tắt các cột có kiểu dữ liệu integer

df.describe(include=[int])

summary statistics of integer columns only pandas

Lấy thống kê tóm tắt chỉ cho các cột số nguyên 

Tương tự, bạn có thể loại trừ một số kiểu dữ liệu bằng tham số exclude.

df.describe(exclude=[int])

get summary statistics of non-integer columns pandas

Lấy thống kê tóm tắt chỉ cho các cột không phải số nguyên 


Thường thì người thực hành thấy dễ đọc hơn khi chuyển vị các thống kê này bằng thuộc tính .T.

df.describe().T

Transpose summary statistics pandas

Chuyển vị thống kê tóm tắt với .T


Để biết thêm về mô tả DataFrame, hãy xem cheat sheet sau.

Học các nền tảng của pandas

Python dành cho người dùng bảng tính

BeginnerSkill Level
4 giờ
29.1K learners
Tận dụng kiến thức về các hàm và kỹ thuật bảng tính quen thuộc để khám phá Python!
See DetailsRight Arrow

Hiểu dữ liệu bằng .info()

Phương thức .info() là cách nhanh để xem kiểu dữ liệu, giá trị thiếu và kích thước dữ liệu của một DataFrame. Ở đây, chúng ta đặt tham số show_countsTrue, cho biết số lượng giá trị không thiếu ở mỗi cột. Chúng ta cũng đặt memory_usageTrue, hiển thị tổng mức sử dụng bộ nhớ của các phần tử DataFrame. Khi verboseTrue, nó in toàn bộ tóm tắt từ .info()

df.info(show_counts=True, memory_usage=True, verbose=True)

image26.png

Hiểu dữ liệu bằng .shape

Số hàng và cột của một DataFrame có thể được xác định bằng thuộc tính .shape của DataFrame. Nó trả về một bộ giá trị (hàng, cột) và có thể đánh chỉ mục để chỉ lấy số hàng hoặc số cột.

df.shape # Get the number of rows and columns
df.shape[0] # Get the number of rows only
df.shape[1] # Get the number of columns only
(768,9)
768
9

Lấy tất cả cột và tên cột

Gọi thuộc tính .columns của một đối tượng DataFrame trả về tên cột dưới dạng đối tượng Index. Nhắc lại, index trong pandas là địa chỉ/nhãn của hàng hoặc cột.

df.columns

Output of columns

Có thể chuyển nó thành danh sách bằng hàm list().

list(df.columns)

column names as a list pandas

Kiểm tra giá trị thiếu trong pandas với .isnull()

DataFrame mẫu không có giá trị thiếu. Hãy thêm một vài giá trị thiếu để thú vị hơn. Phương thức .copy() tạo một bản sao của DataFrame gốc. Làm vậy để đảm bảo mọi thay đổi trên bản sao không ảnh hưởng đến DataFrame gốc. Dùng .loc (sẽ bàn sau), bạn có thể đặt các hàng từ hai đến năm của cột Pregnancies thành giá trị NaN, biểu thị giá trị thiếu.

df2 = df.copy()
df2.loc[2:5,'Pregnancies'] = None
df2.head(7)

Rows 2 to 5 are missing pandas

Như bạn thấy, giờ hàng 2 đến 5 là NaN

Bạn có thể kiểm tra từng phần tử trong DataFrame có bị thiếu không bằng phương thức .isnull().

df2.isnull().head(7)

Vì thường hữu ích hơn khi biết có bao nhiêu dữ liệu thiếu, bạn có thể kết hợp .isnull() với .sum() để đếm số null ở mỗi cột.

df2.isnull().sum()
Pregnancies                 4
Glucose                     0
BloodPressure               0
SkinThickness               0
Insulin                     0
BMI                         0
DiabetesPedigreeFunction    0
Age                         0
Outcome                     0
dtype: int64

Bạn cũng có thể cộng hai lần để lấy tổng số null trong toàn bộ DataFrame.

df2.isnull().sum().sum()
4

Sắp xếp, cắt lát và trích xuất dữ liệu trong pandas

Gói pandas cung cấp nhiều cách để sắp xếp, lấy tập con, lọc và tách dữ liệu trong DataFrame. Ở đây, chúng ta sẽ xem những cách phổ biến nhất.

Sắp xếp dữ liệu

Để sắp xếp DataFrame theo một cột cụ thể:

df.sort_values(by="Age", ascending=False, inplace=True)  # Sort by Age in descending order

Bạn có thể sắp xếp theo nhiều cột:

df.sort_values(by=["Age", "Glucose"], ascending=[False, True], inplace=True)

Đặt lại chỉ mục

Nếu bạn lọc hoặc sắp xếp DataFrame, chỉ mục có thể bị lệch. Dùng .reset_index() để khắc phục:

df.reset_index(drop=True, inplace=True)  # Resets index and removes old index column

Lọc dữ liệu bằng điều kiện

Để trích dữ liệu dựa trên một điều kiện:

df[df["BloodPressure"] > 100]  # Selects rows where BloodPressure is greater than 100

Tách một cột bằng [ ] 

Bạn có thể tách một cột bằng ngoặc vuông [ ] với tên cột bên trong. Kết quả là một đối tượng Series của pandas. Series là mảng một chiều chứa dữ liệu bất kỳ kiểu nào, gồm integer, float, string, boolean, đối tượng Python, v.v. DataFrame gồm nhiều Series đóng vai trò là các cột.

df['Outcome']

Isolating one column in pandas

Tách một cột trong pandas

Tách hai hoặc nhiều cột bằng [[ ]] 

Bạn cũng có thể đưa vào danh sách tên cột bên trong ngoặc vuông để lấy nhiều cột. Ở đây, ngoặc vuông được dùng theo hai cách. Chúng ta dùng ngoặc vuông ngoài để chỉ tập con của DataFrame, và ngoặc vuông trong để tạo danh sách.

df[['Pregnancies', 'Outcome']]

image15.png

Tách hai cột trong pandas

Tách một hàng bằng [ ] 

Có thể lấy một hàng bằng cách truyền vào một Series boolean với một giá trị True. Ví dụ dưới đây trả về hàng thứ hai với index = 1. Ở đây, .index trả về nhãn hàng của DataFrame, và phép so sánh biến nó thành mảng một chiều Boolean.

df[df.index==1]

Isolating one row in pandas

Tách một hàng trong pandas

Tách hai hoặc nhiều hàng bằng [ ] 

Tương tự, có thể trả về hai hoặc nhiều hàng dùng phương thức .isin() thay vì toán tử ==.

df[df.index.isin(range(2,10))]

Isolating specific rows in pandas

Tách các hàng cụ thể trong pandas

Dùng .loc[] và .iloc[] để lấy hàng

Bạn có thể lấy các hàng cụ thể theo nhãn hoặc theo điều kiện bằng .loc[].iloc[] ("location" và "integer location"). .loc[] dùng nhãn để trỏ tới một hàng, cột hoặc ô, trong khi .iloc[] dùng vị trí số. Để hiểu khác biệt, hãy sửa index của df2 đã tạo trước đó.

df2.index = range(1,769)

Ví dụ dưới đây trả về một Series của pandas thay vì DataFrame. Số 1 đại diện cho index hàng (nhãn), trong khi 1 trong .iloc[] là vị trí hàng (hàng đầu tiên).

df2.loc[1]
Pregnancies                   6.000
Glucose                     148.000
BloodPressure                72.000
SkinThickness                35.000
Insulin                       0.000
BMI                          33.600
DiabetesPedigreeFunction      0.627
Age                          50.000
Outcome                       1.000
Name: 1, dtype: float64
df2.iloc[1]
Pregnancies                  1.000
Glucose                     85.000
BloodPressure               66.000
SkinThickness               29.000
Insulin                      0.000
BMI                         26.600
DiabetesPedigreeFunction     0.351
Age                         31.000
Outcome                      0.000
Name: 2, dtype: float64

Bạn cũng có thể lấy nhiều hàng bằng cách cung cấp một khoảng trong ngoặc vuông.

df2.loc[100:110]

Isolating rows with loc

Tách hàng trong pandas với .loc[]

df2.iloc[100:110]

Isolating rows in pandas with .loc[]

Tách hàng trong pandas với .iloc[]

Bạn cũng có thể lấy tập con với .loc[].iloc[] bằng cách dùng danh sách thay vì khoảng.

df2.loc[[100, 200, 300]]

Isolating rows using a list in pandas with .loc[]

Tách hàng bằng danh sách trong pandas với .loc[]

df2.iloc[[100, 200, 300]]

image25.png

Tách hàng bằng danh sách trong pandas với .iloc[]

Bạn cũng có thể chọn các cột cụ thể cùng với hàng. Đây là điểm khác nhau giữa .iloc[].loc[].iloc[] yêu cầu vị trí cột chứ không phải nhãn cột.

df2.loc[100:110, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating columns using a list in pandas with .loc[]

Tách cột trong pandas với .loc[]

df2.iloc[100:110, :3]

Isolating columns using in pandas with .iloc[]

Tách cột với .iloc[]

Để thao tác nhanh hơn, bạn có thể truyền vào chỉ mục bắt đầu của một hàng dưới dạng khoảng.

df2.loc[760:, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating columns using in pandas with .loc[]

Tách cột và hàng trong pandas với .loc[]

df2.iloc[760:, :3]

image4.png
Tách cột và hàng trong pandas với .iloc[]

Bạn có thể cập nhật/sửa đổi một số giá trị bằng toán tử gán =

df2.loc[df['Age']==81, ['Age']] = 80

Cắt lát có điều kiện (phù hợp điều kiện nhất định)

pandas cho phép bạn lọc dữ liệu bằng các điều kiện trên giá trị hàng/cột. Ví dụ, đoạn mã dưới chọn hàng có Huyết áp (Blood Pressure) đúng bằng 122. Ở đây, chúng ta tách hàng bằng ngoặc [ ] như các phần trước. Tuy nhiên, thay vì đưa vào chỉ mục hàng hoặc tên cột, chúng ta đưa vào một điều kiện nơi cột BloodPressure bằng 122. Ta biểu diễn điều kiện này bằng df.BloodPressure == 122.

df[df.BloodPressure == 122]

Isolating rows based on a condition in pandas

Tách hàng dựa trên điều kiện trong pandas 

Ví dụ dưới đây lấy tất cả hàng nơi Outcome là 1. Ở đây df.Outcome chọn cột đó, df.Outcome == 1 trả về một Series Boolean xác định Outcome nào bằng 1, sau đó [] lấy tập con của df nơi Series Boolean đó là True.

df[df.Outcome == 1]

Isolating rows based on a condition in pandas

Tách hàng dựa trên điều kiện trong pandas 

Bạn có thể dùng toán tử > để so sánh. Đoạn mã dưới đây lấy Pregnancies, GlucoseBloodPressure cho tất cả bản ghi có BloodPressure lớn hơn 100.

df.loc[df['BloodPressure'] > 100, ['Pregnancies', 'Glucose', 'BloodPressure']]

Isolating rows and columns based on a condition in pandas

Tách hàng và cột dựa trên điều kiện trong pandas 

Làm sạch dữ liệu bằng pandas 

Làm sạch dữ liệu là một trong những tác vụ phổ biến nhất trong khoa học dữ liệu. pandas cho phép bạn tiền xử lý dữ liệu cho mọi mục đích, bao gồm nhưng không giới hạn ở huấn luyện mô hình học máy và học sâu. Hãy dùng DataFrame df2 từ trước, có bốn giá trị thiếu, để minh họa vài trường hợp làm sạch dữ liệu. Nhắc lại, đây là cách xem có bao nhiêu giá trị thiếu trong DataFrame.

df2.isnull().sum()
Pregnancies                 4
Glucose                     0
BloodPressure               0
SkinThickness               0
Insulin                     0
BMI                         0
DiabetesPedigreeFunction    0
Age                         0
Outcome                     0
dtype: int64

Xử lý dữ liệu thiếu cách #1: Loại bỏ giá trị thiếu

Một cách xử lý dữ liệu thiếu là loại bỏ chúng. Điều này hữu ích khi bạn có nhiều dữ liệu và việc mất đi một phần nhỏ không ảnh hưởng đến phân tích phía sau. Bạn có thể dùng phương thức .dropna() như dưới đây. Ở đây, chúng ta lưu kết quả từ .dropna() vào DataFrame df3.

df3 = df2.copy()
df3 = df3.dropna()
df3.shape
(764, 9) # this is 4 rows less than df2

Tham số axis cho phép bạn chỉ định đang loại bỏ hàng hay cột có giá trị thiếu. Mặc định axis loại bỏ các hàng chứa NaN. Dùng axis = 1 để loại bỏ các cột có một hoặc nhiều giá trị NaN. Cũng lưu ý cách chúng ta dùng tham số inplace=True giúp bạn không cần lưu đầu ra của .dropna() sang một DataFrame mới.  

df3 = df2.copy()
df3.dropna(inplace=True, axis=1)
df3.head()

Dropping missing data pandas

Loại bỏ dữ liệu thiếu trong pandas

Bạn cũng có thể loại bỏ cả hàng và cột có giá trị thiếu bằng cách đặt tham số how thành 'all'

df3 = df2.copy()
df3.dropna(inplace=True, how='all')

Xử lý dữ liệu thiếu cách #2: Thay thế giá trị thiếu

Thay vì loại bỏ, thay thế giá trị thiếu bằng một thống kê tóm tắt hoặc một giá trị cụ thể (tùy trường hợp sử dụng) có thể là cách tốt hơn. Ví dụ, nếu có một hàng thiếu ở cột nhiệt độ mô tả nhiệt độ trong các ngày trong tuần, thay giá trị thiếu đó bằng nhiệt độ trung bình của tuần đó có thể hiệu quả hơn là loại bỏ hoàn toàn. Bạn có thể thay dữ liệu thiếu bằng trung bình theo hàng hoặc theo cột như mã dưới đây.

df3 = df2.copy()
# Get the mean of Pregnancies
mean_value = df3['Pregnancies'].mean()
# Fill missing values using .fillna()
df3 = df3.fillna(mean_value)

Xử lý dữ liệu trùng lặp

Hãy thêm một số bản sao trùng lặp vào dữ liệu gốc để học cách loại bỏ trùng lặp trong DataFrame. Ở đây, chúng ta dùng phương thức .concat() để nối các hàng của DataFrame df2 với chính nó, thêm bản sao hoàn hảo của mọi hàng trong df2

df3 = pd.concat([df2, df2])
df3.shape
(1536, 9)

Bạn có thể loại bỏ tất cả các hàng trùng lặp (mặc định) khỏi DataFrame bằng phương thức .drop_duplicates().

df3 = df3.drop_duplicates()
df3.shape
(768, 9)

Đổi tên cột

Một tác vụ làm sạch dữ liệu phổ biến là đổi tên cột. Với phương thức .rename(), bạn có thể dùng tham số columns để đổi tên các cột cụ thể. Mã dưới đây là từ điển ánh xạ tên cũ và tên mới.

df3.rename(columns = {'DiabetesPedigreeFunction':'DPF'}, inplace = True)
df3.head()

Renaming columns in pandas

Đổi tên cột trong pandas

Bạn cũng có thể gán trực tiếp tên cột dưới dạng danh sách cho DataFrame.

df3.columns = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DPF', 'Age', 'Outcome', 'STF']
df3.head()

Renaming columns in pandas

Đổi tên cột trong pandas

Để biết thêm về làm sạch dữ liệu và để có quy trình làm sạch dễ dàng, nhất quán hơn, hãy xem checklist sau, cung cấp một tập hợp toàn diện các tác vụ làm sạch dữ liệu phổ biến. 

Phân tích dữ liệu trong pandas

Giá trị cốt lõi của pandas nằm ở chức năng phân tích dữ liệu nhanh. Phần này sẽ tập trung vào một số kỹ thuật phân tích bạn có thể dùng trong pandas.

Các toán tử tóm tắt (mean, mode, median)

Như bạn đã thấy, bạn có thể lấy trung bình của mỗi cột bằng phương thức .mean().

df.mean()

Printing the mean of columns in pandas

In trung bình của các cột trong pandas

Giá trị mode có thể được tính tương tự bằng phương thức .mode()

df.mode()

image22.png

In mode của các cột trong pandas

Tương tự, median của mỗi cột được tính bằng phương thức .median()

df.median()

Printing the median of columns in pandas
In median của các cột trong pandas

Tạo cột mới dựa trên các cột hiện có 

pandas cho phép tính toán nhanh và hiệu quả bằng cách kết hợp hai hoặc nhiều cột như các biến vô hướng. Mã dưới đây chia mỗi giá trị trong cột Glucose cho giá trị tương ứng trong cột Insulin để tính cột mới Glucose_Insulin_Ratio.

df2['Glucose_Insulin_Ratio'] = df2['Glucose']/df2['Insulin']
df2.head()

Create a new column from existing columns in pandas

Tạo cột mới từ các cột hiện có trong pandas

Đếm bằng .value_counts()

Thường bạn sẽ làm việc với giá trị phân loại và muốn đếm số quan sát mỗi hạng mục trong một cột. Các giá trị hạng mục có thể đếm bằng phương thức .value_counts(). Ở đây, ví dụ, chúng ta đếm số quan sát nơi Outcome là mắc tiểu đường (1) và số quan sát nơi Outcome không mắc (0).

df['Outcome'].value_counts()

Using .value_counts() in pandas

Dùng .value_counts() trong pandas

Thêm tham số normalize sẽ trả về tỷ lệ thay vì số đếm tuyệt đối.

df['Outcome'].value_counts(normalize=True)

Using .value_counts() in pandas with normalization

Dùng .value_counts() trong pandas với chuẩn hóa


Tắt sắp xếp tự động của kết quả bằng tham số sort (mặc định True). Mặc định sắp xếp dựa trên số đếm giảm dần.

df['Outcome'].value_counts(sort=False)

Using .value_counts() in pandas with normalization

Dùng .value_counts() trong pandas với sắp xếp

Bạn cũng có thể áp dụng .value_counts() cho đối tượng DataFrame và các cột cụ thể trong đó thay vì chỉ một cột. Ở đây, ví dụ, chúng ta áp dụng value_counts() trên df với tham số subset, nhận vào danh sách các cột. 

df.value_counts(subset=['Pregnancies', 'Outcome'])

Using .value_counts() in pandas while subsetting columns

Dùng .value_counts() trong pandas khi lấy tập con cột

Tổng hợp dữ liệu với .groupby() trong pandas

pandas cho phép bạn tổng hợp giá trị bằng cách nhóm theo các giá trị cột cụ thể. Bạn có thể làm điều đó bằng cách kết hợp phương thức .groupby() với một hàm tóm tắt tùy chọn. Đoạn mã dưới hiển thị trung bình của mỗi cột số theo nhóm Outcome.

df.groupby('Outcome').mean()

Aggregating data by one column in pandas

Tổng hợp dữ liệu theo một cột trong pandas

.groupby() cho phép nhóm theo nhiều hơn một cột bằng cách truyền vào danh sách tên cột, như dưới đây.

df.groupby(['Pregnancies', 'Outcome']).mean()

Aggregating data by two columns in pandas

Tổng hợp dữ liệu theo hai cột trong pandas

Bất kỳ hàm tóm tắt nào cũng có thể dùng cùng .groupby(), bao gồm .min(), .max(), .mean(), .median(), .sum(), .mode(), và nhiều hơn nữa.

Bảng pivot 

pandas cũng cho phép bạn tính các thống kê tóm tắt dưới dạng bảng pivot. Điều này giúp rút ra kết luận dựa trên tổ hợp biến. Đoạn mã dưới chọn hàng là các giá trị duy nhất của Pregnancies, cột là các giá trị duy nhất của Outcome, và ô chứa giá trị trung bình của BMI trong nhóm tương ứng.

Ví dụ, với Pregnancies = 5Outcome = 0, BMI trung bình là 31.1.

pd.pivot_table(df, values="BMI", index='Pregnancies', 
               columns=['Outcome'], aggfunc='mean')

Aggregating data by pivoting with pandas

Tổng hợp dữ liệu bằng pivot với pandas

Trực quan hóa dữ liệu trong pandas

pandas cung cấp các wrapper tiện lợi cho các hàm vẽ của Matplotlib để việc trực quan hóa DataFrame trở nên dễ dàng. Dưới đây, bạn sẽ thấy cách thực hiện các trực quan hóa dữ liệu phổ biến bằng pandas.

Biểu đồ đường trong pandas

pandas cho phép bạn vẽ mối quan hệ giữa các biến bằng biểu đồ đường. Dưới đây là biểu đồ đường của BMI và Glucose theo chỉ mục hàng.

df[['BMI', 'Glucose']].plot.line()

Basic lineplot with pandas

Biểu đồ đường cơ bản với pandas

Bạn có thể chọn màu bằng tham số color.

df[['BMI', 'Glucose']].plot.line(figsize=(20, 10), 
                                 color={"BMI": "red", "Glucose": "blue"})

Basic line plot with pandas, with custom colors

Biểu đồ đường cơ bản với pandas, với màu tùy chỉnh

Tất cả các cột của df cũng có thể được vẽ trên các thang và trục khác nhau bằng tham số subplots.

df.plot.line(subplots=True)

Subplots for line plots with pandas

Biểu đồ con (subplots) cho biểu đồ đường với pandas

Biểu đồ cột trong pandas

Với các cột rời rạc, bạn có thể dùng biểu đồ cột trên số lượng hạng mục để trực quan hóa phân phối. Biến Outcome với giá trị nhị phân được minh họa dưới đây.

df['Outcome'].value_counts().plot.bar()

Barplots in pandas

Biểu đồ cột trong pandas

Biểu đồ hộp trong pandas

Phân phối theo tứ phân vị của các biến liên tục có thể được trực quan hóa bằng boxplot. Đoạn mã dưới giúp bạn tạo boxplot với pandas.

df.boxplot(column=['BMI'], by='Outcome')

Boxplots in pandas
Biểu đồ hộp trong pandas

Tìm hiểu thêm về pandas

Hướng dẫn trên chỉ mới chạm vào bề mặt những gì có thể làm với pandas. Dù là phân tích dữ liệu, trực quan hóa, lọc hay tổng hợp, pandas cung cấp bộ tính năng vô cùng phong phú giúp bạn tăng tốc mọi quy trình dữ liệu. Hơn nữa, bằng cách kết hợp pandas với các gói khoa học dữ liệu khác, bạn có thể tạo dashboard tương tác, xây dựng mô hình dự đoán bằng học máy, tự động hóa quy trình dữ liệu và nhiều hơn nữa. Hãy xem các tài nguyên dưới đây để tăng tốc hành trình học pandas của bạn:

Câu hỏi thường gặp về pandas

pandas trong Python là gì?

pandas là một thư viện thao tác dữ liệu mạnh mẽ trong Python. Nó cung cấp các cấu trúc dữ liệu và hàm cần thiết để thao tác dữ liệu có cấu trúc, bao gồm các chức năng để thao tác và phân tích DataFrame. Đây là công cụ không thể thiếu trong thế giới phân tích và khoa học dữ liệu vì cho phép làm sạch, biến đổi và phân tích dữ liệu hiệu quả.

Tại sao tôi nên học pandas?

Nếu bạn làm việc với dữ liệu trong Python, pandas gần như là thứ bắt buộc phải học. Nó đơn giản hóa quá trình xử lý và phân tích dữ liệu, để bạn tập trung vào việc rút ra insight và tạo giá trị. Dù bạn xử lý tập nhỏ hay dữ liệu quy mô lớn, pandas sẽ giúp công việc nhẹ nhàng hơn với tốc độ, tính linh hoạt và các cấu trúc dữ liệu thân thiện.

Làm sao để cài pandas?

Để cài pandas, bạn cần Python và pip (trình quản lý gói của Python) trên hệ thống. Sau đó có thể cài pandas bằng lệnh: pip install pandas. Nếu bạn dùng Jupyter notebook trong môi trường như Anaconda, pandas đã được cài sẵn.

Các cấu trúc dữ liệu cơ bản trong pandas là gì?

Hai cấu trúc dữ liệu chính trong pandas là Series và DataFrame. Series về cơ bản là một cột, còn DataFrame là bảng đa chiều tạo thành từ tập hợp các Series. Các cấu trúc này linh hoạt, tức có thể chứa dữ liệu nhiều kiểu khác nhau (vd. số nguyên, chuỗi, số thực).

pandas có phù hợp cho tập dữ liệu lớn không?

Có, pandas rất phù hợp cho các tập dữ liệu lớn. Nó được thiết kế cho phân tích dữ liệu hiệu quả, bao gồm dữ liệu lớn. Tuy nhiên, hãy nhớ kích thước dữ liệu bạn có thể xử lý phần nào phụ thuộc vào bộ nhớ hệ thống. Nếu bạn xử lý các tập cực lớn không vừa bộ nhớ, bạn có thể cần công cụ hay kỹ thuật khác (như chia lô hoặc dùng dask).

Làm sao để nhập dữ liệu vào pandas?

pandas có thể đọc dữ liệu từ nhiều định dạng tệp như CSV, Excel, cơ sở dữ liệu SQL, JSON và nhiều hơn nữa. Các lệnh pd.read_csv(), pd.read_excel(), pd.read_sql()pd.read_json() được dùng để nhập dữ liệu từ các loại tệp tương ứng. Tất cả các lệnh này trả về một DataFrame, mà bạn có thể thao tác bằng pandas.


Vidhi Chugh's photo
Author
Vidhi Chugh
LinkedIn

Tôi là một Chiến lược gia và Nhà đạo đức học về AI, làm việc tại giao điểm giữa khoa học dữ liệu, sản phẩm và kỹ thuật để xây dựng các hệ thống máy học có khả năng mở rộng. Được xếp hạng trong danh sách “Top 200 Nhà đổi mới trong Kinh doanh và Công nghệ” trên thế giới, tôi theo đuổi sứ mệnh dân chủ hóa máy học và giản lược thuật ngữ chuyên môn để mọi người đều có thể tham gia vào quá trình chuyển đổi này.

Chủ đề

Nhiều khóa học về pandas hơn

Courses

Nhập môn Python

4 giờ
6.9M
Nắm vững phân tích dữ liệu với Python chỉ trong 4 giờ. Khóa học online này giúp bạn làm quen với giao diện Python và các thư viện phổ biến.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow