Matplotlib - Thư viện trực quan hóa dữ liệu
- Thiết lập kích thước hình ảnh
import matplotlib.pyplot as plt
# Tạo figure với kích thước tùy chỉnh
hinh_anh = plt.figure(figsize=(15, 7), dpi=100)
# figsize: (chiều rộng, chiều cao), dpi: độ phân giải (pixel/inch)
Vẽ biểu đồ đường
# Bước 1: Nhập thư viện
import matplotlib.pyplot as plt
# Bước 2: Cấu hình hiển thị tiếng Việt
plt.rcParams['font.sans-serif'] = ['Arial'] # Chọn font hỗ trợ tiếng Việt
plt.rcParams['axes.unicode_minus'] = False # Hiển thị đúng dấu trừ
# Bước 3: Thiết lập kích thước hình ảnh
plt.figure(figsize=(15, 7))
# Bước 4: Chuẩn bị dữ liệu
thoi_gian = list(range(24)) # Giờ trong ngày
nhiet_do = [22, 21, 20, 19, 18, 17, 16, 15, 16, 18, 20, 22, 24, 26, 28, 29, 30, 31, 30, 28, 26, 24, 23, 22, 21]
# Bước 5: Tùy chỉnh trục tọa độ
plt.xticks(thoi_gian[::2], [f"{t}:00" for t in thoi_gian[::2]], rotation=45)
# Bước 6: Vẽ biểu đồ
plt.plot(thoi_gian, nhiet_do, color='blue', marker='o', label='Nhiệt độ')
# Bước 7: Thêm chú thích
plt.legend()
# Bước 8: Đặt nhãn trục và hiển thị
plt.xlabel('Thời gian (giờ)')
plt.ylabel('Nhiệt độ (°C)')
plt.grid(True)
plt.show()
NumPy - Thư viện tính toán số học
Giới thiệu và cấu trúc dữ liệu
import numpy as np
# Tạo mảng từ danh sách
mang_a = np.array([10, 20, 30, 40, 50])
mang_b = np.array(range(10, 60, 10))
mang_c = np.arange(10, 60, 10)
# Xem hình dạng mảng
print(mang_a.shape) # Kích thước mảng
# Thay đổi hình dạng mảng
mang_2d = mang_a.reshape(5, 1) # Chuyển thành mảng 2D 5x1
mang_1d = mang_2d.flatten() # Chuyển về mảng 1D
Phép toán trên mảng
# Mảng cùng kích thước
mang_x = np.array([1, 2, 3])
mang_y = np.array([4, 5, 6])
# Cộng và nhân từng phần tử
ket_qua_cong = mang_x + mang_y # [5, 7, 9]
ket_qua_nhan = mang_x * mang_y # [4, 10, 18]
# Mảng khác kích thước (broadcasting)
mang_2d = np.array([[1, 2, 3], [4, 5, 6]])
mang_1d = np.array([10, 20, 30])
ket_qua = mang_2d + mang_1d # [[11, 22, 33], [14, 25, 36]]
Đọc dữ liệu từ file
# Đọc file CSV
du_lieu = np.loadtxt('du_lieu.csv', delimiter=',', skiprows=1)
# Chuyển vị mảng
du_lieu_chuyen_vi = du_lieu.T
# Lấy dữ liệu theo chỉ mục
hang_dau = du_lieu[0, :] # Lấy hàng đầu tiên
cot_dau = du_lieu[:, 0] # Lấy cột đầu tiên
hang_ky_tu = du_lieu[1:5, :] # Lấy hàng 2-5
cot_ky_tu = du_lieu[:, 2:5] # Lấy cột 3-5
# Lọc dữ liệu theo điều kiện
du_lieu_loc = du_lieu[du_lieu > 50] # Lấy các giá trị > 50
# Thay thế giá trị
du_lieu[du_lieu < 10] = 0 # Thay các giá trị < 10 bằng 0
# Nối mảng
mang_1 = np.array([1, 2, 3])
mang_2 = np.array([4, 5, 6])
mang_noi_doc = np.vstack([mang_1, mang_2]) # Nối theo chiều dọc
mang_noi_ngang = np.hstack([mang_1, mang_2]) # Nối theo chiều ngang
Hàm thống kê
# Tạo mảng ngẫu nhiên
mang_ngau_nhien = np.random.rand(100) # 100 số ngẫu nhiên
# Thống kê
tong = np.sum(mang_ngau_nhien)
trung_binh = np.mean(mang_ngau_nhien)
trung_vi = np.median(mang_ngau_nhien)
do_lech_chuan = np.std(mang_ngau_nhien)
gia_tri_cuc_dai = np.max(mang_ngau_nhien)
gia_tri_cuc_thieu = np.min(mang_ngau_nhien)
Pandas - Thư viện xử lý dữ liệu
Cấu trúc dữ liệu
import pandas as pd
# Series - Mảng 1 chiều có nhãn
series_du_lieu = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
# DataFrame - Bảng dữ liệu 2 chiều
du_lieu_bang = pd.DataFrame({
'ten': ['Alice', 'Bob', 'Charlie'],
'tuoi': [25, 30, 35],
'thanh_pho': ['Hanoi', 'HCM', 'Danang']
})
# Đọc dữ liệu từ file CSV
df = pd.read_csv('du_lieu.csv')
# Sắp xếp dữ liệu
df_sap_xep = df.sort_values(by='tuoi', ascending=False)
# Lấy dữ liệu
hang_dau = df.loc[0] # Lấy hàng đầu tiên theo nhãn
hang_vi_tri = df.iloc[0] # Lấy hàng đầu tiên theo vị trí
cot_ten = df['ten'] # Lấy cột 'ten'
hang_dieu_kien = df[df['tuoi'] > 30] # Lấy các hàng có tuổi > 30
Xử lý dữ liệu thiếu
# Kiểm tra giá trị thiếu
du_lieu_thieu = df.isnull()
# Xóa hàng/cột có giá trị thiếu
df_khong_thieu = df.dropna()
# Điền giá trị thiếu
df_dien_gia_tri = df.fillna(df.mean()) # Điền bằng giá trị trung bình
# Thay thế giá trị
df['tuoi'].replace(0, df['tuoi'].mean(), inplace=True)
Phân tích dữ liệu phim
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Đọc dữ liệu phim
df_phim = pd.read_csv('IMDB-Movie-Data.csv')
# Xử lý thể loại phim
the_loai_list = df_phim['Genre'].str.split(',').tolist()
tat_ca_the_loai = list(set([the_loai for danh_sach in the_loai_list for the_loai in danh_sach]))
# Tạo DataFrame chứa thông tin thể loại
df_the_loai = pd.DataFrame(np.zeros((len(df_phim), len(tat_ca_the_loai))), columns=tat_ca_the_loai)
# Đánh dấu các thể loại xuất hiện
for i, the_loai_phim in enumerate(the_loai_list):
df_the_loai.loc[i, the_loai_phim] = 1
# Tính số phim theo thể loại
thong_ke_the_loai = df_the_loai.sum().sort_values(ascending=False)
# Vẽ biểu đồ
plt.figure(figsize=(15, 8))
plt.bar(thong_ke_the_loai.index, thong_ke_the_loai.values)
plt.xticks(rotation=45)
plt.xlabel('Thể loại phim')
plt.ylabel('Số lượng phim')
plt.title('Phân bố thể loại phim')
plt.tight_layout()
plt.show()
Gộp dữ liệu
# Gộp hai DataFrame
df1 = pd.DataFrame({'id': [1, 2, 3], 'ten': ['A', 'B', 'C']})
df2 = pd.DataFrame({'id': [1, 2, 4], 'diem': [85, 90, 78]})
df_gop = pd.merge(df1, df2, on='id', how='inner') # Gộp nội
df_gop_outer = pd.merge(df1, df2, on='id', how='outer') # Gộp ngoại