Kết quả của đoạn văn bản trên như sau: Export và Import Jupyter Notebook Khi b ạn làm việc với Jupyter Notebook bạn có thể hoàn thành và muốn chia sẻ những gì mình làm v ới mọi người,
Trang 1BÀI TH ỰC HÀNH TIN HỌC CƠ SỞ
Trang 2BÀI 1: PYTHON VÀ MÔI TRƯỜNG LÀM VIỆC
1 Cài đặt Python:
- Download ph ần mềm: https://www.python.org/downloads/
- Nhắp đúp chuột vào file vừa download để cài đặt
Cài đặt Jupyter Notebook:
Jupyter Notebook là một công cụ hỗ trợ soạn thảo và thực thi chương trình của một số ngôn
ngữ lập trình trong đó có Python
- Chuyển về cửa sổ cmd: trên windows Chọn start rồi gõ cmd
- Gõ l ệnh: pip install jupyter (máy tính phải kết nối internet)
Mở Jupyter Notebook
Ch ạy Jupyter Notebook:
Gõ l ệnh: jupyter notebook
Trang 3Giao diện của Jupyter notebook để quản lý tất cả file notebook của mình tại đây
T ạo thư mục
- Ch ọn thư mục vừa tạo (Untitled Folder)
- Ch ọn Rename rồi đặt lại tên khác (TH Python)
T ạo mới một Notebook bằng cách chọn New -> Python 3; Trong giao diện trang chủ, để tạo
m ột tài liệu Notebook mới click vào New và chọn loại tài liệu như Python, Text file, Folder
Ch ọn tên sau đó đổi tên
Trang 4Ch ọn mục Python 3 Giao diện của trang Jupyter chạy ở môi trường máy tính như sau:
Trong giao di ện này có các thành phần như sau:
Ph ần 1: Tiêu đề tài liệu, mặc định chưa nhập tiêu đề là Untitled Khi nhấp chuột vào phần này,
một cửa sổ sẽ hiện ra để bạn nhập tên file
Ph ần 2: Thanh menu bao gồm các menu như:
File: các menu thao tác v ới file như tạo mới, lưu trữ, save as
Edit: các menu thao tác v ới nội dung file như copy, paste văn bản, cell, tìm kiếm và thay
th ế một nội dung trong file, chèn hình ảnh
View: menu điều chỉnh giao diện, hiển thị hoặc ẩn các thành phần giao diện trong Jupyter Notebook
Insert, Cell: c ác hành động liên quan đến Cell là thành phần cơ bản của một tài liệu Kernel: các thao tác v ới kernel hiện hành như thay đổi nếu muốn sử dụng ngôn ngữ khác, restart, shutdown
M ột số các menu khác
Ph ần 3: Thanh menu nhanh (shortcut menu) bao gồm các thao tác nhanh mà bạn thường làm
v ới một tài liệu, có một số nút trên đó chúng ta hay dùng nhất như:
Save file
Copy, paste
Thay đổi thứ tự các cell trong tài liệu
Chạy code trong tài liệu
Trang 5L ựa chọn loại văn bản trong cell:
Code: Cell này chứa mã Python và có thể thực hiện được
Markdown: Cell này ch ứa văn bản diễn giải
Ph ần 4: Nội dung tài liệu chứa các cell có nội dung là code hoặc markdown, đây là vùng chúng
ta sẽ làm việc chính
Th ực hiện một ví dụ đầu tiên, Hello world để xem Jupyter Notebook này hoạt động thế nào?
Vào Cell đầu tiên và đưa vào dòng code Python như sau:
print("Hello world!")
Ti ếp đó bạn bấm vào nút Run trong menu nhanh hoặc tổ hợp phím tắt Ctrl + Enter, kết quả sẽ
xu ất hiện tiếp theo ở ngay dưới cell đó
Trong ví d ụ trên chúng ta có 3 cell:
- Cell đầu tiên là dạng Markdown, chúng ta có thể đưa vào nội dung là văn bản, file hình
ảnh, bảng biểu, danh sách
Trang 6- Cell th ứ hai nội dung là code Python print("Hello world!") và khi bạn bấm và Run hoặc
tổ hợp phím Ctrl + Enter thì kết quả của dòng code hiển thị ngay ở bên dưới
- Sau khi th ực hiện một cell thì Jupyter Notebook tự động chèn thêm một cell mới chưa
có nội dung gì ở ngay dưới
Thêm n ội dung vào Jupyter Notebook
Như trong ví dụ Hello world ở trên chúng ta đã thêm vào một nội dung để diễn giải thêm cho đoạn code print("Hello world") Nội dung này có thể là một đoạn văn bản bao gồm các tiêu đề, đoạn văn bản, hình ảnh, danh sách
Để thêm nội dung văn bản vào Jupyter chúng ta phải lựa chọn dạng của cell là Markdown Jupyter Notebook cho phép s ử dụng Markdown là một ngôn ngữ đánh dấu, nó là tập hợp các
ký hi ệu tương ứng với một số thẻ trong ngôn ngữ HTML.Tiêu đề trong ngôn ngữ Markdown tương ứng với các thẻ H1, H2 H6 trong HTML, trong markdown sử dụng ký tự #, H1 tương ứng với #, H2 tương ứng với ##,
Sau khi đánh xong văn bản trong Cell, bấm nút Run hoặc tổ hợp phím tắt Ctrl + Enter, văn bản sau định dạng mới hiện ra
Trang 7Chúng ta có thể định dạng văn bản với ngôn ngữ Markdown, danh sách các định dạng này như sau: S ử dụng dấu * để bắt đầu và kết thúc một đoạn bạn muốn in nghiêng Sử dụng dấu ** để
b ắt đầu và kết thúc một đoạn bạn muốn bôi đậm, tương ứng với thẻ b trong HTML
S ử dụng _ để bắt đầu và kết thúc một đoạn bạn muốn gạch chân, tương ứng với thẻ u trong HTML
K ết quả bạn sẽ thấy khi chạy là văn bản đã được định dạng như mong muốn với thẻ HTML
Trang 8K ết quả nhận được khi bạn thực thi cell này
Trang 94.3.5 Các thành ph ần khác trong Markdown
Ngoài các thành ph ần trên, chúng ta cũng hay dùng các thành phần văn bản khác như ảnh, đường dẫn tương ứng với các thẻ img, a trong HTML
Kết quả của đoạn văn bản trên như sau:
Export và Import Jupyter Notebook
Khi b ạn làm việc với Jupyter Notebook bạn có thể hoàn thành và muốn chia sẻ những gì mình làm v ới mọi người, bạn có thể export tài liệu này ra rất nhiều các dạng khác nhau như:
Trang 10Trong các d ạng trên, chúng ta sẽ hay chia sẻ với nhau dạng file Notebook ipynb, các file này
có thể import lại vào Jupyter Notebook và thực hiện Để export ra file sử dụng menu File -> Download as -> Notebook(.ipynb)
Khi b ạn có một file Notebook (.ipynb) bạn muốn import vào hệ thống, bạn sử dụng nút Upload
ở trang chủ Jupyter Notebook và trỏ đến file cần import Khi đó file Jupyter Notebook sẽ xuất
hi ện trong danh sách trang chủ và chỉ cần nhấp vào là một tab mới xuất hiện với nội dung tài
Trang 11Bài 2 Viết chương trình nhập số lượng và đơn giá của sản phẩm tính thành tiền và thuế giá trị gia tăng phải trả theo công thức sau: thành tiền =số lượng * đơn giá
Thuế giá trị gia tăng=10%thành tiền
Bài 3 Nhập hai số, tính tổng, hiệu, tích, thương của hai số đó
Bài 4 Nh ập vào độ dài ba cạnh a , b , c của một tam giác Tính diện tích tam giác bằng công
th ức Heron như sau: 𝑝 = √𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐) với p là nửa chu vi
Gợi ý: Hàm lấy căn bậc 2 sqrt()
from math import sqrt
Bài 1 Nh ập chỉ số điện kế tháng trước và tháng này Hãy tính số kW tiêu thụ và
ti ền điện cho mỗi hộ dựa vào bảng giá sau:
Trang 12Bài 2 Vi ết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 2000 và 3200 (tính cả 2000 và 3200) Các số thu được sẽ được in thành chuỗi trên
m ột dòng, cách nhau bằng dấu phẩy
G ợi ý: Sử dụng range(#begin, #end)
Bài 1 Viết chương trình nhập vào từ bàn phím số nguyên nvà hiển thị ra màn hình:
Nếu n là số nguyên dương thì hiển thị ra: n là số dương
Nếu nlà số nguyên âm thì hiển thị ra: n là số âm
Nếu n là số 0 thì hiển thị ra: n là bằng không
Hướng dẫn:
Nhập giá trị n
- Nếu n>0 xuất ra mà hình; n là số dương
- Nếu n<0 xuất ra mà hình; n là số âm
- Nếu n=0 xuất ra mà hình; n là bằng 0
Bài 2 Nhập tiền gửi, số tháng gửi và lãi suất 1 tháng Tính số tiền có được sau khi gửi
G ợi ý:
D ữ liệu vào: tienGui, thang, laiSuat
D ữ liệu ra: số tiền có được sau khi gửi
G ợi ý: Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là
dữ liệu được người dùng nhập vào từ giao diện điều khiển
Code m ẫu:
values = []
for i in range(1000, 3001):
s = str(i)
if ( int (s[0])%2==0) and ( int (s[1])%2==0) and
( int (s[2])%2==0) and ( int (s[3])%2==0):
values.append(s)
print ("," join (values))
Bài 5 Một website yêu cầu người dùng nhập tên người dùng và mật khẩu để đăng ký Viết chương trình để kiểm tra tính hợp lệ của mật khẩu mà người dùng nhập vào
Trang 13Các tiêu chí kiểm tra mật khẩu bao gồm:
1 Ít nhất 1 chữ cái nằm trong [a-z]
2 Ít nhất 1 số nằm trong [0-9]
3 Ít nhất 1 kí tự nằm trong [A-Z]
4 Ít nhất 1 ký tự nằm trong [$ # @]
5 Độ dài mật khẩu tối thiểu: 6
6 Độ dài mật khẩu tối đa: 12
Chương trình phải chấp nhận một chuỗi mật khẩu phân tách nhau bởi dấu phẩy và kiểm tra xem chúng có đáp ứng những tiêu chí trên hay không Mật khẩu hợp lệ sẽ được in, mỗi mật khẩu cách nhau bởi dấu phẩy
Ví dụ mật khẩu nhập vào chương trình là: ABd1234@1,a F1#,2w3E*,2We3345
Thì đầu ra sẽ là: ABd1234@1
Gợi ý: Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là
dữ liệu được người dùng nhập vào từ giao diện điều khiển
Trang 14Gợi ý: Trong trường hợp dữ liệu đầu vào được cung cấp, bạn hãy chọn cách để người dùng
Bài 3 Viết hàm tính diện tích tam giác khi biết ba cạnh, hàm phân loại tam giác khi biết
3 cạnh: đều, vuông cân, cân, vuông, thường, không phải tam giác Sử dụng các hàm trên, nhập 3 số thực a, b, c thông báo loại tam giác và diện tích hoặc thông báo không là tam giác
Trang 15Bài 5 Viết hàm tính𝑐𝑛𝑘 =𝑘!(𝑛−𝑘)!𝑛! Dùng hàm đó để tính cho n, k nhập từ bàn phím
[('John', '20', '90'), ('Jony', '17', '91'), ('Jony', '17', '93'), ('Json', '21', '85'), ('Tom', '19', '80')]
G ợi ý: Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả định là
d ữ liệu được người dùng nhập vào từ giao diện điều khiển
S ử dụng itemgetter để chấp nhận nhiều key sắp xếp
Trang 16G ợi ý: Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó phải được giả định là một input được nhập từ giao diện điều khiển
Code m ẫu:
freq = {} # frequency of words in text
line = input()
for word in line.split():
freq[word] = freq get (word,0)+1
Câu h ỏi: Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả
1 và 20) và các giá trị bình phương của chúng
G ợi ý: Sử dụng dict[key]=value để nhập mục vào dictionary
S ử dụng toán từ ** để lấy bình phương của một số
Sử dujnng range() cho các vòng lặp
Trang 17Bài 7:
Vi ết một chương trình để tạo tuple khác, chứa các giá trị là số chẵn trong tuple (1,2,3,4,5,6,7,8,9,10) cho trước
Gợi ý: Sử dụng for để lặp tuple
S ử dụng tuple() để tạo tuple từ list
G ợi ý: Sử dụng filter() để lọc các yếu tố trong một list
S ử dụng lambda để định nghĩa hàm chưa biết
Bài 1: Cho b ảng dữ liệu về giá vàng trong tháng như sau:
Ngày Giá vàng bán ra Giá vàng mua vào
Hãy vi ết chương trình lưu trữ dữ liệu dưới dạng file CSV
Bài 2: V ới dữ liệu trong file CSV đã tạo trong bài 1, viết chương trình đọc và hiển thị dữ liệu từ file CSV này và thêm các tiêu đề đầu vào dữ liệu kết quả như hình sau:
Trang 18Bài 3: Cho b ảng dữ liệu về lỗi vi phạm của sinh viên như sau:
Tên sinh viên Vắng lý thuyết Vắng thực hành Không nộp bài
Hãy vi ết chương trình lưu trữ dữ liệu dưới dạng file CSV
Bài 4: V ới dữ liệu trong file CSV đã tạo trong bài 3, viết chương trình đọc và hiển
th ị dữ liệu từ file CSV này và thêm các tiêu đề đầu vào dữ liệu kết quả như hình sau:
Bài 5: Cho b ảng dữ liệu về giá vàng trong tháng 3 như sau:
Ngày Giá vàng bán ra Giá vàng mua vào
Trang 19# Thêm tiêu đề đầu vào dữ liệu
df.columns = ['Ngày','Giá vàng bán ra', 'Giá vàng mua vào']
# Thêm tiêu đề đầu vào dữ liệu
df.columns = ['Tên','Vắng lý thuyết', 'Vắng thực hành', 'Không nộp bài']
df.head()
Bài 5:
import pandas as pd
ngay = ['1/3','2/3','3/3','4/3','5/3','6/3','7/3']
Trang 20giaban = [46,47,46,45,46,46,45]
giamua = [45,46,45.5,44.5,45,45.5,44.5]
dulieu = zip(ngay, giaban, giamua)
cot = ['Ngày', 'Giá vàng bán ra', 'Giá vàng mua vào']
df = pd.DataFrame(data = dulieu,columns=cot)
writer = pd.ExcelWriter('Banggiavang3.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1')
writer.save()
Trang 21BÀI 6: LÀM VI ỆC CÁC LOẠI FILE DỮ LIỆU
Bài 1: V ới dữ liệu trong file Excel đã tạo trong bài 4.5, viết chương trình đọc và hiển thị dữ liệu từ file Excel này như kết quả hình sau:
Bài 2: Cho 2 b ảng dữ liệu về giá vàng trong tháng như sau:
Trang 22Bài 4: Cho b ảng dữ liệu về lỗi vi phạm của sinh viên như sau:
Tên sinh viên Vắng lý thuyết Vắng thực hành Không nộp bài
Hãy vi ết chương trình lưu trữ dữ liệu dưới dạng file SQL
Bài 5: V ới dữ liệu trong file SQL đã tạo trong bài 1, viết chương trình đọc và
hi ển thị dữ liệu của những sinh viên có số buổi vắng lý thuyết (vangLT) lớn hơn hoặc bằng 2 từ file SQL này như kết quả hình sau:
Trang 23CODE M ẪU Bài 1:
dulieu = zip(ngay, giaban, giamua)
cot = ['Ngày', 'Giá vàng bán ra', 'Giá vàng mua vào']
df = pd.DataFrame(data = dulieu,columns=cot)
ngay1 = ['4/4','5/4','6/4','7/4','8/4','9/4','10/4']
giaban1 = [48,47,46.5,46,46.5,47,47.5]
giamua1 = [47,46.5,45.5,45,46,46.5,46.5]
dulieu1 = zip(ngay1, giaban1, giamua1)
cot1 = ['Ngày', 'Giá vàng bán ra', 'Giá vàng mua vào']
Trang 24Bài 4:
import pandas as pd
import os
import sqlite3 as lite
ten = ['Trung', 'Cảnh', 'Bảo', 'Quốc', 'Tùng']
vangLT = [3, 5, 1, 0, 2]
vangTH = [2, 1, 0, 0, 1]
khongNB = [0, 3, 0, 2, 1]
dulieu = zip(ten, vangLT, vangTH, khongNB)
df = pd.DataFrame(data = dulieu, columns=['Ten','vangLT', 'vangTH', 'khongNB'])
#Tạo tập tin cơ sở dữ liệu Bangvipham.db
sql = 'SELECT * from Ketoan_K43A where vangLT >= 2'
sales_data_df = pd.read_sql(sql, engine)
sales_data_df
Trang 26BÀI 7: THAO TÁC CƠ BẢN TRÊN DỮ LIỆU
Bài 1: Cho t ập tin dataYear.csv với dữ liệu về tuổi thọ của mỗi người như sau:
Hãy vi ết chương trình xử lý ngoại lệ trên trường dữ liệu tuổi trong khoảng giá trị
trung bình của độ lệch chuẩn với dung sai là 1.2 (những giá trị nằm ngoài vùng này sẽ bị loại bỏ) Hiển thị dữ liệu đã được xử lý ngoại lệ với kết quả như hình sau:
Trang 27Bài 2: V ới dữ liệu trong file CSV đã cho trong bài 1, hãy viết chương trình tìm
và xóa nh ững phần tử khác biệt với những phần tử nằm trong 20% đến 80% của trường tuổi với độ lệch chuẩn và dung sai là 0.9 Xuất file dữ liệu CSV đã được
x ử lý ngoại lệ với kết quả như hình sau:
Bài 3: Vi ết chương trình tạo tập tin dữ liệu CSV như hình sau:
Trang 28nh ận giá trị 0 hoặc 1 Chuyển đổi dữ liệu giá trị cho trường Giới tính: giá trị
“Nam” là: 1 và “Nữ” là: 0 Chuyển đổi giá trị cột td_CN: giá trị 1 thành ‘có’, giá trị 0 thành ‘không’.Xóa các bản ghi trùng lặp, chỉ giữ lại 1 bản ghi Lưu và
hi ển thị dữ liệu kết quả như hình sau:
Trang 30#Xóa các dòng dữ liệu nằm ngoài giá trị biên
copydf = copydf.drop(copydf[copydf['tuoi']> gtbien_tren].index) copydf = copydf.drop(copydf[copydf['tuoi']< gtbien_duoi].index)
#Hiển thị dữ liệu đã được xử lý ngoại lệ
Trang 33BÀI 8: THAO TÁC CƠ BẢN TRÊN DỮ LIỆU
Bài 1: V ới tập tin dữ liệu lưu trữ trong bài 5 ở trên, viết chương trình thực hiện các yêu cầu sau:
- Xóa c ột Nam và cột Nữ
- Thêm c ột Hưu trí với dãy giá trị cho trước là: [1,0,0,1,0,1]
- Thêm c ột hệ số lương với giá trị cho trước là: [6.4,3.99,2.97,5.4,4.2,8.2]
- Thêm c ột lương cơ bản với giá trị bằng Hệ số lượng*1350000
- Đổi tất cả tên tiêu đề sang chữ thường
- S ửa đổi giá trị của trường Trình độ thạc sỹ, nếu giá trị lớn hơn bằng 1 thì kết
qu ả là 1
- Lưu trữ dưới dạng tập tin CSV và hiển thị dữ liệu như hình sau:
Bài 2: V ới tập tin dữ liệu CSV lưu trữ trong bài trên, viết chương trình thực hiện các yêu c ầu sau:
- Lọc 3 trường dữ liệu: hoten, ngaysinh, gioitinh
- Lọc 3 dòng đầu tiên của tập tin dữ liệu
- Hiển thị những bản ghi thỏa điều kiện có trường hoten xuất hiện chữ “Thị”
- Lọc những bản ghi có giới tính 1
- Lọc những bản ghi có giới tính là 0 và hưu trí là 1
- L ọc dữ liệu những bản ghi có giới tính là 0 hoặc trình độ tiến sỹ là 1
- L ấy 3 dòng dữ liệu một cách ngẫu nhiên
Bài 3:V ới tập tin dữ liệu CSV lưu trữ như trong hình dưới đây:
Trang 34Viết chương trình thực hiện các yêu cầu sau:
- Đếm số nhân viên có giới tính là Nữ (giá trị 0), số nhân viên có giới tính là
Nam (giá trị 1)
- Đếm số nhân viên Nữ và có trình độ Thạc sỹ
- Đếm số nhân viên có giới tính là Nữ hoặc nhân viên có trình độ Tiến sỹ
- Tính trung bình trường dữ liệu Lương cơ bản của những người có trình độ là
c ử nhân
- Xác định mức lương cơ bản cao nhất của nhân viên có trình độ cử nhân
- Xác định mức lương cơ bản thấp nhất của nhân viên nữ có trình độ cử nhân
Bài: V ới tập tin dữ liệu CSV như trong bài 1 ở trên,
- Vi ết chương trình thực hiện hiển thị và sắp xếp dữ liệu tăng dần theo cột Lương
cơ bản, như hình dưới:
- Viết chương trình thực hiện hiển thị và sắp xếp dữ liệu tăng dần theo cột Giới tính, gi ảm dần theo cột Lương cơ bản, như hình dưới: