1. Trang chủ
  2. » Giáo Dục - Đào Tạo

báo cáo thư viện pandas môn kĩ thuật lập trình

36 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 2,1 MB

Cấu trúc

  • I. Giới thiệu về Pandas (4)
  • II. Dữ liệu sử dụng trong Pandas (4)
    • 1. Series (4)
      • 1.1. Truy xuất dữ liệu trong Series (5)
      • 1.2. Cập nhật (6)
      • 1.3. Xóa phần tử (6)
      • 1.4. Thao tác toán học (6)
      • 1.5. Các hàm cơ bản trong Series (8)
    • 2. Dataframe (10)
      • 2.1. Khái niệm (10)
      • 2.2. Cách sử dụng (11)
    • 3. Missing data (dữ liệu rỗng) (12)
      • 3.1. Kiểm tra missing data (13)
      • 3.2. Xử lý missing data (16)
  • III. Cách sử dụng (19)
    • 1. Cài đặt Pandas (19)
      • 1.1. Cài đặt thông qua Anaconda (19)
      • 1.2. Cài đặt thông qua trình quản lý package của python là pip (19)
    • 2. Sử dụng Pandas (20)
      • 2.1. Khai báo thư viện (20)
      • 2.2. Dictionary (20)
      • 2.3. List (21)
      • 2.4. Array (23)
      • 2.5. Định dạng chuỗi thời gian (25)
      • 2.6. Thao tác với tệp HTML (26)
  • IV. Ứng dụng (26)
    • 1. ng d ng trong vi c tra c u thông tn: Ứ ụ ệ ứ (0)
    • 2. Ứng dụng trong việc hỗ trợ tính toán, thống kê số liệu (27)
    • 3. Ứng dụng trong vẽ biểu đồ minh họa (28)
      • 3.1. Biểu đồ tròn (28)
      • 3.2. Biểu đồ cột đơn (30)
      • 3.3. Biểu đồ cột ghép (32)
      • 3.4. Biểu đồ đường (33)
      • 3.5. Biểu đồ hộp (Boxplot) (34)

Nội dung

Để có thể tìmhiểu về cách công nghệ ra đời và hoạt động, việc lập trình điều mà tasẽ phải tìm đến.Python được biết đến như là một ngôn ngữ lập trìnhđược sử dụng đông đảo bởi các lập trìn

Giới thiệu về Pandas

- Pandas là một thư viện mã nguồn mở được viết bằng ngôn ngữ lập trình Python, sử dụng để thực hiện các phân tích và xử lý dữ liệu.

Là một thư viện rất mạnh và phổ biến trong cộng đồng phân tích dữ liệu Python và có thể sử dụng trong nhiều lĩnh vực

- Pandas đã được Web McKinney xây dựng nên vào năm 2008, nguyên do là ông đã cảm thấy quá thất vọng khi làm việc với R

- Pandas được xây dựng dựa trên các thuộc tính của NumPy và cung cấp các tính năng mà trên NumPy không có, và tất nhiên là pandas cung cấp cấu trúc dữ liệu với ưu điểm nhanh và dễ sử dụng hơn, lấp đầy khoảng cách giữa hai ngôn ngữ thống kê là Python đối vớiR.

Dữ liệu sử dụng trong Pandas

Series

-Là một dạng cấu trúc dữ liệu tương tự mảng 1 chiều -Được diễn tả theo chiều dọc

-Điều khác biệt giữa mảng NumPy với một series là series có thể có các nhãn trục, nghĩa là nó có thể được lập chỉ mục bởi một nhãn, thay vì chỉ một vị trí số

-Chứa nhiều kiểu dữ liệu khác nhau như số (integer), chuỗi (string), kiểu boolean (True, false), kiểu dữ liệu NaN.

-Có thể được xem như là một cấu trúc dữ liệu với hai mảng: một lưu chỉ mục, cái còn lại lưu dữ liệu

