Danh mục: Tin tức
Bài viết gần đây
-
-
So sánh Flutter và React Native
Tháng mười một 17, 2025 -
So sánh Flutter và React Native
Tháng mười một 17, 2025 -
Chiến lược RSI 30–70 trong Bot Auto Trading Python
Tháng mười một 17, 2025 -
Chiến Lược Giao Dịch News Filter sử dụng API Python
Tháng mười một 17, 2025
| Giới thiệu về Pandas
Được viết bởi thanhdt vào ngày 16/11/2025 lúc 10:22 | 11 lượt xem
Giới thiệu về Pandas
Pandas là gì?
Pandas là một thư viện Python mã nguồn mở, mạnh mẽ và linh hoạt được sử dụng để phân tích và thao tác dữ liệu. Tên “Pandas” được lấy từ thuật ngữ “Panel Data”, một khái niệm trong kinh tế lượng. Thư viện này được phát triển bởi Wes McKinney vào năm 2008 và đã trở thành công cụ không thể thiếu trong khoa học dữ liệu, phân tích dữ liệu và machine learning.
Nếu bạn mới bắt đầu với Python, hãy xem bài viết Phân tích kỹ thuật với Python để hiểu cách Python được sử dụng trong phân tích dữ liệu tài chính.
Tại sao sử dụng Pandas?
Pandas cung cấp các cấu trúc dữ liệu và công cụ phân tích hiệu quả, giúp việc làm việc với dữ liệu có cấu trúc trở nên dễ dàng và trực quan hơn so với việc sử dụng các thư viện cơ bản của Python như list hoặc dictionary. Một số lợi ích chính của Pandas bao gồm:
- Xử lý dữ liệu dễ dàng: Đọc và ghi dữ liệu từ nhiều định dạng khác nhau (CSV, Excel, JSON, SQL, HTML, v.v.)
- Làm sạch dữ liệu: Xử lý dữ liệu thiếu, loại bỏ trùng lặp, chuyển đổi kiểu dữ liệu
- Phân tích dữ liệu: Tính toán thống kê, nhóm dữ liệu, pivot tables
- Tích hợp tốt: Hoạt động tốt với các thư viện khác như NumPy, Matplotlib, Scikit-learn
- Hiệu suất cao: Được tối ưu hóa cho hiệu suất với các thao tác vectorized
So sánh Pandas và NumPy
Để hiểu rõ hơn về sự khác biệt giữa Pandas và NumPy, hãy xem bảng so sánh dưới đây:
| Tiêu chí | Pandas | NumPy |
|---|---|---|
| Kiểu dữ liệu | DataFrame, Series | Array (ndarray) |
| Mục tiêu | Phân tích dữ liệu có cấu trúc | Tính toán số học và đại số tuyến tính |
| Cú pháp | Dễ đọc, gần với SQL | Gọn nhẹ nhưng khó hơn |
| Dùng cho | Data Analyst, Data Scientist, ML Engineer | Scientific computing, Machine Learning |
| Xử lý dữ liệu thiếu | Có sẵn (NaN) | Không có sẵn |
| Nhãn dữ liệu | Có (index, column names) | Không có |
| Đọc file | Hỗ trợ nhiều định dạng (CSV, Excel, JSON) | Hạn chế |
| Tốc độ | Chậm hơn NumPy cho tính toán thuần | Nhanh hơn cho tính toán số học |
Pandas được xây dựng trên nền tảng NumPy, vì vậy chúng thường được sử dụng cùng nhau. Bạn có thể tìm hiểu thêm về NumPy trong phân tích dữ liệu tài chính để hiểu cách hai thư viện này bổ trợ cho nhau.
Cài đặt Pandas
Để cài đặt Pandas, bạn có thể sử dụng pip hoặc conda:
# Sử dụng pip
pip install pandas
# Sử dụng conda
conda install pandas
Cấu trúc dữ liệu chính trong Pandas
Series
Series là một cấu trúc dữ liệu một chiều, tương tự như một mảng hoặc danh sách có nhãn. Mỗi phần tử trong Series có một nhãn (index) tương ứng.
import pandas as pd
# Tạo Series từ list
data = [10, 20, 30, 40, 50]
series = pd.Series(data)
print(series)
# Tạo Series với index tùy chỉnh
series = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print(series)
DataFrame
DataFrame là cấu trúc dữ liệu hai chiều, tương tự như bảng tính Excel hoặc bảng SQL. Nó bao gồm các hàng và cột, mỗi cột có thể chứa các kiểu dữ liệu khác nhau.
# Tạo DataFrame từ dictionary
data = {
'Tên': ['An', 'Bình', 'Chi', 'Dũng'],
'Tuổi': [25, 30, 28, 35],
'Thành phố': ['Hà Nội', 'TP.HCM', 'Đà Nẵng', 'Hà Nội']
}
df = pd.DataFrame(data)
print(df)
Đọc và ghi dữ liệu
Đọc dữ liệu từ file CSV
# Đọc file CSV
df = pd.read_csv('data.csv')
# Đọc với các tùy chọn
df = pd.read_csv('data.csv', encoding='utf-8', sep=',', header=0)
Đọc dữ liệu từ file Excel
# Đọc file Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
Đọc dữ liệu từ JSON
# Đọc file JSON
df = pd.read_json('data.json')
Ghi dữ liệu ra file
# Ghi ra file CSV
df.to_csv('output.csv', index=False)
# Ghi ra file Excel
df.to_excel('output.xlsx', index=False)
# Ghi ra file JSON
df.to_json('output.json', orient='records')
Xem và khám phá dữ liệu
Xem thông tin cơ bản về DataFrame
# Xem 5 dòng đầu tiên
df.head()
# Xem 5 dòng cuối cùng
df.tail()
# Xem thông tin tổng quan
df.info()
# Xem thống kê mô tả
df.describe()
# Xem hình dạng của DataFrame (số hàng, số cột)
df.shape
# Xem tên các cột
df.columns
# Xem index
df.index
Lựa chọn dữ liệu
Lựa chọn cột
# Lựa chọn một cột
df['Tên']
# Lựa chọn nhiều cột
df[['Tên', 'Tuổi']]
Lựa chọn hàng
# Lựa chọn hàng theo index
df.iloc[0] # Hàng đầu tiên
df.iloc[0:3] # 3 hàng đầu tiên
# Lựa chọn hàng theo điều kiện
df[df['Tuổi'] > 25]
# Lựa chọn hàng theo label
df.loc[0]
Lọc dữ liệu
# Lọc với một điều kiện
df[df['Tuổi'] > 30]
# Lọc với nhiều điều kiện
df[(df['Tuổi'] > 25) & (df['Thành phố'] == 'Hà Nội')]
# Sử dụng query
df.query('Tuổi > 25 and Thành_phố == "Hà Nội"')
Xử lý dữ liệu thiếu
# Kiểm tra dữ liệu thiếu
df.isnull()
df.isnull().sum()
# Xóa các hàng có dữ liệu thiếu
df.dropna()
# Điền dữ liệu thiếu
df.fillna(0) # Điền bằng 0
df.fillna(df.mean()) # Điền bằng giá trị trung bình
df.fillna(method='ffill') # Điền bằng giá trị trước đó
Thao tác với dữ liệu
Thêm cột mới
# Thêm cột từ phép tính
df['Tuổi_mới'] = df['Tuổi'] + 1
# Thêm cột với giá trị cố định
df['Nhóm'] = 'A'
Xóa cột hoặc hàng
# Xóa cột
df.drop('Tên', axis=1, inplace=True)
# Xóa hàng
df.drop(0, axis=0, inplace=True)
Sắp xếp dữ liệu
# Sắp xếp theo cột
df.sort_values('Tuổi', ascending=False)
# Sắp xếp theo nhiều cột
df.sort_values(['Thành phố', 'Tuổi'])
Nhóm dữ liệu (Grouping)
# Nhóm theo một cột
df.groupby('Thành phố').mean()
# Nhóm theo nhiều cột
df.groupby(['Thành phố', 'Nhóm']).sum()
# Áp dụng nhiều hàm thống kê
df.groupby('Thành phố').agg({
'Tuổi': ['mean', 'min', 'max'],
'Điểm': 'sum'
})
Kết hợp dữ liệu
Nối dữ liệu theo chiều dọc (Concatenate)
# Nối hai DataFrame
df_combined = pd.concat([df1, df2], ignore_index=True)
Nối dữ liệu theo chiều ngang (Merge)
# Merge giống như JOIN trong SQL
df_merged = pd.merge(df1, df2, on='ID', how='inner')
# Các loại merge: 'inner', 'left', 'right', 'outer'
Thống kê và tính toán
# Tính tổng
df['Tuổi'].sum()
# Tính trung bình
df['Tuổi'].mean()
# Tính trung vị
df['Tuổi'].median()
# Tính độ lệch chuẩn
df['Tuổi'].std()
# Đếm số lượng
df['Thành phố'].value_counts()
# Tương quan
df.corr()
Áp dụng hàm tùy chỉnh
# Áp dụng hàm cho từng phần tử
df['Tuổi'].apply(lambda x: x * 2)
# Áp dụng hàm cho từng hàng
df.apply(lambda row: row['Tuổi'] + row['Điểm'], axis=1)
# Áp dụng hàm cho từng cột
df.apply(lambda col: col.max(), axis=0)
Xử lý chuỗi thời gian
Pandas cung cấp các công cụ mạnh mẽ để làm việc với dữ liệu thời gian:
# Chuyển đổi cột thành datetime
df['Ngày'] = pd.to_datetime(df['Ngày'])
# Lấy năm, tháng, ngày
df['Năm'] = df['Ngày'].dt.year
df['Tháng'] = df['Ngày'].dt.month
# Resample dữ liệu theo thời gian
df.set_index('Ngày').resample('M').mean()
Ví dụ thực tế
Dưới đây là một ví dụ hoàn chỉnh về cách sử dụng Pandas để phân tích dữ liệu. Bạn cũng có thể tham khảo bài viết Làm Bot Giao Dịch Backtest với Pandas để xem cách áp dụng Pandas trong thực tế cho giao dịch tài chính:
import pandas as pd
# Đọc dữ liệu
df = pd.read_csv('sales_data.csv')
# Xem thông tin cơ bản
print(df.head())
print(df.info())
# Làm sạch dữ liệu
df = df.dropna() # Xóa dữ liệu thiếu
df = df.drop_duplicates() # Xóa dữ liệu trùng lặp
# Phân tích
total_sales = df['Doanh_thu'].sum()
avg_sales = df['Doanh_thu'].mean()
sales_by_region = df.groupby('Khu_vực')['Doanh_thu'].sum()
# Lọc dữ liệu
high_sales = df[df['Doanh_thu'] > 1000000]
# Sắp xếp
top_products = df.sort_values('Doanh_thu', ascending=False).head(10)
# Xuất kết quả
df.to_csv('cleaned_data.csv', index=False)
Kết luận
Pandas là một thư viện không thể thiếu cho bất kỳ ai làm việc với dữ liệu trong Python. Với các tính năng mạnh mẽ và dễ sử dụng, Pandas giúp bạn xử lý, phân tích và khám phá dữ liệu một cách hiệu quả. Cho dù bạn đang làm việc với dữ liệu nhỏ hay lớn, Pandas cung cấp các công cụ cần thiết để biến dữ liệu thô thành thông tin có ý nghĩa.
Để tìm hiểu thêm về các thư viện Python khác trong giao dịch định lượng, bạn có thể xem bài viết Các thư viện Python phổ biến trong giao dịch định lượng hoặc Làm thế nào để sử dụng Python xây dựng chiến lược giao dịch định lượng.