Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 180 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
180
Dung lượng
8,8 MB
Nội dung
GIÁO VÀ CƠNG L TP.HCM TRÌNH Biên ThS Nguy n M nh H ng www.hutech.edu.vn TRÌNH *1.2023.cmp1043* Các ý góp tài tailieuhoctap@hutech.edu.vn này, xin e-mail ban biên : I .I IV 1.1 1.2 PYTHON NUMBERS 1.2.1 Chuy n i ki u s Python 1.2.2 Hàm toán h c v i ki u d 1.3 li u s LI U TRONG PYTHON 1.3.1 List 1.3.2 Tuple 1.3.3 Set 12 1.3.4 Dictionary 20 1.4 XÂU K T V BI U TH C CH NH QUY 24 1.4.1 Xâu ký t 24 1.4.2 Bi u th c quy 33 1.5 C C C U TR U KHI N 39 1.5.1 L nh if, 39 1.5.2 Vòng l p for 42 1.5.3 Vòng l p while 43 1.5.4 T khóa break continue 43 1.6 HÀM V MODULES 45 1.6.1 Hàm 45 1.6.2 Module 52 1.7 L P TR NG (OBJECT ORIENTED PROGRAMMING) 54 1.7.1 T ng quan v l p tr nh ng 1.7.2 Kh i t o l p v kh i t o i 1.7.3 T nh th a k v TÓM i ng 54 ng 56 h nh 59 66 66 QUY 69 2.1 69 2.2 T GI I B I TO N B 2.3 M T S NH N X T V H 2.4 SO S NH C U TR C L P V TÓM QUY 69 QUY 73 QUY 74 76 76 78 II 3.1 KH I NI M V 3.2 NG D NG 78 I CH 3.2.1 Ý TR C TI P (INTERCHANGE SORT) 79 ng 79 3.2.2 Thu t toán 79 3.2.3 Cài 3.3 t 83 P N I B T (BUBBLE SORT) 84 3.3.1 Ý ng 84 3.3.2 Thu t toán 84 3.3.3 Cài 3.4 t 86 PN IB 3.4.1 Ý QUY (RECURSIVE BUBBLE SORT) 87 ng 87 3.4.2 Thu t toán 88 3.4.3 Cài 3.5 t 89 P CH N (INSERTION SORT) 90 3.5.1 Ý ng 90 3.5.2 Thu t toán 91 3.5.3 Cài 3.6 t 93 P CH 3.6.1 Ý QUY (RECURSIVE INSERTION SORT) 94 ng 94 3.6.2 Thu t toán 94 3.6.3 Cài TÓM t 95 96 96 BÀI 4: TÌM KI M 98 4.1 KH I NI M V NG D NG 98 4.2 TÌM KI M TU N T 4.2.1 (SEQUENTIAL SEARCHING) 99 nh ngh a 99 4.2.2 M gi 99 4.2.3 Cài t thu t toán 101 4.3 TÌM KI M NH PHÂN 102 4.3.1 nh 102 4.3.2 Mã gi 103 4.3.3 Cài TĨM t thu t tốn 105 107 107 BÀI 5: T P TIN V NGO I L (FILES AND EXCEPTIONS) 109 5.1 KH I NI M T P TIN 109 5.2 CD 5.3 GHI D LI U T T P TIN 110 LI U V O T P TIN 112 5.4 NGO I L 113 5.4.1 B t l i Exception v i l nh try 115 III 5.4.2 B t l i v i try Else 116 5.4.3 X lý l i v i t khóa Finally 116 5.4.4 T t o l i (Raising Exception) 117 5.4.5 B qua l i 118 5.5 D LI U B NG JSON 119 5.5.1 Gi i thi u v JSON Python 119 TÓM 125 125 N (GUI) 127 6.1 GI I THI U V 6.2 L P TR NH GIAO DI N 127 N TKINTER (TKINTER PACKAGE) 128 6.2.1 Gi i thi u v TKINTER 128 6.2.2 Các Widget c a TKINTER Python 129 6.2.3 B c c Python TKINTER 130 6.3 N PYQT (PYQT PACKAGE) 138 6.3.1 Gi i thi u v PYQT 138 6.3.2 Các Widget c a PYQT Python 139 6.3.3 Cơng c h tr l p trình giao di n v i PYQT 140 146 146 N NUMPY, MATPLOTLIB V 7.1 PANDAS 148 VI N NUMPY (NUMPY PACKAGE) 148 7.1.1 Gi i thi u v Numpy Python 148 7.1.2 Thao tác v i Numpy 149 7.2 N MATPLOTLIB (MATPLOTLIB PACKAGE) 155 7.2.1 Gi i thi u v Matplotlib Python 155 7.2.2 T o bi u gi n 156 7.2.3 T o bi u có nhãn 159 7.2.4 T o nhi u bi u m t hình v 159 7.2.5 Bi u c t 160 7.2.6 Bi u Histograms 161 7.2.7 Bi u tròn 162 7.3 N PANDAS (PANDAS PACKAGE) 163 7.3.1 Pandas Series 164 7.3.2 DataFrame 166 7.3.3 Dùng Pandas c file CSV 168 7.3.4 Dùng Pandas phân tích d li u 168 7.3.5 M t vài hàm nâng cao vi n Pandas 169 171 171 172 IV MƠ cung cho sinh viên trình Trong q trình sinh viên ơn trúc tìm lý Tkinter PyQT, quy, tin, trình giao lý giúp sinh viên xây Python toán cách liên quan phân tích phân tích phát linh t tùy theo nhu doanh thân, khác DUNG - Bài 1: PYTHON u trúc module, - Bài 2: trình Python xâu ký trình xét Bài 3: ví trúc Python tốn hàm minh quy, quy, so sánh Trình bày khái Trình bày ý bao quy, QUY: Trình bày khái quy, - Ôn toán trúc và cài quy toán toán bao Interchange sort, Bubble sort, Recursive Bubble sort, Insertion sort, Recursive Insertion sort, Selection sort - Bài 4: TÌM Trình bày khái Trình bày ý ví Tìm - Tìm Bài 5: Bài 6: cài tin, TRÌNH GIAO Tkinter tốn tìm tốn tìm bao t ng quan v tin, lý thao tác phân TIN VÀ NG ghi - minh lý Json Trình bày khái PyQT trình giao tìm V - Bài 7: NUMPY, MATPLOTIB VÀ PANDAS: Trình bày ba rãi phân tích bao Numpy, Matplolib, Pandas Tìm thao tác phép tốn quan hóa Python nâng cao có sinh viên có thu quy, Ngồi ra, sinh viên Python U trình Python có tìm có lý l p tr nh Tkinter PyQT tin ng i ng trình giao MƠN các nhà gian CÁCH dung làm nhà DUNG này, làm ơn bài thúc tồn tiêu tóm thúc ý và tìm thêm thơng tin liên quan dung câu bài sau câu ôn làm CÁC Source code tài Anaconda https://www.anaconda.com PyQT package, tài Link PyCharm Spyder Anaconda products Ngồi ra, cịn khác có - trên tích windows: trình giao Qt Designer thay Spyder là: VI - Visual Studio Code BÀI 1: PYTHO BÀI 1: PYTHON xong - trúc áp bao Numbers, List, Tuple, Strings, Set Dictionary vào - vòng trúc if for vòng - if, while Module Python - trình Python 1.1 GI I THI U CHUNG V PYTHON KI U D Trong b t k ngôn ng l p tr nh n o, bi n s v ki u d nh t Nh ng kh i ni m b n n y ti n LI U TRONG li u l hai kh i ni m h c nh ng ph n nâng cao b n xây d ng c c ng d ng, xây d ng c c thu t to n, phân t ch d li u, xây d ng Khi n i v ki u d li u l nh c t nh ch t gi ng Ch ng c h m n m t nh m c ng c ch th c i tr ng c c ng m t ho c nhi u b nh , c c ng m t s c xây d ng s n, v c th thao t c tr c ti p v i phân chia rõ ràng Python có Python chia thành sau: Number, List, Tuple, String, Set, Dictionary Python ngôn u ph i thu c v m t ki u d vào giá Các (mutable) m i th Python li u n o u l i ng, m i , i ng thay mà Python chia thành hai 1: list(), dict(), set(), bytearray() class có thay code BÀI 1: (class chúng không mutable, thay thay (immutable) 2: int, float, double, decimal, complex, bool, string, có list tuple list mutable, có khác chúng thay giá Cịn tuple chúng ID() khơng thay tuple, range, bytes Hai Ví giá cách có immutable khơng Trong q trình khác cho tuple tuple, trình lý thêm thay tuple khác xóa giá so gán vùng lúc giá khác gán giá 1.2 PYTHON NUMBERS Python nguyên, phân int, float, complex Python chúng nguyên phân phân phân - int: ngun khơng có - long: L Ví - ngun khơng - phân E e Ví : hai kích theo sau l -1 a p hàm isinstance() có x = 8.8, y = 2.5e2 a + bj, , b xác x = 10 x = 10L float: 10 phân Ví a b j Ví J) x = 2j + Python ta dùng hàm type() ví a="CNTT HUTECH" b= 9.5 c=9>8 d=2j+3 print(type(a)) # print(type(b)) # sau: 158 BÀI 7: N NUMPY, MATPLOTLIB V PANDAS Tham Ý 'y' Yellow 'k' Black 'w' White - Tham Tham Ý '-' Solid line ':' Dotted line ' ' Dashed line '-.' Dashed/dotted line Ví : import matplotlib.pyplot as plt import numpy as np ypoints = np.array([3, 8, 1, 10]) plt.plot(ypoints, marker = 'o', ms = 20, mec = 'r', linestyle = ' ') plt.show() trình: BÀI 7: 7.2.3 T o bi u Ta có VI N NUMPY, MATPLOTLIB V 159 có nhãn tham tính cho nhãn tiêu Ví xlabel (), ylabel () title () giá Nam qua: 10 11 12 13 PANDAS import numpy as np import matplotlib.pyplot as plt x = np.array([2017, 2018, 2019, 2020, 2021]) y = np.array([18500, 19400, 17750, 20220, 24430]) plt.plot(x, y,marker = '*', ms = 20,mec = 'r', linestyle = '-.') plt.title( giá plt.xlabel( ) plt.ylabel("Giá bán") Nam qua") plt.show() 7.2.4 T o nhi u bi u hàm subplots (), ta có m t hình v hình Ví 160 10 11 12 13 14 15 16 17 18 BÀI 7: N NUMPY, MATPLOTLIB V PANDAS import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([0, 1, 2, 3]) y = np.array([3, 8, 1, 10]) plt.subplot(1, 2, 1) plt.plot(x,y) #plot 2: x = np.array([0, 3]) y = np.array([10, 40]) plt.subplot(1, 2, 2) plt.plot(x,y) plt.show() trình: 7.2.5 Bi u Ví c t sinh viên import matplotlib.pyplot as plt import numpy as np BÀI 7: 10 11 12 N NUMPY, MATPLOTLIB V x = np.array([ , "Khá", "Trung bình", y = np.array([12, 46, 35, 7]) plt.bar(x,y) plt.title( plt.xlabel( plt.ylabel( kê PANDAS 161 ]) sinh viên") ) %") plt.show() trình: 7.2.6 Bi u Ví kê 170cm 10 Histograms cao 250 cao trung bình là 10 import matplotlib.pyplot as plt import numpy as np x = np.random.normal(170, 10, 250) plt.hist(x) plt.title( plt.xlabel( plt.ylabel( plt.show() kê cao") ) cao 250 ) 162 BÀI 7: N NUMPY, MATPLOTLIB V PANDAS trình: 7.2.7 Bi u trịn Ví theo import matplotlib.pyplot as plt import numpy as np y = np.array([12, 46, 35, 7]) plt.pie(y) plt.title( plt.show() kê trình sinh viên") sinh viên BÀI 7: 7.3 N NUMPY, MATPLOTLIB V PANDAS 163 VI N PANDAS (PANDAS PACKAGE) pandas Python thao tác cơng trình Python phát mã phân tích lý ngôn rãi khoa trúc riêng Dataframe Pandas cung trúc Chính nghiên lý làm linh cho pandas rãi Pandas phù - khác nhau, khơng SQL tính Excel - gian theo - ma khơng có tùy ý (khơng có khơng nhãn hàng - hình khác khơng - quan sát / dán nhãn vào Pandas xây Series (1 DataFrame (2 Pandas có dàng trúc kê pandas NumPy Hai hình tài chính, - trúc lý kê, khoa xã pandas khác lý mát, NaN, theo ý dùng mong qua sang - thay - kích có rõ ràng: nhãn DataFrame, v.v dùng chèn xóa DataFrame có rõ ràng qua nhãn Series, tính toán 164 BÀI 7: - N NUMPY, MATPLOTLIB V group by tách áp - PANDAS linh các cho dàng (ragged), indexed) trúc phân khác khác (differently- Python NumPy thành DataFrame - lát (slicing) thơng minh nhãn, thích (fancy indexing) (subsetting) - (merging) - Linh - Dán nhãn phân (joining) hình quan (reshaping) xoay (pivoting) (hierarchical) (có có nhãn - Các công IO delimited, Excel, (flat file) / CSV HDF5 nhanh - theo gian (time series) kê - Tích di - vi ngày ngày khác python SciPy, Matplotlib, Plotly, v.v Cài Pandas Anaconda ý: NumPy ta cài sau: dùng NumPy conda install pandas ta cài Anaconda có Pandas, ta dùng thay pd import pandas as pd Ta không nên khác tài quy 7.3.1 Pandas Series Series Numpy, hay bao NumPy, Dict thêm label Series có vơ bình thơng qua Series có tính BÀI 7: n N NUMPY, MATPLOTLIB V index, array, values, dtype, v.v ta có dtype xác copy, 1: series không bool index import pandas as pd a = [-5, 7, 12.5] myvar = pd.Series(a) print(myvar) trình: -5.0 7.0 12.5 dtype: float64 Ví 2: series index import pandas as pd a = [-5, 7, 12.5] myvar = pd.Series(a,index = ["a", "b", "c"]) print(myvar) print(myvar['a']) trình: a -5.0 b 7.0 c 12.5 dtype: float64 -5.0 Ví 3: series dict import pandas as pd diem = { 165 Series sang DatetimeIndex sang PeriodInd Ví PANDAS : 8.7, "Tốn": 8.0, "LTC": 9.2} thành Series 166 BÀI 7: N NUMPY, MATPLOTLIB V PANDAS myvar = pd.Series(diem) print(myvar) trình 8.7 Tốn 8.0 LTC 9.2 dtype: float64 7.3.2 DataFrame Dataframe trúc nhãn hai tính (spreadsheet) (table) khung vai trị trúc làm DataFrame DataFrame Series rãi quan Ví 10 11 hàng Series, DataFrame có quan series Pandas Vì 1: dataFrame sau import pandas as pd data = { "Cân : [65, 72, 60], cao": [170, 178, 170] } #load data into a DataFrame object: df = pd.DataFrame(data) print(df) trình Cân cao 65 170 72 178 60 170 ta dịng trên, DataFrame có Pandas tính loc (location) trúc giá hàng dịng BÀI 7: Ví 2: thơng tin 10 11 import pandas as pd data = { "Cân N NUMPY, MATPLOTLIB V dòng : [65, 72, 60], cao": [170, 178, 170] } #load data into a DataFrame object: df = pd.DataFrame(data) print(df.loc[2]) print(df.loc[[1,2]]) trình: Cân 60 cao 170 Name: 2, dtype: int64 Cân cao 72 178 60 170 Ví 10 11 12 3: tên cho dòng truy import pandas as pd data = { "Cân : [65, 72, 60], cao": [170, 178, 170] } #load data into a DataFrame object: df = pd.DataFrame(data, index = ["An", "Tài", print(df.loc["Tài"]) print(df) trình: Cân dịng theo tên 72 cao 178 Name: Tài, dtype: int64 Cân cao An 65 170 Tài 72 178 60 170 ]) PANDAS 167 168 BÀI 7: N NUMPY, MATPLOTLIB V 7.3.3 Dùng Pandas Ví load data PANDAS c file CSV file csv có dung sau import pandas as pd df = pd.read_csv('contact_demo.csv') print(df) trình: 7.3.4 Dùng Pandas phân tích d pháp xem nhanh thơng tin head() Ví file CSV li u ta xem tiêu sau: import pandas as pd df = pd.read_csv('contact_demo.csv') print(df.head(2)) trình sau dịng DataFrame BÀI 7: trình ý ta khơng in tiêu dịng Ngồi ra, ta có tham tiên dùng hàm tail() N NUMPY, MATPLOTLIB V cho hàm head() DataFrame xem dịng 7.3.5 M t vài hàm nâng cao DataFrame vi n Pandas Ví Ý df = dropna() cách xóa pd.read_csv('contact_demo.csv') new_df = df.dropna() df = ô file CSV Xóa dịng df.dropna(inplace = True) file CSV df = Thay pd.read_csv('contact_demo.csv') ô file CSV giá df.fillna('HUTECH',inplace = True) df = pd.read_csv('co Thay ntact_demo.csv') [columns].fillna() dịng dropna(inplace=True) pd.read_csv('contact_demo.csv') fillna() 169 PANDAS 'HUTECH',inplace giá = True) to_datatime() drop Format datatime Xóa dịng tra xem có duplicated() giá trùng khơng Tính tốn corr quan quan 170 BÀI 7: N NUMPY, MATPLOTLIB V Ví PANDAS Ý [-1:1] quan hai quan -1 có quan nó), quan quan BÀI 7: N NUMPY, MATPLOTLIB V PANDAS 171 TÓM Trong trình này, trình sau: - khái - thao tác - thao tác NUMPY, MATPLOTLIB PANDAS NUMPY, MATPLOTLIB PANDAS NUMPY, MATPLOTLIB PANDAS file CSV, JSON, có lý phân tích BÀI Bài 1: Cho file bitcoin trang: https://finance.yahoo.com/quote/BTC-USD/history?p=BTC-USD a file CSV b Lo i b c c d ng d c li u dịng d Tìm theo Bài 2: Cho tên, trùng liên e V bi u tr ng khác tin csv thông tin nhân viên danh, a Nh ng ô d ô sinh, g n gi tr l gán giá danh sách nhân viên theo d ô 1000 b Ti n x l d li u, lo i b c c d ng d li u c mã nhân viên, công tác li u tr ng c t ho c không h p l danh sách nhân viên theo tiêu chí khác nhau, ví danh, sinh e 2000, f kê 2000 theo 1000, lên) kê theo danh 1000 172 TÀI THAM [1]D Beazley, B.K Jones, [2]M O Faruque O'Reilly Media, 3rd ed., 2013 Sarker, Network Programming Publishing, 2014 [3]ZED A.SHAW, PYTHON the HARD [4]Tutorialspoint, Tutorial", 2016 [5]Python, https://docs.python.org/3 3rd ed Packt