NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

Similar documents
BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

Chương 5. Network Layer 19/09/2016 1

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Tài liệu hướng dẫn: Stored Procedure

Entity Framework (EF)

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Hướng dẫn cài đặt FPT

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

Tình huống 1: PPPoE với Username và Password

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

Mô hình dữ liệu quan hệ (Relational data model)

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Nhấn nút New để tạo 1 biến mới Trang 17

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

TỔNG QUAN VỀ.NET VÀ C#

CẤU TRÚC DỮ LIỆU NÂNG CAO

Bài 10: Cấu trúc dữ liệu

STACK và QUEUE. Lấy STACK

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

BELGIUM ONLINE APPOINTMENT

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Lecture 12. Trees (1/2) Nội dung bài học:

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

LÂ P TRI NH WEB ASP.NET

Bài tập lớn số 1. Giả lập bộ định thời

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

SIEMENS INDUSTRIAL NETWORKS

BẢO MẬT TRONG SQL SERVER

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Bài 7: Các cấu trúc điều khiển

PHÁT TRIỂN ỨNG DỤNG WEB

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

Tạo Project với MPLAB

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

TỔNG QUAN LẬP TRÌNH JAVA

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

I. Hướng Dẫn Đăng Nhập:

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Cập nhật ResultSet trong JDBC

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

GV: Phạm Đình Sắc or

1 Bước 1: Test thử kit LaunchPad.

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Các kiểu định địa chỉ họ MSC-51

THAO TÁC VỚI TẬP TIN TRONG C++

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

Đa ngôn ngữ (Internationalization) trong Servlet

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

HTML DOM - Forms. MSc. nguyenhominhduc

SIMULATE AND CONTROL ROBOT

Tìm hiểu Group Policy Object và các ví dụ

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

Bài thực hành số 2 QUYỀN và ROLE

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

Hướng Dẫn Thực Hành Tập tin & Thư mục

MA NG MA Y TI NH (Computer Networks)

Time Picker trong Android

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

LAB IP SLA Bài 1. Bùi Quốc Kỳ ***

CHAPTER 6: DANH SÁCH LIÊN KẾT (LINKED LISTS)

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Google Search Engine. 12/24/2014 Google Search Engine 1

NỘI DUNG ÔN TẬP MÔN HỆ CƠ SỞ DỮ LIỆU

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

JAVASCRIPT. Giảng viên : Ths. PHẠM ĐÀO MINH VŨ

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

MỤC LỤC. Giáo trình Thiết kế web Trang 1

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Dọn "rác" Windows 7 vào dịp cuối năm

LINQ TO SQL & ASP.NET

biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan.

LẬP TRÌNH TRÊN MÔI TRƯỜNG WINDOWS *** ADO.NET

Module2: Lập trình Shell và C Quản lý tiến trình A. TÓM TẮT LÝ THUYẾT:

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

Transcription:

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 1. Chữa bài tập buổi trước 2. Làm việc với panel 3. Chọn và nhóm phần tử 4. Sử dụng pandas trong bài toán thực tế 5. Bài tập TRƯƠNG XUÂN NAM 2

Phần 1 Chữa bài tập buổi trước TRƯƠNG XUÂN NAM 3

Bài tập Nhập dữ liệu từ file k59.csv (file kèm với bài giảng) 1. In dữ liệu ra màn hình 2. In 5 dòng đầu tiên và 5 dòng cuối cùng của dữ liệu ra màn hình 3. Thống kê xem lớp có bao nhiêu bạn điểm loại giỏi (điểm từ 8 trở lên) 4. Thông kê xem lớp có bao nhiêu bạn trượt môn (điểm dưới 4 hoặc không có điểm) 5. Vẽ đồ thị histogram minh họa phân bổ điểm số của lớp (trục giá trị từ 0 đến 10, không có điểm tính là 0) TRƯƠNG XUÂN NAM 4

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 dữ liệu ra màn hình print(d.head(5)) print(d.tail(5)) # câu 2: in 5 dòng đầu tiên # câu 2: in 5 dòng cuối cùng print(len(d[d.diem >= 8])) # câu 3: thống kê loại giỏi TRƯƠNG XUÂN NAM 5

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 những dòng thiếu điểm thành điểm 0 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 6

Phần 2 Làm việc với panel TRƯƠNG XUÂN NAM 7

Cấu trúc panel Panel được sử dụng nhiều trong kinh tế lượng Dữ liệu có 3 trục: Items (trục 0): mỗi item là một dataframe bên trong Major axis (trục 1 trục chính): các dòng Minor axis (trục 2 trục phụ): các cột Không được phát triển tiếp (thay bởi MultiIndex) TRƯƠNG XUÂN NAM 8

Tạo panel Cú pháp: pandas.panel(data, items, major_axis, minor_axis, dtype, copy) Trong đó: data có thể nhận các kiểu dữ liệu sau: ndarray, series, map, lists, dict, hằng số và cả dataframe khác items là axis = 0 major_axis là axis = 1 minor_axis là axis = 2 dtype là kiểu dữ liệu mỗi cột copy nhận giá trị True/False để khởi tạo dữ liệu có chia sẻ memory hay không TRƯƠNG XUÂN NAM 9

