Hướng dẫn dùng for examples python
Show
1. Vòng lặp là gì?Vòng lặp (cấu trúc lặp): Là những cấu trúc lập trình cho phép thực hiện một hoặc một số câu lệnh lặp đi lặp lại chừng nào điều kiện còn thỏa mãn. Trong thân của vòng lặp có thể bao gồm một hoặc một số các câu lệnh. Vòng lặp cho phép ta thực hiện các thao tác, hoặc các câu lệnh tính toán nhiều lần, nhằm giúp lập trình viên giảm thời gian và công sức viết code, tận dụng được khả năng và tốc độ xử lý của máy tính. Thông thường, khi sử dụng vòng lặp, ta nên khai báo các biến đếm. Biến đếm là những biến được khai báo ở trong vòng lặp, và phạm vi của biến đếm chỉ trong vòng lặp. Biến đếm đượ sử dụng để kiểm soát vòng lặp, giá trị của nó sẽ thay đổi sau mỗi lần lặp. Python hỗ trợ 2 loại vòng lặp sau:
2. Vòng lặp While trong PythonVòng lặp while là vòng lặp sẽ được thực hiện chừng nào điều kiện còn thỏa mãn. Vòng lặp while được sử dụng khi ta chưa biết trước số lần lặp. Cú pháp của vòng lặp while:Ví dụ về vòng lặp while trong Python:while (count <9): print 'The count is: ', count count = count + 1 print "Good bye!" Trong ví dụ trên, ta đã sử dụng vòng lặp
Kết quả của chương trình đúng như trên, in ra giá trị của biến 3. Vòng lặp for trong PythonVòng lặp for được sử dụng khi ta đã biết trước số lần lặp, và dùng để duyệt qua một danh sách các phần tử của một tuyển tập, hoặc một chuỗi. Cú pháp của vòng lặp for trong Python:for interating_var in sequence: statement(s) Khi sử dụng vòng lặp for, ta cần khai báo một biến đếm, để duyệt qua tập hợp. Ví dụ về vòng lặp for:fruits = ["apple", "banana", "cherry"] for x in fruits: print (x) Ở trong ví dụ này, ta khai báo một list gồm 3 phần tử, là 3 string. Sau đó, ta sử dụng
vòng lặp for để duyệt qua list tên là Trong mỗi lần lặp, ta có in ra giá trị của biến đếm. Kết quả của vòng lặp đã in ra giá trị của từng phần tử trong list. Ngoài ra, ta có thể sử dụng vòng lặp for để duyệt và in ra từng ký tự trong một chuỗi, như ví dụ sau: Ở đây, ta đã duyệt và in ra từng ký tự trong chuỗi “ Kết quả của chương trình như sau: Chúc mừng bạn đã biết cách sử dụng vòng lặp trong PythonNhư vậy là qua bài hướng dẫn tự học Python này bạn đã biết sử dụng vòng lặp while, vòng lặp for trong Python. Trong khi sử dụng vòng lặp for / while thì hãy cẩn thận. Bởi nếu bạn nhầm lẫn (quên điều kiện / điều kiện sai) nó có thể dẫn đến một vòng lặp vô hạn khiến máy bạn bị treo. Thư viện pandas python là gì? Nó có thể giúp bạn những gì và làm sao để sử dụng thư viện pandas này trong lập trình python. Hãy cùng tôi đi tìm câu trả lời cho các câu hỏi trên trong bài viết ngày hôm nay. Tôi tin rằng đây là một bài viết cực kỳ hữu ích. Nó chắc chắn sẽ đem lại cho các bạn nhiều kiến thức bổ ích
và làm chủ được cách sử dụng thư viện này. Toàn bộ source code hướng dẫn của bài học bạn có thể xem và tải về tại đây. Thư viện pandas trong python là một thư viện mã nguồn mở, hỗ trợ đắc lực trong thao tác dữ liệu. Đây cũng là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ của ngôn ngữ lập trình python. Thư viện này được sử dụng rộng rãi trong cả nghiên cứu lẫn phát triển các ứng dụng về khoa học dữ liệu. Thư viện này sử dụng một cấu trúc dữ liệu riêng là Dataframe. Pandas cung cấp
rất nhiều chức năng xử lý và làm việc trên cấu trúc dữ liệu này. Chính sự linh hoạt và hiệu quả đã khiến cho pandas được sử dụng rộng rãi. Tại sao lại là thư viện pandas?
Bây giờ chúng ta sẽ bắt đầu học cách sử dụng thư viện pandas python. Nhưng trước khi bắt đầu, hãy import thư viện pandas nhé. Chúng ta sẽ dùng cả thư viện matplotlib nữa. Nếu bạn chưa biết về thư viện matplotlib, hãy đọc bài viết này trước nhé. # Render our plots inline %matplotlib inline import pandas as pd import matplotlib.pyplot as plt import randomĐọc file csv sử dụng thư viện pandasBạn có thể dễ dàng đọc vào một file .csv bằng cách sử dụng hàm read_csv và được trả về 1 dataframe. Mặc định, hàm này sẽ phân biệt các trường của file csv theo dấu phẩy. Cách đọc hết sức đơn giản như sau: peoples_df = pd.read_csv['./people.csv']Bạn có thể in ra n bản ghi đầu tiên của dataframe sử dụng hàm head. Ngược lại của hàm head là hàm tail peoples_df.head[5]Kết quả in ra như sau: Tuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm read_csv như:
Ví dụ: peoples_df = pd.read_csv['./people.csv', encoding='utf-8', header=None, sep=','] peoples_df.head[5]Khi tôi chỉ định không có header, dòng header của chúng ta đã biến thành 1 bản ghi dữ liệu: Bạn đọc có thể xem mô tả đầy đủ từng tham số của hàm read_csv của thư viện pandas python tại đây. Thao tác với dataframe trong pandasXem thông tin của dataframeBạn có thể xem thông tin của dataframe vừa đọc vào bằng cách sử dụng hàm .info[] hoặc xem kích thước của dataframe này với thuộc tính shape. Cụ thể như sau: # Xem chiều dài của df, tương đương shape[0] print['Len:', len[peoples_df]] # Xem thông tin dataframe vừa đọc được peoples_df.info[] # Xem kích thước của dataframe print['Shape:', peoples_df.shape]Và kết quả thu được là: Len: 40Truy xuất dữ liệu trên dataframeLấy 1 cột theo tên cột Để chỉ định cột muốn lấy, bạn chỉ cần truyền vào tên cột như sau: peoples_df['name']Lấy theo nhiều cột Thay vì truyền vào 1 string thì hãy truyền vào 1 list các tên cột. Mình thêm .head[5] để chỉ in ra 5 bản ghi đầu tiên cho ngắn, mặc định sẽ lấy hết. peoples_df[['name', 'age']].head[5]Lấy bản ghi theo chỉ số Để lấy một hoặc nhiều bản ghi liên tiếp trong dataframe, sử dụng cơ chế trượt theo chỉ số giống như trên list trong python. Lấy 5 bản ghi đầu tiên: peoples_df[0:5]Trong trường hợp này kết quả giống như hàm head phía trên. Đều là lấy 5 bản ghi đầu tiên. Bạn cũng có thể kết hợp lấy theo hàng và cột mong muốn: peoples_df[['name', 'age']][:5]Lấy các bản ghi theo điều kiện young_pp = peoples_df[peoples_df['age'] < 25] young_pp[:5]Một ví dụ khác: Lấy tất cả các bản ghi chứa thông tin của người có chức danh là giáo sư: professor = peoples_df[peoples_df.title == 'Professor'] professor.head[5]Hoặc 1 ví dụ so sánh chuỗi như sau: name_compare = peoples_df['name'].str.contains['Rosella'] name_compare.head[5]Kết quả thu được là một dataframe có 1 cột chưa 2 giá trị True hoặc False 0 True 1 False 2 False 3 False 4 False Name: name, dtype: boolLấy giá trị trả về numpy arrays Để lấy giá trị của một cột trả về dưới dạng numpy array trong thư viện pandas python, bạn chỉ cần thêm .values vào sau, ví dụ: peoples_df['name'].valuesOutput bạn thu được như sau: array[['Burks, Rosella ', 'Avila, Damien ', 'Olsen, Robin ', 'Moises, Edgar Estes', 'Brian, Heath Pruitt', 'Claude, Elvin Haney', 'Mosley, Edmund ', 'Derek, Antoine Mccoy', 'Hawkins, Callie ', 'Pate, Andrea ', 'Austin, Liz ', 'Kendrick, Reba Alford', 'Sims, Angelina ', 'Mullins, Kimberly ', 'Chuck, Lloyd Haney', 'Payne, Ladonna ', 'Baxter, Johnathan Browning', 'Weiss, Gilbert ', 'Deirdre, Florence Barrera', 'Fernando, Toby Calderon', 'Garrison, Patrica ', 'Effie, Leila Vinson', 'Buckley, Rose ', 'Stanton, Kathie ', 'Banks, Shannon ', 'Barnes, Cleo ', 'Brady, Nellie ', 'Katheryn, Ruben Holt', 'Michael, Dianne ', 'Grant, Adam ', 'Head, Kurtis ', 'Berger, Jami ', 'Earline, Jaime Fitzgerald', 'Evelyn, Summer Frost', 'Quentin, Sam Hyde', 'Dunlap, Ann ', 'Shields, Rich Pena', 'Page, Winnie ', 'Sparks, Ezra ', 'Kaufman, Elba '], dtype=object]Nếu bạn quan tâm tới numpy array, hãy tìm đọc bài hướng dẫn về numpy Thêm, sửa, xóa trong dataframeThêm cột từ dữ liệu mới Để thêm cột vào một dataframe có sẵn. Trước tiên, bạn cần có 1 list dữ liệu tương ứng với cột mà bạn muốn thêm. Tức là chiều dài của list phải tương ứng với số bản ghi của dataframe bạn muốn thêm. Ở đây, tôi sẽ sử dụng thư viện random để sinh ngẫu nhiên một list năm sinh và thêm vào dataframe như sau: df_len = len[peoples_df] birthday = [random.randrange[1980, 2000, 1] for i in range[df_len]] peoples_df['birthday'] = birthday peoples_df.tail[5]Thêm cột dựa vào dữ liệu đã có Giả sử ở đây mình muốn thêm cột is_young có giá trị True nếu tuổi < 25 và False trong trường hợp còn lại. Khởi tạo cột mới có giá trị rỗng Sử dụng cú pháp đơn giản như dưới đây, bạn sẽ có một trường mới và tất cả các giá trị là None peoples_df['new_column'] = NoneThêm bản ghi trong dataframe Về vấn đề thêm bản ghi, chúng ta thường ít khi sử dụng nên tôi sẽ không trình bày. Bạn đọc quan tâm có thể đọc thêm tại tài liệu này Sửa giá trị của cột Để sửa giá trị của 1 cột, bạn làm tương tự như thêm mới cột. Nhưng khác với thêm ở chỗ là tên cột bạn truyền vào đã có trong dataframe. Còn thêm là 1 tên trường mới hoàn toàn chưa có. Chẳng hạn, bạn muốn thay đổi trường name, bạn chỉ cần làm như sau: peoples_df['name'] = xxx #list các tên mới có chiều dài bằng chiều dài của dataframe // Hoặc reset trường name về None peoples_df['name'] = NoneXóa cột trong dataframe Bạn có thể sử dụng một trong các cách sau: peoples_df.drop['tên cột cần xóa', axis=1] # Xóa 1 cột peoples_df.drop[['cột 1', 'cột 2'], axis=1] # Xóa nhiều cột df.drop[columns=['B', 'C']] # Xóa các cột có tên là B và CXóa bản ghi theo chỉ số peoples_df.drop[[0, 1]] # Xóa bản ghi ở chỉ số 1 và 2Hiểu dữ liệu trong dataframeThư viện pandas python cung cấp cho bạn một số hàm giúp bạn hiểu về cấu trúc, phân bố của dữ liệu. Dưới đây là cách để bạn khám phá và hiểu dữ liệu của mình. Tôi đã bổ sung trường age vào file people.csv và tiến hành đọc lại. peoples_df['age'] 0 25 1 23 2 21 3 18 4 30 5 35 . . . 38 25 39 25 Name: age, dtype: int64Sử dụng hàm describe[] cho bạn các thống kê cơ bản về dữ liệu: peoples_df.describe[]Xem thống kê cụ thể hơn trên từng cột như sau: peoples_df['age'].value_counts[] 25 21 28 6 35 3 29 2 23 2 22 2 30 1 24 1 21 1 18 1 Name: age, dtype: int64Bạn cũng có thể vẽ đồ thị xem phân bố giá trị của một trường trong dataframe như sau: peoples_df['age'].value_counts[].plot[kind='bar']Tạo mới dataframeCó một vài cách để tạo ra dataframe trong thư viện pandas python. Bạn có thể dùng cách mà bạn cho là dễ sử dụng, đôi khi cũng phải tùy vào từng trường hợp mà nên chọn cách nào nữa. Tạo mới dataframe từ python dictionarypeoples = {'name': ['Nguyễn Văn Hiếu', 'Hiếu Nguyễn Văn'], 'age': [28, 28], 'website': ['//nguyenvanhieu.vn', None]} df = pd.DataFrame[peoples] print[df]Bạn sẽ có 1 dataframe như sau: name age website 0 Nguyễn Văn Hiếu 28 //nguyenvanhieu.vn 1 Hiếu Nguyễn Văn 28 NoneTạo mới dataframe từ các python listtxts = ['chỗ này ăn cũng khá ngon', 'ngon, nhất định sẽ quay lại', 'thái độ phục vụ quá tệ'] labels = [1, 1, 0] df = pd.DataFrame[] df['txt'] = txts df['label'] = labels print[df]Và dataframe mà bạn sẽ thu được là: txt label 0 chỗ này ăn cũng khá ngon 1 1 ngon, nhất định sẽ quay lại 1 2 thái độ phục vụ quá tệ 0Lưu ý: các list này phải có cùng kích thước. Một số thao tác khác trên dataframeSắp xếp dataframeVới thư viện pandas python, bạn có thể sắp xếp dataframe tăng dần, hay giảm dần theo 1 hoặc nhiều cột chỉ định. # Sắp xếp df tăng dần theo cột nào đó df = pd.DataFrame[{'name': ['Nam', 'Hiếu', 'Mai', 'Hoa'], 'age': [18,18,17,19]}] print['Before sort\n', df] df = df.sort_values['age', ascending=True] print['After sort\n', df]Kết quả thu được như sau: Before sort name age 0 Nam 18 1 Hiếu 18 2 Mai 17 3 Hoa 19 After sort name age 2 Mai 17 0 Nam 18 1 Hiếu 18 3 Hoa 19Bạn có thể sắp xếp theo nhiều cột có độ ưu tiên giảm dần, bằng cách truyền vào list tên cột. Ví dụ: df.sort_values[['age', 'name'], ascending=True] Nối 2 dataframeBạn có thể nối 2 dataframe thành 1 dataframe mới bằng cách sử dụng hàm append của thư viện pandas. # Gộp 2 dataframe df1 = pd.DataFrame[{'name': ['Hiếu'], 'age': [18], 'gender': ['male']}] df2 = pd.DataFrame[{'name': ['Nam', 'Mai', 'Hoa'], 'age': [15,17,19]}] df = df1.append[df2, sort=True] print[df]Kết quả: age gender name 0 18 male Hiếu 0 15 NaN Nam 1 17 NaN Mai 2 19 NaN HoaXáo trộn các bản ghi trong dataframeTrong xử lý dữ liệu, bạn chắc chắn sẽ cần tới việc xáo trộn dữ liệu. Rất may, thư viện pandas có thể giúp chúng ta làm việc đó. # Xáo trộn các hàng trong df - shuffle dataframe rows df = pd.DataFrame[{'name': ['Hiếu', 'Nam', 'Mai', 'Hoa'], 'age': [18,15,17,19]}] print['Before shuffle\n', df] df = df.sample[frac=1].reset_index[drop=True] print['After shuffle\n', df]Kết quả[Có thể khác nhau nhé – xáo trộn mà] Before shuffle name age 0 Hiếu 18 1 Nam 15 2 Mai 17 3 Hoa 19 After shuffle name age 0 Mai 17 1 Nam 15 2 Hiếu 18 3 Hoa 19Giải thích thêm:
Lưu dataframe về file csvThư viện pandas python cho phép bạn lưu lại dataframe chỉ với một dòng code. Quá đơn giản phải không nào? df.to_csv['comments.csv']Bạn có thể mở file để xem kết quả lưu: Các tham số của hàm to_csv khá tương tự với hàm read_csv. Bạn đọc có thể xem thêm thông tin đầy đủ của hàm này tại đây. Tới đây mình xin kết thúc bài hướng dẫn về thư viện pandas python. Qua bài viết này, tôi tin chắc bạn đã có được những kiến thức cần thiết và có thể làm chủ thư viện pandas trong python. Bạn cũng có thể xem một ví dụ thực tế sử dụng thư viện này tại bài viết code thuật toán linear regression này. Tài liệu tham khảo
Bài viết gốc được đăng tại Blog cá nhân của tôi. |