1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 10 - Trương Xuân Nam

26 61 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 10 Thư viện Pandas cung cấp cho người học những kiến thức như: Chữa bài tập buổi trước; Làm việc với panel; Chọn và nhóm phần tử; Sử dụng pandas trong bài toán thực tế. Mời các bạn cùng tham khảo!

NHẬP MƠN LẬP TRÌNH KHOA HỌC DỮ LIỆU Bài 10: Thư viện Pandas (2) Nội dung Chữa tập buổi trước Làm việc với panel Chọn nhóm phần tử Sử dụng pandas toán thực tế Bài tập TRƯƠNG XUÂN NAM Phần Chữa tập buổi trước TRƯƠNG XUÂN NAM Bài tập Nhập liệu từ file k59.csv (file kèm với giảng) In liệu hình In dòng dòng cuối liệu hình Thống kê xem lớp có bạn điểm loại giỏi (điểm từ trở lên) Thơng kê xem lớp có bạn trượt môn (điểm điểm) Vẽ đồ thị histogram minh họa phân bổ điểm số lớp (trục giá trị từ đến 10, khơng có điểm tính 0) TRƯƠNG XN NAM Bài chữa import pandas as pd import numpy as np import matplotlib.pyplot as plt d = pd.read_csv("k59.csv", index_col = 0) print(d) # câu 1: in liệu hình print(d.head(5)) # câu 2: in dịng print(d.tail(5)) # câu 2: in dòng cuối print(len(d[d.Diem >= 8])) # câu 3: thống kê loại giỏi TRƯƠNG XUÂN NAM Bài chữa # câu 4: thống kê trượt môn print(len(d[(d.Diem < 4) | (d.Diem.isnull())])) # câu 5: vẽ đồ thị histogram phân bổ điểm d.Diem.plot(kind='hist', bins=10) plt.show() # gán cho dòng thiếu điểm thành điểm d.Diem.fillna(0, inplace=True) # thống kê theo loại điểm (so sánh xem khác histogram điểm nào?) # cách khác: d.groupby('Diem').count()['MaSV'].plot(kind='bar') d.Diem.value_counts().sort_index().plot('bar') plt.show() TRƯƠNG XUÂN NAM Phần Làm việc với panel TRƯƠNG XUÂN NAM Cấu trúc panel  Panel sử dụng nhiều kinh tế lượng  Dữ liệu có trục:  Items (trục 0): item dataframe bên  Major axis (trục – trục chính): dịng  Minor axis (trục – trục phụ): cột  Không phát triển tiếp (thay MultiIndex) TRƯƠNG XUÂN NAM Tạo panel  Cú pháp: pandas.Panel(data, items, major_axis, minor_axis, dtype, copy)  Trong đó:  ‘data’ nhận kiểu liệu sau: ndarray, series, map, lists, dict, số dataframe khác  ‘items’ axis =  ‘major_axis’ axis =  ‘minor_axis’ axis =  ‘dtype’ kiểu liệu cột  ‘copy’ nhận giá trị True/False để khởi tạo liệu có chia sẻ memory hay khơng TRƯƠNG XN NAM Tạo panel import pandas as pd import numpy as np data = np.random.rand(2,3,4) p = pd.Panel(data) print(p) Dimensions: (items) x (major_axis) x (minor_axis) Items axis: to Major_axis axis: to Minor_axis axis: to TRƯƠNG XUÂN NAM 10 Phần Chọn nhóm phần tử TRƯƠNG XUÂN NAM 12 Chọn với iloc, loc ix  Pandas có phương pháp chọn phần tử Dùng iloc: chọn theo số hàng cột • • Cú pháp: data.iloc[, ] Tham số số nguyên, list số nguyên, slice object với số nguyên (ví dụ 2:7), mảng boolean,… Dùng loc: chọn theo nhãn hàng nhãn cột • • Cú pháp: data.loc[, ] Tham số nhãn (chứ số) Dùng ix: lai cách trên, truyền tham số số ngun làm việc iloc, truyền kiểu giá trị khác làm việc loc TRƯƠNG XUÂN NAM 13 Nhóm phần tử df2 = pd.DataFrame({'X' : ['B', 'B', 'A', 'A'], 'Y' : [1, 2, 3, 4]}) df2.groupby(['X']).sum() Y X A B df2.groupby(['X'], sort=False).sum() Y X B A TRƯƠNG XUÂN NAM 14 Nhóm phần tử df3 = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]}) df3.groupby(['X']).get_group('A') X Y A A df3.groupby(['X']).get_group('B') X Y B B TRƯƠNG XUÂN NAM 15 Phần Sử dụng pandas toán thực tế TRƯƠNG XUÂN NAM 16 Dữ liệu kết xổ số  Dữ liệu kết xổ số (độc đắc) từ ngày 1-1-2000 đến ngày 21-5-2018 (hôm qua)  Lưu định dạng csv, cột:  Cột 1: ngày số  Cột 2: số độc đắc • Dạng số (nếu khơng đủ chữ số có nghĩa bị xóa chữ số đầu) • Có thể khơng có liệu (mỗi năm có ngày khơng quay xổ số)  Bài tốn (vui + khoa học): phân tích chiến lược chơi số đề mà người dân hay theo TRƯƠNG XUÂN NAM 17 Đọc tiền xử lý liệu import matplotlib.pyplot as plt import pandas as pd import numpy as np # đọc liệu từ file csv, chuyển liệu cột sang date df = pd.read_csv("kqxs.csv", index_col = 0, parse_dates=True) # xóa bỏ dịng khơng có liệu df.dropna(inplace=True) # thêm cột số cuối giải độc đắc df['Cuoi'] = df.So % 100 TRƯƠNG XUÂN NAM 18 Khảo sát liệu # trích xuất cột thành liệu series để dễ xử lý s = pd.Series(df.Cuoi, dtype='int64') # xem phân bổ liệu: biểu đồ histogram, 100 nhóm s.plot('hist', bins=100) plt.show() # dạng phân bổ liệu khác: biểu đồ bar, đếm tần suất s.value_counts().sort_index().plot('bar') plt.show() TRƯƠNG XUÂN NAM 19 Viết hàm tính số tiền thu # thử số myNums, kết result, số tiền chơi money def one_day(myNums, result, money): pay = len(myNums) * money get = money * 70 if result in myNums else return get-pay # chơi nhiều ngày số myNums, kết results def many_day(myNums, results, money): total = for x in results: total += one_day(myNums, x, money) return total TRƯƠNG XUÂN NAM 20 Chiến lược: nuôi số money = 1000 # thử chiến lược chơi: nuôi print("Chơi 76 toàn năm 2000:", many_day([76], s[0:367], money)) print("Chơi 76 toàn năm:", many_day([76], s, money)) # thử chiến lược chơi: nuôi nhiều print("Nuôi nhiều số toàn năm 2000:", many_day([76, 92, 3, 10, 51, 45], s[0:367], money)) print("Ni nhiều số tồn năm:", many_day([76, 92, 3, 10, 51, 45], s, money)) TRƯƠNG XUÂN NAM 21 Chiến lược: thống kê # thống kê nhiều chơi x = s[0:362].value_counts().idxmax() y = s.value_counts().idxmax() print("Chơi theo số nhiều năm 2000:", x, many_day([x], s, money)) print("Chơi theo số nhiều năm:", y, many_day([y], s, money)) TRƯƠNG XUÂN NAM 22 Chiến lược: ngẫu nhiên # chơi ngẫu nhiên, ngày total = for d in s: total -= money m = np.random.randint(100) if (m == d): total += 70 * money print("Chơi ngẫu nhiên:", total) TRƯƠNG XUÂN NAM 23 BẠN CĨ THỂ THỬ VÀI CHIẾN LƯỢC THƠNG DỤNG KHÁC VÀ LUÔN NHẬN ĐƯỢC KẾT LUẬN CHƠI XỔ SỐ THÌ LN THUA TRƯƠNG XN NAM 24 Phần Bài tập TRƯƠNG XUÂN NAM 25 Bài tập Dựa liệu xổ số, thử vài chiến lược khác đây: Chơi ngẫu nhiên chẵn lẻ: lần đánh 50 số chẵn (hoặc 50 số lẻ), chọn ngẫu nhiên Chơi nuôi đầu-cuối: chọn chữ số, chẳng hạn số 7, đánh loạt số có đầu cuối chứa số (07,17,27,…, 97, 70,71,…,79) Chơi số xuất nhất: thống kê xem số xuất từ ngày đến trước ngày mở thưởng chơi số TRƯƠNG XUÂN NAM 26 ... nhiên:", total) TRƯƠNG XUÂN NAM 23 BẠN CÓ THỂ THỬ VÀI CHIẾN LƯỢC THÔNG DỤNG KHÁC VÀ LUÔN NHẬN ĐƯỢC KẾT LUẬN CHƠI XỔ SỐ THÌ LN THUA TRƯƠNG XUÂN NAM 24 Phần Bài tập TRƯƠNG XUÂN NAM 25 Bài tập Dựa liệu... nhóm phần tử Sử dụng pandas toán thực tế Bài tập TRƯƠNG XUÂN NAM Phần Chữa tập buổi trước TRƯƠNG XUÂN NAM Bài tập Nhập liệu từ file k59.csv (file kèm với giảng) In liệu hình In dịng dòng cuối liệu... TRƯƠNG XUÂN NAM 15 Phần Sử dụng pandas toán thực tế TRƯƠNG XUÂN NAM 16 Dữ liệu kết xổ số  Dữ liệu kết xổ số (độc đắc) từ ngày 1-1 -2 000 đến ngày 2 1-5 -2 018 (hôm qua)  Lưu định dạng csv, cột:  Cột

Ngày đăng: 09/08/2021, 18:09

Xem thêm:

TỪ KHÓA LIÊN QUAN