1.1 Truy xuất dữ liệu trong Series

-Pandas sử dụng các tên hoặc số chỉ mục cho phép truy xuất dữ liệu nhanh chóng

-Ví dụ về truy xuất dữ liệu trong series:

Giờ ta truy xuất lấy dữ liệu từ USA, lúc này USA là tên index của series 1 và 2

1.5 Các hàm cơ bản trong Series

Dataframe

- Data frame là một tập dữ liệu, trong đó mỗi cột là một biến, mỗi dòng là một quan sát Định dạng dữ liệu này khá tương đồng với các phần mềm phân tích thống kê khác như SAS hoặc SPSS

- Data frame là kiểu dữ liệu 2 chiều với nhiều cột có thể chứa nhiều kiểu dữ liệu khác nhau:

Dictionary của các mảng 1 chiều9

Thư viện numpy 2 chiều ( Structure Array hoặc module record array)

2.2.1 Nhập dữ liệu trực tiếp -Trước tiên ta cần thêm thư viện pandas vào ứng dụng lập trình +Sử dụng lệnh import pandas ̣(as pd : viết tắt để dễ sữ dụng trong câu lệnh)

+ Nhập thông tin dưới dạng list gồm index và value

2.2.2 Sử dụng file CSV - Bước 1: Sử dụng lệnh import csv : chèn file csv - Bước 2: with open('Giants.csv', mode ='r')as file: đọc file csv

- Bước 3: csvFile = csv.reader(file) : in ra dữ liệu của file csv

Missing data (dữ liệu rỗng)

Tạo một dataframe tồn tại giá trị NaN

Dùng hương thức isnull() và notnull() để kiểm tra phần tử là NaN hay không là NaN tương ứng

-Kiểm tra dữ liệu rỗng theo hàng

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

-Kiểm tra dữ liệu rỗng theo cột

Dữ liệu rỗng có thể được được xử lý bằng cách xóa bỏ hoặc thêm giá trị mặc định

- Loại bỏ missing data dùng dropna(axis=0, how=’any’, thresh=None, subset=None, inplacese)

 axis: nhận giá trị mặc định là 0 –‘index’, 1-‘columns’

 how: ‘any’ sẽ drop axis đang xét nếu có bất gì phần tử NaN nào tồn tại, ‘all’ sẽ drop axis nếu toàn bộ phần tử đang xét nhận giá trị NaN

-Quay lại áp dụng ví dụ:

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

-Gán gián trị mặc định cho “missing data” dùng hàm fillna(number)

-Quay lại áp dụng ví dụ:

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

Cách sử dụng

Cài đặt Pandas

Cách đơn giản nhất để cài đặt Pandas được đề xuất trên website chính thức của Pandas là cài đặt qua Anaconda Sau khi chạy chương trình cài đặt, sử dụng dòng lệnh sau để cài đặt pandas người dùng sẽ có quyền truy cập vào Pandas: conda install pandas Hoặc cài đặt một phiên bản nào đó của Pandas: conda install pandas=0.20.3 1.2 Cài đặt thông qua trình quản lý package của python là pip:

Cài đặt Pandas bằng pip trên command prompt/terminal của hệ điều hành Windows/Linux/MacOS:

- Sau khi cài đặt pip, tiến hành cài đặt thư viện Pandas thông qua lệnh sau:

18 pip install pandas - Có thể kiểm tra phiên bản Pandas đang được sử dụng bằng cách: python -c "import pandas; print(pandas. version )"

Chú ý: Các phiên bản Python hỗ trợ Pandas: 3.8, 3.9, 3.10, 3.11

Sử dụng Pandas

Cách sử dụng một số công cụ trong Pandas, đầu tiên là các thao tác với dictionary.

Pandas cung cấp nhiều công cụ để làm việc với dữ liệu dưới dạng dictionary Các công cụ này giúp chúng ta có thể xử lý dữ liệu theo cách thức tương tự với dictionary thông thường.

