Bài giảng Nhập môn lập trình khoa học dữ liệu: Bài 9 Thư viện Pandas cung cấp cho người học những kiến thức như: Giới thiệu và cài đặt pandas; Cấu trúc dữ liệu trong pandas; Làm việc với series; Làm việc với dataframe. Mời các bạn cùng tham khảo!
NHẬP MƠN LẬP TRÌNH KHOA HỌC DỮ LIỆU Bài 9: Thư viện Pandas (1) Nội dung Giới thiệu cài đặt pandas Cấu trúc liệu pandas Làm việc với series Làm việc với dataframe Bài tập TRƯƠNG XUÂN NAM Phần Giới thiệu cài đặt pandas TRƯƠNG XUÂN NAM Cài đặt: “pip install pandas” “pandas” thư viện mở rộng từ numpy, chuyên để xử lý liệu cấu trúc dạng bảng Tên “pandas” dạng số nhiều “panel data” TRƯƠNG XUÂN NAM Đặc điểm bật pandas Đọc liệu từ nhiều định dạng Liên kết liệu tích hợp xử lý liệu bị thiếu Xoay chuyển đổi chiều liệu dễ dàng Tách, đánh mục chia nhỏ tập liệu lớn dựa nhãn Có thể nhóm liệu cho mục đích hợp chuyển đổi Lọc liệu thực query liệu Xử lý liệu chuỗi thời gian lấy mẫu TRƯƠNG XUÂN NAM Phần Cấu trúc liệu pandas TRƯƠNG XUÂN NAM Cấu trúc liệu pandas Dữ liệu pandas có cấu trúc chính: Series (loạt): cấu trúc chiều, mảng liệu đồng Dataframe (khung): cấu trúc chiều, liệu cột đồng (có phần giống table SQL, với dòng đặt tên) Panel (bảng): cấu trúc chiều, xem tập dataframe với thông tin bổ sung Dữ liệu series gần giống kiểu array numpy, có điểm khác biệt quan trọng: Chấp nhận liệu thiếu (NaN – không xác định) Hệ thống mục phong phú (giống dictionary?) TRƯƠNG XUÂN NAM Cấu trúc dataframe Dữ liệu chiều Các cột có tên Dữ liệu cột đồng (series?) Các dịng có tên Có thể có thiếu liệu TRƯƠNG XUÂN NAM Cấu trúc panel Dữ liệu chiều Một tập dataframe Các dataframe có cấu trúc tương đồng Có thể có thông tin bổ sung cho dataframe TRƯƠNG XUÂN NAM Phần Làm việc với series TRƯƠNG XUÂN NAM 10 Đọc liệu từ file csv Nội dung file brics.csv: Số liệu quốc gia thuộc khối BRICS Sử dụng dấu phẩy để ngăn liệu Mỗi liệu dòng Dòng tên cột ,country,population,area,capital BR,Brazil,200,8515767,Brasilia RU,Russia,144,17098242,Moscow IN,India,1252,3287590,New Delhi CH,China,1357,9596961,Beijing SA,South Africa,55,1221037,Pretoria TRƯƠNG XUÂN NAM 25 Đọc liệu từ file csv import pandas as pd d = pd.read_csv("brics.csv") print(d) Unnamed: country population area capital BR Brazil 200 8515767 Brasilia RU Russia 144 17098242 Moscow IN India 1252 3287590 New Delhi CH China 1357 9596961 Beijing SA South Africa 55 1221037 Pretoria TRƯƠNG XUÂN NAM 26 Đọc liệu từ file csv import pandas as pd # đọc liệu quy định cột dùng làm số dòng d = pd.read_csv("brics.csv", index_col = 0) print(d) country population area capital BR Brazil 200 8515767 Brasilia RU Russia 144 17098242 Moscow IN India 1252 3287590 New Delhi CH China 1357 9596961 Beijing SA South Africa 55 1221037 Pretoria TRƯƠNG XUÂN NAM 27 Truy cập theo cột Sử dụng tên cột làm số dùng tên cột Việc truy cập trả tham chiếu đến liệu, sử dụng phép gán để cập nhật liệu theo cột print(brics["country"]) print(brics.country) BR Brazil RU Russia IN India CH China SA South Africa Name: country, dtype: object BR Brazil RU Russia IN India CH China SA South Africa Name: country, dtype: object TRƯƠNG XUÂN NAM 28 Thêm cột (1) Bằng cách sử dụng cột chưa có brics["on_earth"] = [True, True, True, True, True] print(brics) country population area capital on_earth BR Brazil 200 8515767 Brasilia True RU Russia 144 17098242 Moscow True IN India 1252 3287590 New Delhi True CH China 1357 9596961 Beijing True SA South Africa 55 1221037 Pretoria True TRƯƠNG XUÂN NAM 29 Thêm cột (2) Bằng cách sử dụng cột chưa có thiết lập cơng thức phù hợp brics["density"] = brics["population"] / brics["area"] * 1000000 print(brics) country population area capital on_earth density BR Brazil 200 8515767 Brasilia True 23.485847 RU Russia 144 17098242 Moscow True 8.421918 IN India 1252 3287590 New Delhi True 380.826076 CH China 1357 9596961 Beijing True 141.398928 SA South Africa 55 1221037 Pretoria TRƯƠNG XUÂN NAM True 45.043680 30 Truy cập dòng dùng loc Bằng cách sử dụng cột chưa có thiết lập công thức phù hợp print(brics.loc["BR"]) country population area Brazil 200 8515767 capital Brasilia density 23.48585 on earth True Name: BR, dtype: object TRƯƠNG XUÂN NAM 31 Truy cập vào ô dataframe Bằng cách kết hợp mục dòng cột print(brics.loc["CH","capital"]) Beijing print(brics["capital"].loc["CH"]) Beijing print(brics.loc["CH"]["capital"]) Beijing TRƯƠNG XN NAM 32 Xóa dịng cột drop # tạo dataframe cách xóa cột print(d.drop(["area", "population"], axis=1)) # trường hợp muốn xóa d, thêm tham số inplace=True d.drop(["area", "population"], axis=1, inplace=True) print(d) country capital BR Brazil Brasilia RU Russia Moscow IN India New Delhi CH China Beijing SA South Africa Pretoria TRƯƠNG XUÂN NAM 33 Tính tổng tổng tích lũy # tính tổng cột population, trả tổng print(d.population.sum()) # tính tổng cột population, trả tổng trình cộng print(d.population.cumsum()) 3008 BR 200 RU 344 IN 1596 CH 2953 SA 3008 Name: population, dtype: int64 TRƯƠNG XUÂN NAM 34 Chuyển vị dataframe print(d.T) country population area capital BR RU IN Brazil Russia India 200 144 1252 SA China South Africa 1357 55 3287590 9596961 1221037 Moscow New Delhi Beijing Pretoria 8515767 17098242 Brasilia CH TRƯƠNG XUÂN NAM 35 Xem lướt qua liệu import pandas as pd import matplotlib.pyplot as plt d = pd.read_csv("brics.csv", index_col = 0) d.describe() population count area 5.000000 5.000000e+00 mean std 601.600000 7.943919e+06 644.806405 6.199591e+06 55.000000 1.221037e+06 25% 144.000000 3.287590e+06 50% 200.000000 8.515767e+06 75% 1252.000000 9.596961e+06 max 1357.000000 1.709824e+07 TRƯƠNG XUÂN NAM 36 Kết hợp pandas matplotlib import pandas as pd import matplotlib.pyplot as plt d = pd.read_csv("brics.csv", index_col = 0) d.area.plot(kind='bar') plt.show() TRƯƠNG XUÂN NAM 37 Phần Bài tập TRƯƠNG XUÂN NAM 38 Bài tập Nhập liệu từ file k59.csv (file kèm với giảng) In liệu hình In dòng dòng cuối liệu hình Thống kê xem lớp có bạn điểm loại giỏi (điểm từ trở lên) Thơng kê xem lớp có bạn trượt mơn (điểm khơng có điểm) Vẽ đồ thị histogram minh họa phân bổ điểm số lớp (trục giá trị từ đến 10, điểm tính 0) TRƯƠNG XN NAM 39 ... Population 1 793 23175 18 299 2000 185771000 188483000 191 141000 TRƯƠNG XUÂN NAM Total Violent Year 3384200 288460 196 0 3488000 2 893 90 196 1 3752200 301510 196 2 41 095 00 31 697 0 196 3 4564600 364220 196 4 22... 601.600000 7 .94 391 9e+06 644.806405 6. 199 591 e+06 55.000000 1.221037e+06 25% 144.000000 3.287 590 e+06 50% 200.000000 8.515767e+06 75% 1252.000000 9. 596 961e+06 max 1357.000000 1.7 098 24e+07 TRƯƠNG XUÂN NAM. .. pd.DataFrame(names_rank) print(df) MIT 1 Stanford 2 TRƯƠNG XUÂN NAM DHTL 200 21 Tạo dataframe từ dictionary list crimes_rates = { "Year":[ 196 0, 196 1, 196 2, 196 3, 196 4], "Population":[1 793 23175,18 299 2000,185771000,188483000, 191 141000],