Tạo panel import pandas as pd import numpy as np data = np.random.rand(2,3,4) p = pd.panel(data) print(p) <class 'pandas.core.panel.panel'> Dimensions: 2 (items) x 3 (major_axis) x 4 (minor_axis) Items axis: 0 to 1 Major_axis axis: 0 to 2 Minor_axis axis: 0 to 3 TRƯƠNG XUÂN NAM 10

Tạo panel p.to_frame() major minor 0 1 0 0 0.335571 0.010409 1 0.267106 0.843688 2 0.840885 0.211749 3 0.049653 0.722182 1 0 0.755207 0.282777 1 0.674844 0.543207 2 0.634314 0.433802 3 0.290120 0.613040 2 0 0.322059 0.263548 1 0.341035 0.702612 2 0.634411 0.917126 3 0.281678 0.809592 TRƯƠNG XUÂN NAM 11

Phần 3 Chọn và nhóm phần tử TRƯƠNG XUÂN NAM 12

Chọn với iloc, loc và ix Pandas có 3 phương pháp chọn phần tử 1. Dùng iloc: chọn theo chỉ số hàng và cột Cú pháp: data.iloc[<row selection>, <column selection>] Tham số có thể là số nguyên, list các số nguyên, slice object với các số nguyên (ví dụ 2:7), mảng boolean, 2. Dùng loc: chọn theo nhãn hàng hoặc nhãn cột Cú pháp: data.loc[<row selection>, <column selection>] Tham số là nhãn (chứ không phải chỉ số) 3. Dùng ix: lai giữa 2 cách trên, nếu truyền tham số là số nguyên thì nó làm việc như iloc, truyền kiểu giá trị khác thì nó làm việc như 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 7 B 3 df2.groupby(['x'], sort=false).sum() Y X B 3 A 7 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 0 A 1 2 A 3 df3.groupby(['x']).get_group('b') X Y 1 B 4 3 B 2 TRƯƠNG XUÂN NAM 15

Phần 4 Sử dụng pandas trong bài toán thực tế TRƯƠNG XUÂN NAM 16

Dữ liệu kết quả xổ số Dữ liệu kết quả 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, 2 cột: Cột 1: ngày ra số Cột 2: số độc đắc Dạng số (nếu không đủ 5 chữ số thì có nghĩa là đã bị xóa các chữ số 0 ở đầu) Có thể không có dữ liệu (mỗi năm có 4 ngày không quay xổ số) Bài toán (vui + khoa học): phân tích các chiến lược chơi số đề mà người dân hay theo TRƯƠNG XUÂN NAM 17

Đọc và tiền xử lý dữ liệu import matplotlib.pyplot as plt import pandas as pd import numpy as np # đọc dữ liệu từ file csv, chuyển dữ liệu cột 1 sang date df = pd.read_csv("kqxs.csv", index_col = 0, parse_dates=true) # xóa bỏ các dòng không có dữ liệu df.dropna(inplace=true) # thêm cột mới là 2 số cuối của giải độc đắc df['cuoi'] = df.so % 100 TRƯƠNG XUÂN NAM 18

Khảo sát dữ liệu # trích xuất cột mới thành dữ liệu series để dễ xử lý s = pd.series(df.cuoi, dtype='int64') # xem phân bổ dữ liệu: biểu đồ histogram, 100 nhóm s.plot('hist', bins=100) plt.show() # một dạng phân bổ dữ 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 về # thử bộ số mynums, kết quả về là result, số tiền chơi là money def one_day(mynums, result, money): pay = len(mynums) * money get = money * 70 if result in mynums else 0 return get-pay # chơi nhiều ngày bộ số mynums, kết quả về là results def many_day(mynums, results, money): total = 0 for x in results: total += one_day(mynums, x, money) return total TRƯƠNG XUÂN NAM 20

Chiến lược: nuôi một số money = 1000 # thử chiến lược chơi: nuôi một con print("chơi con 76 toàn năm 2000:", many_day([76], s[0:367], money)) print("chơi con 76 toàn bộ các năm:", many_day([76], s, money)) # thử chiến lược chơi: nuôi nhiều con print("nuôi nhiều số toàn năm 2000:", many_day([76, 92, 3, 10, 51, 45], s[0:367], money)) print("nuôi nhiều số toàn bộ các 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ê con ra nhiều nhất rồi chơi x = s[0:362].value_counts().idxmax() y = s.value_counts().idxmax() print("chơi theo số ra nhiều nhất năm 2000:", x, many_day([x], s, money)) print("chơi theo số ra nhiều nhất các 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, mỗi ngày một con total = 0 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Ì LUÔN THUA TRƯƠNG XUÂN NAM 24

Phần 5 Bài tập TRƯƠNG XUÂN NAM 25

Bài tập Dựa trên bộ dữ liệu xổ số, hãy thử một vài chiến lược khác dưới đây: 1. Chơi ngẫu nhiên chẵn lẻ: mỗi lần đánh cả 50 số chẵn (hoặc 50 số lẻ), chọn ngẫu nhiên 2. Chơi nuôi đầu-cuối: chọn 1 chữ số, chẳng hạn số 7, đánh cả loạt các số có đầu và cuối chứa số 7 (07,17,27,, 97, 70,71,,79) 3. Chơi số xuất hiện ít nhất: thống kê xem số nào xuất hiện ít nhất từ ngày đầu tiên đến trước ngày mở thưởng thì chơi số đó TRƯƠNG XUÂN NAM 26