2.2.1 Tạo DataFrame từ dictionary: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh'], 'age': [25, 30, 35]} df = pd.DataFrame.from_dict(data) print(df)

Kết quả: name age 0 Phdy 25 1 Kim Ín 30 2 Dalinh 35 2.2.2 Truy cập vào phần tử trong dictionary: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh'], 'age': [25, 30, 35]} df = pd.DataFrame.from_dict(data)

# Truy cập vào phần tử trong dictionary print(df['name'][0])

PhDy 2.2.3 Thêm cột vào DataFrame: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh'], 'age': [25, 30, 35]} df = pd.DataFrame.from_dict(data)

# Thêm cột vào DataFrame df['gender'] = ['F', 'F', 'F'] print(df) 19

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

Kết quả: name age gender 0 PhDy 25 F 1 Kim Ín 30 F 2 Dalinh 35 F 2.2.4 Lấy các giá trị duy nhất của một cột: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh', 'HAnh', 'Mr Phan'],

'gender': ['F', 'F', 'F', 'M', 'M']} df = pd.DataFrame.from_dict(data)

# Lấy các giá trị duy nhất của một cột print(df['gender'].unique())

2.2.5 Tính toán trên các giá trị của một cột: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh'], 'age': [25, 30, 35]} df = pd.DataFrame.from_dict(data)

# Tính toán trên các giá trị của một cột print(df['age'].sum())

90 2.2.6 Sắp xếp DataFrame theo một cột: import pandas as pd data = {'name': ['PhDy', 'Kim Ín', 'Dalinh'], 'age': [25, 30, 35]} df = pd.DataFrame.from_dict(data)

# Sắp xếp DataFrame theo một cột df = df.sort_values(by='age') print(df)

Kết quả: name age 0 PhDy 25 1 Kim Ín 30 2 Dalinh 35

2.3.1 Tạo DataFrame từ list: import pandas as pd data = [['PhDy', 25], ['Kim Ín', 30], ['Dalinh', 35]]

20 df = pd.DataFrame(data, columns=['name', 'age']) print(df)

Kết quả: name age 0 PhDy 25 1 Kim Ín 30 2 Dalinh 35 2.3.2 Truy cập vào phần tử trong list: import pandas as pd data = [['PhDy', 25], ['Kim Ín', 30], ['Dalinh', 35]] df = pd.DataFrame(data, columns=['name', 'age']) print(df['name'][0])

PhDy 2.3.3 Thêm cột vào DataFrame: import pandas as pd data = [['PhDy', 25], ['Kim Ín', 30], ['Dalinh', 35]] df = pd.DataFrame(data, columns=['name', 'age'])

# Thêm cột vào DataFrame df['gender'] = ['F', 'F', 'F'] print(df) Kết quả: name age gender 0 PhDy 25 F 1 Kim Ín 30 F 2 Dalinh 35 F 2.3.4 Lấy các giá trị duy nhất của một cột: import pandas as pd data = [['PhDy', 'F'], ['Kim Ín', 'F'], ['Dalinh', 'F'], ['HAnh', 'M'], ['Mr.Phan', 'M']] df = pd.DataFrame(data, columns=['name', 'gender'])

# Lấy các giá trị duy nhất của một cột print(df['gender'].unique())

2.3.5 Tính toán trên các giá trị của một cột:

Downloaded by Vu Vu (quangchinhlas199@gmail.com) import pandas as pd data = [['PhDy', 25], ['Kim Ín', 30], ['Dalinh', 35]] df = pd.DataFrame(data, columns=['name', 'age']) print(df['age'].sum())

90 2.3.6 Sắp xếp DataFrame theo một cột: import pandas as pd data = [['PhDy', 25], ['Kim Ín', 30], ['Dalinh', 35]] df = pd.DataFrame(data, columns=['name', 'age'])

# Sắp xếp DataFrame theo một cột df = df.sort_values(by='age') print(df)

