-
Tuần 1 - Ngày 10 tháng 7 năm 2019
- Giới thiệu về khóa học
- Hướng dẫn viết chương trình Python trên web
- Hướng dẫn sử dụng PyCharm
- Tổng quan về Python
- Kỹ năng sử dụng Google search
- Viết tài liệu kỹ thuật dùng Markdown
- Hàm xây dựng sẵn trong Python – math và random
- Cài đặt các công thức toán cơ bản
- Xây dựng hàm trong python
- Điều kiện if-else
- Những lỗi thường gặp trong Python
- Reading assignment
-
Tuần 2 - Ngày 17 tháng 7 năm 2019
-
Tuần 3 - Ngày 24 tháng 7 năm 2019
-
Tuần 4 - Ngày 31 tháng 7 năm 2019
-
Tuần 5 - Ngày 7 tháng 8 năm 2019
-
Advanced Python
-
Tuần 6 - Ngày 14 tháng 8 năm 2019
-
Tuần 7 - Ngày 28 tháng 8 năm 2019
-
Tuần 8
-
Tuần 9
File trong python
Việc xử lý file là công việc rất quan trọng, đặc biệt trong data science và machine learning. Dưới đây là một số kĩ thuật xử lí file thông thường.
Đọc File
Để thao tác một file trong python, chúng ta dùng cấu trúc chương trình như sau
trong đó, mode có thể là 'r'
để đọc file, hay 'w'
và 'a'
để tạo file và ghi nội dung cho file. Chúng ta cần chú ý 2 thao tác open
và close
mỗi khi thao tác đến file.
Ví dụ, chúng ta được yêu cầu viết chương trình đọc file hello_world.txt
cho trước và in nội dung của file ra. File hello_world.txt
có nội dung như sau
Source code của chương trình như sau
Trong ví dụ này tham số thứ 2 có giá trị là 'r'
để đọc file. Hàm read()
sẽ đọc nội dung của file và trả về giá trị kiểu string.
Ghi File
Giả sử chúng ta cần tạo file my_file.txt
và ghi 2 dòng text vào file. Code python để thực hiện yêu cầu trên như sau
Mở file my_file.txt
từ ổ đĩa để xem nội dung file
Ở ví dụ này, tham số thứ 2 của hàm open có giá trị là 'w'
, tức là tạo và ghi nội dung file. Trong trường hợp file my_file.txt
đã tồn tại rồi thì chương trình tạo mới (tạo đè) file my_file.txt
mà không quan tâm đến nội dung của file cũ. Để kiểm chứng điều này, chúng ta chạy tiếp đoạn code sau
Mở lại file my_file.txt
từ ổ đĩa để xem nội dung file
Trong trường hợp chúng ta muốn ghi tiếp tục nội dung vào một file đã tồn tại, thì chúng ta chỉ cần thay đổi tham số thứ 2 của hàm open
thành 'a'
(viết tắt cho từ append
, nghĩa là thêm tiếp) như sau.
Mở lại file my_file.txt
từ ổ đĩa để xem nội dung file sau khi dùng mode 'a'
Một số hàm thường dùng với file
Hàm os.path.exists
Hàm os.path.exists(path)
được dùng để kiểm tra một file có tồn tại hay không. Đoạn code sau minh họa dùng hàm os.path.exists(path)
để kiểm tra 2 file, my_file.txt
và non_existence_file.txt
có tồn tại hay không.
Package này hỗ trợ một số hàm rất hữu ích, các bạn có thể tìm hiểu thêm tại đây https://docs.python.org/3/library/os.html
Hàm split
Giả sử chúng ta đọc dữ liệu từ file students.txt
chứa thông tin học sinh. Trong đó mỗi dòng bao gỗm thông tin mã số, tên học sinh, và ngày tháng năm sinh. Nhiệm vụ yêu cầu là in ra tên học sinh. Dưới đây là định dạng dữ liệu ở file students.txt
.
Đa phần ở định dạng như trên thường được thấy khi ta thu nhập dữ liệu hoặc tham gia các bài toán của kaggle. Ví dụ trên mỗi thuộc tính được ngăn cách bởi mỗi dấu phẩy ,
. Duyệt qua mỗi chuỗi rồi đếm dấu phẩy là phương pháp không hiểu quả. Chúng ta có thể dùng hàm split
để xử lý việc này một cách hiệu quả
Hàm join
Hàm join
giúp cho việc ghi dữ liệu có format (ví dụ mỗi thuộc tính được ngăn cách nhau một kí hiệu được quy định trước). Thông thường, dữ liệu sau khi thu thập để ghi vào file là phải một kiểu chuỗi. Vì vậy khi chuyển các thuộc tính và viết ngăn cách nhau một kí hiệu bất kỳ, thì cần phải chuyển tất cả về kiểu dữ liệu chuỗi.
Thực hành
Trong bài thực hành này chúng ta sẽ thao tác trên Iris dataset và sẽ áp dụng các kiến thức trên để xử lý việc đọc file. Iris dataset gồm 3 loài hoa: Setosa, Versicolour, và Virginica. Mỗi mẫu dữ liệu gồm chiều dài và chiều rộng cánh hoa sepal (cm), chiều dài và chiều rộng cánh hoa petal (cm), và loài hoa (Iris-setosa, Iris-versicolor, và Iris-virginica).
Iris dataset được lưu trong file Iris.csv
, một dạng text file trong đó các giá trị của một mẫu được phân cách bằng dấu phẩy. Chúng ta có thể mở để xem nội dùng file Iris.csv
với bất kỳ một text editor thông thường nào đó. Hình sau hiển thị 3 dòng đầu tiên của file Iris.csv
.
Chúng ta quan sát thấy dòng đầu tiên đóng vai trò header, mô tả ý nghĩa của một cột dữ liệu. Cột đầu tiên Id
xác định thứ tự, phân biệt giữa các dòng. Cột này không quan trọng vì chúng ta không cần dùng đến thuộc tính này khi train các thuật toán machine learning.
Một điểm nữa là giá trị của một cuối cùng ở dạng string. Chúng ta cần chuyển sang giá trị kiểu số vì hầu hết các thuật toán yêu cầu giá trị label (class) có kiểu số (hay dạng vector của các số).
Đoạn code sau đọc file Iris.csv
và hiển thị 10 dòng đầu tiên
Hàm readlines()
trả về một list, trong đó mỗi phần tử là một dòng dữ liệu trong file Iris.csv
và có kiểu string.
Chúng ta dùng thêm hàm split()
để phân tách các cột giá trị như sau
Ba việc chúng ta cần xử lý tiếp là 1) Bỏ cột Id
2) Chuyển đổi 4 đặc trưng sang kiểu float
và 3) Chuyển kiểu dữ liệu của một species từ string
sang integer
. Đoan code sau thực hiện 3 tác vụ trên.
Ở đoạn code này, chúng ta nên dùng thêm hàm strip()
để xóa các khoảng trắng ở 2 đầu string. Các khoảng trắng này có thể làm cho chương trình sai về mặt logic.
Cuối cùng; chúng ta lưu mỗi mẫu dữ liệu thành một list, và lưu list này vào trong list data (list data chứa cả dataset).
Bài tập: Các bạn viết tiếp chương trình ở trên để tóm tắt dữ liệu Iris. Cụ thể, sau khi đọc file Iris.csv, các bạn cài đặt chức năng
1) Tính min, mean, max, và standard deviation cho 4 cột đặc trưng.
2) Đến số mẫu cho từng loài hoa