Khi làm việc với dữ liệu trong Python, một trong những thư viện mạnh mẽ và phổ biến nhất mà bạn sẽ thường xuyên gặp là Pandas. Trong bài viết này, tôi sẽ giúp bạn hiểu rõ về Pandas, cách sử dụng thư viện này để xử lý và phân tích dữ liệu một cách hiệu quả.
1. Pandas là gì?
Pandas là một thư viện mã nguồn mở của Python, được thiết kế đặc biệt để xử lý và phân tích dữ liệu. Với Pandas, bạn có thể dễ dàng làm việc với dữ liệu dạng bảng (như Excel hoặc cơ sở dữ liệu), bao gồm các thao tác như lọc, nhóm, tính toán thống kê, và trực quan hóa dữ liệu. Các đối tượng chính trong Pandas là:
DataFrame: Là một bảng dữ liệu 2 chiều (giống như bảng trong cơ sở dữ liệu hoặc bảng tính Excel), với các dòng và cột.
Series: Là một chuỗi dữ liệu 1 chiều, giống như một cột trong bảng.
2. Cài đặt Pandas
Trước khi bắt đầu, bạn cần phải cài đặt Pandas. Nếu bạn chưa cài đặt, hãy sử dụng lệnh sau trong terminal hoặc command prompt:
pip install pandas
3. Tạo DataFrame và Series
Để bắt đầu làm việc với Pandas, bạn cần biết cách tạo và sử dụng DataFrame và Series.
3.1. Tạo một DataFrame
DataFrame có thể được tạo từ nhiều nguồn dữ liệu khác nhau như danh sách, từ điển, hoặc tệp CSV.
Ví dụ 1: Tạo DataFrame từ một từ điển
# Dữ liệu mẫu
data = {
'Tên': ['An', 'Bình', 'Cường'],
'Tuổi': [22, 23, 24],
'Điểm': [8.5, 9.0, 7.5]
}
# Tạo DataFrame
df = pd.DataFrame(data)
# Hiển thị DataFrame
print(df)
Kết quả:
0 An 22 8.5
1 Bình 23 9.0
2 Cường 24 7.5
3.2. Tạo một Series
Series là một chuỗi dữ liệu 1 chiều. Bạn có thể tạo Series từ một danh sách, từ điển, hoặc một mảng NumPy.
Ví dụ 2: Tạo Series từ một danh sách
series = pd.Series(scores)
# Hiển thị Series
print(series)
Kết quả:
1 90
2 75
dtype: int64
4. Các thao tác cơ bản với DataFrame
4.1. Lọc dữ liệu
Pandas cung cấp các phương thức để lọc dữ liệu dễ dàng. Bạn có thể lọc theo các điều kiện cụ thể trên cột.
Ví dụ 3: Lọc dữ liệu theo điều kiện
df_filtered = df[df['Điểm'] > 8]
print(df_filtered)
Kết quả:
1 Bình 23 9.0
4.2. Sắp xếp dữ liệu
Pandas cũng hỗ trợ sắp xếp dữ liệu theo một hoặc nhiều cột.
Ví dụ 4: Sắp xếp theo điểm giảm dần
df_sorted = df.sort_values(by='Điểm', ascending=False)
print(df_sorted)
Kết quả:
1 Bình 23 9.0
0 An 22 8.5
2 Cường 24 7.5
5. Đọc và ghi dữ liệu từ/đến các nguồn bên ngoài
Pandas cho phép bạn đọc và ghi dữ liệu từ nhiều nguồn khác nhau, như tệp CSV, Excel, hoặc cơ sở dữ liệu.
5.1. Đọc dữ liệu từ tệp CSV
df_from_csv = pd.read_csv('data.csv')
# Hiển thị dữ liệu
print(df_from_csv)
5.2. Ghi dữ liệu vào tệp CSV
df.to_csv('output.csv', index=False)
6. Vẽ đồ thị với Pandas
Pandas hỗ trợ vẽ đồ thị trực tiếp từ DataFrame hoặc Series thông qua một API đơn giản, sử dụng Matplotlib làm nền tảng. Để vẽ đồ thị, bạn chỉ cần gọi phương thức .plot() trên một DataFrame hoặc Series.
Trước khi bắt đầu, bạn cần cài đặt Matplotlib (nếu chưa cài):
pip install matplotlib
6.1. Vẽ biểu đồ cột (Bar chart)
Biểu đồ cột là một trong những loại đồ thị phổ biến để so sánh các giá trị của các nhóm dữ liệu.
Ví dụ: Vẽ biểu đồ cột cho điểm số của các học sinh
import matplotlib.pyplot as plt
# Dữ liệu mẫu
data = {
'Tên': ['An', 'Bình', 'Cường'],
'Điểm': [8.5, 9.0, 7.5]
}
# Tạo DataFrame
df = pd.DataFrame(data)
# Vẽ biểu đồ cột
df.plot(x='Tên', y='Điểm', kind='bar', color='skyblue')
# Thêm tiêu đề và nhãn cho trục
plt.title('Điểm số của các học sinh')
plt.xlabel('Tên học sinh')
plt.ylabel('Điểm')
# Hiển thị đồ thị
plt.show()
Kết quả:
6.2. Vẽ biểu đồ đường (Line chart)
Biểu đồ đường là lựa chọn phổ biến khi bạn muốn hiển thị sự thay đổi của dữ liệu theo thời gian.
Ví dụ: Vẽ biểu đồ đường cho điểm số của học sinh theo thời gian
data = {
'Thời gian': ['Tuần 1', 'Tuần 2', 'Tuần 3'],
'Điểm': [8.5, 9.0, 7.5]
}
# Tạo DataFrame
df = pd.DataFrame(data)
# Vẽ biểu đồ đường
df.plot(x='Thời gian', y='Điểm', kind='line', marker='o', color='orange')
# Thêm tiêu đề và nhãn cho trục
plt.title('Biểu đồ điểm số theo thời gian')
plt.xlabel('Thời gian')
plt.ylabel('Điểm')
# Hiển thị đồ thị
plt.show()
6.3. Vẽ biểu đồ pie (Biểu đồ tròn)
Biểu đồ tròn (pie chart) giúp bạn biểu diễn các phần trăm tương đối của các mục trong dữ liệu.
Ví dụ: Vẽ biểu đồ tròn cho tỷ lệ học sinh đạt điểm cao (>= 8) và thấp (< 8)
data = {
'Tên': ['An', 'Bình', 'Cường'],
'Điểm': [8.5, 9.0, 7.5]
}
# Tạo DataFrame
df = pd.DataFrame(data)
# Tính tỷ lệ học sinh đạt điểm cao và thấp
high_score = len(df[df['Điểm'] >= 8])
low_score = len(df[df['Điểm'] < 8])
# Dữ liệu cho biểu đồ tròn
scores = [high_score, low_score]
labels = ['Điểm cao (>=8)', 'Điểm thấp (<8)']
# Vẽ biểu đồ tròn
plt.pie(scores, labels=labels, autopct='%1.1f%%', colors=['lightgreen', 'salmon'])
# Thêm tiêu đề
plt.title('Tỷ lệ học sinh đạt điểm cao và thấp')
# Hiển thị đồ thị
plt.show()
Kết quả:
Bình luận