Kết quả: name age 0 PhDy 25 1 Kim Ín 30 2 Dalinh 35

2.4.1 Sử dụng Series thao tác với array:

Một ‘Series' trong Pandas tương ứng với một array một chiều trong NumPy Chúng ta có thể tạo một ‘Series' bằng cách truyền một danh sách vào hàm ‘Series()’ của Pandas: import pandas as pd arr = [1, 2, 3, 4, 5] s = pd.Series(arr) print(s)

0 1 1 2 2 3 3 4 4 5 Có thể thao tác với ‘Series' tương tự như trên array:

# Truy cập phần tử đầu tiên print(s[0])

# Cắt từ phần tử thứ 2 đến cuối22 print(s[1:])

# Tính tổng các phần tử print(s.sum())

2.4.2 Sử dụng DataFrame thao tác với array Tương tự như khi dùng Series ở trên, import pandas as pd arr = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10]} df = pd.DataFrame(arr) print(df)

A B 0 1 6 1 2 7 2 3 8 3 4 9 4 5 10 2.4.3 Đọc và xử lý file CSV 2.4.3.1 Đọc file CSV import pandas as pd df = pd.read_csv('filename.csv') print(df.to_string())

Trong đó, filename.csv là đường dẫn tới file CSV cần đọc.

Tip: sử dụng to_string() để hiển thị ra màn hình toàn bộ DataFrame.

2.4.3.2 Xem thông tin của file CSV Nếu bạn có 1 DataFrame với nhiều Series, Pandas sẽ chỉ trả về 5 cột đầu tiên hoặc 5 cột cuối cùng.

# Xem 5 dòng đầu tiên của file csv print(df.head())

# Xem 5 dòng cuối cùng của file csv print(df.tail())

Ngoài ra, chúng ta có thể sử dụng phương thức info() để xem thông tin về các cột của file csv: print(df.info()) 2.4.3.3 Xử lý dữ liệu Thay thế, lọc, tính toán và ghép nối các cột hoặc dòng dữ liệu.

Ví dụ, để lọc các dòng có giá trị trong cột ‘age' lớn hơn hoặc bằng 18:

# Lọc các dòng có giá trị trong cột 'age' lớn hơn hoặc bằng 18 df = df[df['age'] >= 18] Để tính toán giá trị trung bình của cột ‘score':

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

# Tính giá trị trung bình của cột 'score' mean_score = df['score'].mean() Để ghép nối hai cột ‘firstname' và ‘lastname' thành một cột mới ‘fullname':

# Ghép nối hai cột 'first_name' và 'last_name' thành một cột mới 'full_name' df['full_name'] = df['first_name'] + ' ' + df['last_name']

Sau khi xử lý dữ liệu ta có thể sử dụng phương thức ‘to_csv()’ để ghi dữ liệu vào file csv mới:

# Ghi dữ liệu vào file csv mới df.to_csv('new_filename.csv', indexse) Trong đó, ‘new_filename.csv' là tên của file csv mới và

‘indexse' để không ghi thêm cột chỉ số của dòng vào file csv.

2.5 Định dạng chuỗi thời gian

Trong Pandas, định dạng chuỗi thời gian được xử lý bởi đối tượng ‘DatetimeIndex' bằng cách sử dụng hàm ‘pd.to_datetime()’ và truyền chuỗi thời gian cần chuyển đổi là đối số Phương thức này có thể chuyển đổi một chuỗi hoặc một mảng các chuỗi thành một ‘DatetimeIndex' hoặc một ‘Series' chứa các giá trị thời gian Ví dụ: import pandas as pd # Tạo bảng dữ liệu mẫu df = pd.DataFrame({'time': ['2022-03-01 10:30:00', '2022-03-02 11:30:00', '2022-03-03 12:30:00']})

# Chuyển đổi chuỗi thời gian thành DatetimeIndex df['time'] = pd.to_datetime(df['time']) # In ra kiểu dữ liệu của cột 'time' print(df['time'].dtype)

