Chia sẻ
"Hướng dẫn toàn diện thư viện Pandas trong Python — từ cài đặt, DataFrame, đọc/ghi file, lọc dữ liệu, xử lý missing values, đến group by và trực quan hoá. Bài viết dành cho người mới bắt đầu lẫn người muốn nâng cao kỹ năng phân tích dữ liệu."
Tại sao nên học Pandas?
Trong thế giới Data Analysis, Pandas là thư viện không thể thiếu. Nếu bạn từng làm việc với Excel, hãy tưởng tượng Pandas như một "Excel siêu cấp" — xử lý hàng triệu dòng dữ liệu trong vài giây, tự động hoá mọi thao tác, và tích hợp hoàn hảo với các công cụ Machine Learning.
Bài viết này sẽ đưa bạn từ zero đến hero với Pandas — bao gồm cài đặt, các thao tác cơ bản, xử lý dữ liệu thực tế, và các kỹ thuật nâng cao.
1. Cài đặt và Import
Cài đặt Pandas rất đơn giản qua pip:
pip install pandas numpy matplotlibImport vào project:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
print(f"Pandas version: {pd.__version__}")2. DataFrame — Trái tim của Pandas
DataFrame là cấu trúc dữ liệu chính trong Pandas — giống như một bảng tính Excel với các hàng và cột. Có nhiều cách tạo DataFrame:
Tạo từ Dictionary
# Tạo DataFrame từ dictionary
data = {
'Tên': ['Nguyễn Văn A', 'Trần Thị B', 'Lê Văn C', 'Phạm Thị D'],
'Tuổi': [25, 30, 28, 35],
'Phòng ban': ['IT', 'Marketing', 'IT', 'HR'],
'Lương': [15_000_000, 12_000_000, 18_000_000, 14_000_000]
}
df = pd.DataFrame(data)
print(df)Thông tin cơ bản về DataFrame
# Xem 2 dòng đầu
df.head(2)
# Thông tin tổng quan
df.info()
# Thống kê mô tả
df.describe()
# Kích thước
print(f"Shape: {df.shape}")
print(f"Columns: {df.columns.tolist()}")3. Đọc/Ghi File — Kết nối với thế giới thực
Pandas hỗ trợ đọc/ghi rất nhiều định dạng file:
# Đọc file CSV
df = pd.read_csv('doanh_thu.csv')
# Đọc file Excel
df = pd.read_excel('bao_cao.xlsx', sheet_name='Sheet1')
# Đọc file Excel với nhiều tuỳ chọn
df = pd.read_excel(
'bao_cao.xlsx',
sheet_name='DuLieu',
skiprows=2,
usecols='A:F',
dtype={'MaSP': str},
)# Ghi ra CSV
df.to_csv('ket_qua.csv', index=False, encoding='utf-8-sig')
# Ghi ra Excel
df.to_excel('ket_qua.xlsx', index=False, sheet_name='KetQua')
# Ghi nhiều sheet vào 1 file Excel
with pd.ExcelWriter('bao_cao_tong_hop.xlsx') as writer:
df_sales.to_excel(writer, sheet_name='DoanhThu', index=False)
df_costs.to_excel(writer, sheet_name='ChiPhi', index=False)4. Lọc và Truy vấn Dữ liệu
Đây là phần quan trọng nhất — tương tự AutoFilter trong Excel nhưng mạnh mẽ hơn:
# Lọc nhân viên phòng IT
df_it = df[df['Phòng ban'] == 'IT']
# Lọc lương > 14 triệu
df_high = df[df['Lương'] > 14_000_000]
# Kết hợp nhiều điều kiện (AND)
df_it_high = df[(df['Phòng ban'] == 'IT') & (df['Lương'] > 14_000_000)]
# Dùng isin() cho nhiều giá trị
df_filtered = df[df['Phòng ban'].isin(['IT', 'HR'])]
# Dùng query() — cú pháp đẹp hơn
df_query = df.query('Tuổi >= 28 and Lương > 13_000_000')
# Lọc theo text
df_nguyen = df[df['Tên'].str.contains('Nguyễn', na=False)]5. Xử lý Missing Values
# Kiểm tra missing values
print(df.isnull().sum())
# Xoá dòng có NaN
df_clean = df.dropna()
# Điền giá trị thay thế
df['Tuổi'] = df['Tuổi'].fillna(df['Tuổi'].median())
df['Lương'] = df['Lương'].fillna(df['Lương'].mean())6. Group By — Tổng hợp dữ liệu
Tương tự PivotTable trong Excel:
# Group by + aggregate
result = df_sales.groupby(['Khu vực', 'Sản phẩm']).agg({
'Doanh thu': ['sum', 'mean', 'count'],
'Số lượng': 'sum'
}).round(0)
# Pivot Table
pivot = df_sales.pivot_table(
values='Doanh thu',
index='Khu vực',
columns='Sản phẩm',
aggfunc='sum',
fill_value=0,
margins=True
)7. Merge & Join — Ghép bảng
Tương tự VLOOKUP trong Excel nhưng mạnh hơn:
# INNER JOIN
result = pd.merge(df_orders, df_customers, on='MaKH', how='inner')
# LEFT JOIN
result = pd.merge(df_orders, df_customers, on='MaKH', how='left')8. Trực quan hoá dữ liệu
# Biểu đồ cột
df_sales.groupby('Sản phẩm')['Doanh thu'].sum().plot(
kind='bar',
title='Doanh thu theo Sản phẩm',
color=['#3b82f6', '#10b981', '#f59e0b'],
figsize=(8, 5)
)
plt.ylabel('Doanh thu (VNĐ)')
plt.tight_layout()
plt.show()9. Thủ thuật nâng cao
# Apply — Áp dụng hàm tuỳ chỉnh
def phan_loai_luong(luong):
if luong >= 20_000_000: return 'Cao'
elif luong >= 14_000_000: return 'Trung bình'
else: return 'Thấp'
df['Phân loại'] = df['Lương'].apply(phan_loai_luong)
# Xử lý ngày tháng
df['Ngày'] = pd.to_datetime(df['Ngày'])
df['Tháng'] = df['Ngày'].dt.month
df['Quý'] = df['Ngày'].dt.quarter
# Method Chaining
result = (
df_sales
.query('Doanh_thu > 10_000_000')
.groupby('Khu vực')
.agg(Tổng=('Doanh thu', 'sum'))
.sort_values('Tổng', ascending=False)
.head(10)
)10. Best Practices
Luôn dùng .copy() khi tạo subset để tránh SettingWithCopyWarning
Kiểm tra dtypes trước khi tính toán
Vectorize thay vì loop — nhanh hơn 100x
Dùng category dtype cho cột ít giá trị unique — tiết kiệm 90% bộ nhớ
Tổng kết
Pandas là công cụ không thể thiếu cho bất kỳ ai làm việc với dữ liệu. Hãy áp dụng ngay vào dữ liệu thực tế — bắt đầu bằng cách đọc một file Excel quen thuộc vào Pandas và thử các thao tác trong bài viết này. Practice makes perfect! 🚀
Nội dung Premium
Bài viết này dành cho thành viên Premium. Đăng ký gói Premium để truy cập toàn bộ nội dung chất lượng cao.
Đăng nhập để tiếp tụcMục lục
- Tại sao nên học Pandas?
- 1. Cài đặt và Import
- 2. DataFrame — Trái tim của Pandas
- Tạo từ Dictionary
- Thông tin cơ bản về DataFrame
- 3. Đọc/Ghi File — Kết nối với thế giới thực
- 4. Lọc và Truy vấn Dữ liệu
- 5. Xử lý Missing Values
- 6. Group By — Tổng hợp dữ liệu
- 7. Merge & Join — Ghép bảng
- 8. Trực quan hoá dữ liệu
- 9. Thủ thuật nâng cao
- 10. Best Practices
- Tổng kết
Muốn làm chủ Python?
Tham gia khoá học E-Learning của ERX Vietnam để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