Kết quả là một ‘DatetimeIndex': datetime64[ns]

Ta cũng có thể chuyển đổi một chuỗi hoặc mảng các chuỗi thành một ‘Series' chứa các giá trị thời gian bằng cách sử dụng phương thức ‘pd.to_datetime()’: import pandas as pd # Tạo một mảng các chuỗi thời gian times = ['2022-03-01 10:30:00', '2022-03-02 11:30:00', '2022-03-03 12:30:00']

# Chuyển đổi mảng các chuỗi thời gian thành 24

Series chứa các giá trị thời gian time_series = pd.to_datetime(times) # In ra kiểu dữ liệu của Series print(time_series.dtype)

Kết quả cũng là một ‘datetime64[ns]’

2.6 Thao tác với tệp HTML

Có thể đọc và xử lý các tệp HTML bằng cách sử dụng hàm

‘read_html()’, hàm này tự động phát hiện và trích xuất bảng dữ liệu từ các đoạn mã HTML trong tệp. import pandas as pd # Đọc tệp HTML và lưu vào DataFrame df = pd.read_html('example.html')[0]

# In ra 10 dòng đầu tiên của DataFrame print(df.head(10)) Để xử lý các bảng dữ liệu HTML trong Pandas, có thể sử dụng các phương thức và công cụ tương tự như khi xử lý các DataFrame thông thường.

Ứng dụng

Ứng dụng trong việc hỗ trợ tính toán, thống kê số liệu

Giả sử ta có dữ liệu (được trích từ tệp ‘doanh thu.csv’) như sau: Đoạn mã sau đây sử dụng thư viện Pandas để đọc một file CSV chứa dữ liệu về doanh thu vào một DataFrame Từ đó tính tổng doanh thu của tất cả các sản phẩm, doanh thu trung bình, và tìm ra sản phẩm có doanh thu cao nhất và thấp nhất cùng với số tiền tương ứng:

Kết quả báo cáo được hiển thị như sau:

Ứng dụng trong vẽ biểu đồ minh họa

Lấy ví dụ ở ứng dụng trước:

Downloaded by Vu Vu (quangchinhlas199@gmail.com) Đoạn mã minh họa:

*figsize=(): điều chỉnh kích thước của biểu đồ

*autopct: làm tròn 2 chữ số thập phân Biểu đồ nhận được:

Giả sử, ta có dữ liệu về doanh thu theo tháng (được trích từ tệp

Downloaded by Vu Vu (quangchinhlas199@gmail.com) Đoạn mã minh họa:

*title: đặt tên cho biểu đồ Kết quả nhận được sẽ là:

Giả sử, ta có dữ liệu về doanh thu trong năm tháng (được trích từ tệp ‘DoanhThuTheoQuy’) như sau:

Khi đó ta có thể vẽ 2 dạng biểu đồ cột ghép khác Đoạn mã minh họa biểu đồ cột ghép chồng lên nhau

*stacked=True: làm cho các cột chồng lên nhau.

Kết quả đạt được là:

Downloaded by Vu Vu (quangchinhlas199@gmail.com)

Và đoạn mã minh họa biểu đồ cột ghép liền kề nhau

Giả sử, ta có dữ liệu về doanh thu trong năm tháng (được trích từ tệp ‘DoanhThuTheoQuy’) như sau (Giống ví dụ biểu đồ cột ghép trên)

Khi đó ta có thể vẽ biểu đồ đường

‘inplace=True’ : tránh tạo bản sao df mới, đoạn mã xử lý dữ liệu ngay trên bản gốc để không làm tốn nhiều bộ nhớ.

Cuối cùng kết quả đạt được là:

Downloaded by Vu Vu (quangchinhlas199@gmail.com) Đoạn mã minh họa như sau:

Và kết quả nhận được:

Ngày đăng: 27/05/2024, 15:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w