Tải bản đầy đủ (.pdf) (31 trang)

bài thi giữ kỳ MÔN XỬ LÍ DỮ LIỆU LỚN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (878.01 KB, 31 trang )

MƠN XỬ LÍ DỮ LIỆU LỚN

GIỮA KÌ

Người hướng dẫn: BÙI THANH HÙNG
Người thực hiện: NGUYỄN VĂN TÀI – 518H0050
Lớp

:

18H50203

Khoá

:

22

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022

1


MƠN XỬ LÍ DỮ LIỆU LỚN

GIỮA KÌ

Người hướng dẫn: BÙI THANH HÙNG
Người thực hiện: NGUYỄN VĂN TÀI – 518H0050
Lớp


:

18H50203

Khoá

:

22

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2022

2


3


Tiểu Luận Pro(123docz.net)
LỜI CẢM ƠN
Để hoàn thành tiểu luận này, em xin gửi lời cảm ơn chân thành đến:
Các thầy cô trong khoa Công nghệ thông tin đã cung cấp các kiến thức nền tảng để áp
dụng và nghiên cứu thơng tin trong bài tiểu luận.
Em xin bày tỏ lịng biết ơn sâu sắc đến thầy Bùi Thanh Hùng người đã trực tiếp giảng
dạy và hướng dẫn tạo mọi điều kiện thuận lợi giúp đỡ em trong quá trình thực hiện đề
tài.
Tuy đã có nhiều cố gắng, nhưng chắc chắn tiểu luận của em cịn có vài điểm sai sót.
Rất mong nhận được sự nhận xét, ý kiến đóng góp, phê bình từ phía Thầy để bài tiểu
luận được hồn thiện hơn.
Xin chân thành cám ơn!


4


Tiểu Luận Pro(123docz.net)

LỜI CAM ĐOAN
Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi và được sự hướng dẫn của
Bui Thanh Hung. Các kết quả trong đề tài này là trung thực và chưa công bố dưới bất
kỳ hình thức nào trước đây. Những số liệu trong các bảng biểu phục vụ cho việc phân
tích, nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ
trong phần tài liệu tham khảo.
Ngồi ra, trong tiểu luận cịn sử dụng một số nhận xét, đánh giá cũng như số
liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn
gốc.
Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hồn tồn chịu trách nhiệm
về nội dung đồ án của mình. Trường đại học Tôn Đức Thắng không liên quan đến
những vi phạm tác quyền, bản quyền do tơi gây ra trong q trình thực hiện (nếu có).
TP. Hồ Chí Minh, ngày 31 tháng 03 năm 2022
Tác giả
(ký tên và ghi rõ họ tên)

Nguyễn Văn Tài

5


Tiểu Luận Pro(123docz.net)

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

Phần xác nhận của GV hướng dẫn

Tp. Hồ Chí Minh, ngày tháng
năm (kí và ghi họ tên)

Phần đánh giá của GV chấm bài

Tp. Hồ Chí Minh, ngày tháng năm
(kí và ghi họ tên)

6


Tiểu Luận Pro(123docz.net)

7


Tiểu Luận Pro(123docz.net)

TÓM TẮT

8


MỤC LỤC

LỜI CẢM ƠN

i


LỜI CAM ĐOAN

ii

PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN

iii

TĨM TẮT

iv

MỤC LỤC

1

DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT

2

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ

3

CHƯƠNG I - THU THẬP DỮ LIỆU

4

1.


Viết code cào dữ liệu từ trang Web, lưu kết quả vào 1 file tương ứng và

mô tả ngắn gọn về cấu trúc của trang Web trên

2.

4

1.1. Code cào dữ liệu

4

1.2. Cấu trúc trang Web

5

Với dữ liệu bạn vừa cào về, bạn hãy thực hiện các yêu cầu sau:

5

2.1.

Hãy đọc tất cả các thẻ html (div) với lớp là "quote" và lưu nó

trong biến 'result’, hiển thị giá trị biến 'result’ ra màn hình?
2.2.

Hãy tìm trong biến 'result’ vừa rồi các dữ liệu có chứa nhãn


"small" với class là "author" và in kết quả ra màn hình?
2.3.

6

Hãy viết hàm tacgiaLink() để lấy nội dung của mỗi tác giả. Với

mỗi tác giả in ra màn hình các nội dung
2.4.

5

6

Hãy lưu kết quả ở câu c vào file Quote.csv tương ứng, với mỗi tác

giả là 1 dịng dữ liệu. Bạn được u cầu thu thập ít nhất 40 câu nói nổi
tiếng từ trang web trên một cách tự động theo code của các ý trên?
CHƯƠNG II - KHAI PHÁ DỮ LIỆU

7
8

9


1.

Xử lý dữ liệu- Data Imputation


8

1.1. Giới thiệu:

8

1.2.

Một số giá trị của dữ liệu Trường ngày sinh chưa có, bạn hãy đề

xuất cách điền?
1.3.
2.

8

Bạn hãy thêm vào Trường Tuoi (Tuổi) và đề xuất cách điền tuổi

của các tác giả?

10

Khám phá dữ liệu- Data Exploration

10

2.1. Giới thiệu

10


2.2. Thống kê về tác giả và câu nói nổi tiếng có trong bộ dữ liệu

13

2.3. Thống kê về năm sinh và độ tuổi của các tác giả

14

2.4. Thống kê về các câu nói nổi tiếng như: câu dài nhất, ngắn nhất, số từ
................................................................................................................ 14
2.5. Thống kê về các từ được sử dụng trong các câu nói
2.6.

3.

14

Phân tích, trực quan mối quan hệ giữa giữa tác giả và câu nói nổi

tiếng

14

2.7. Phân tích, trực quan mối quan hệ giữa các tác giả với nhau

15

Suy luận

16


3.1.

Bạn được yêu cầu phân loại câu nói theo tên người nổi tiếng và

tính độ tương đồng phong cách nói giữa các tác giả theo 2 yêu cầu sau:16
3.2.

Hãy dự đoán tên của người nổi tiếng theo câu nói dựa trên các đặc

trưng bạn trích xuất ở trên và đánh giá trên bộ dữ liệu đã cho với tỉ lệ
Train/Test và các độ đo phù hợp?

16

10


DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT

11


DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ

12


CHƯƠNG I - THU THẬP DỮ LIỆU
1. Viết code cào dữ liệu từ trang Web, lưu kết quả vào 1 file tương ứng

và mô tả ngắn gọn về cấu trúc của trang Web trên
1.1. Code cào dữ liệu

13


1.2. Cấu trúc trang Web

2. Với dữ liệu bạn vừa cào về, bạn hãy thực hiện các yêu cầu sau:
2.1. Hãy đọc tất cả các thẻ html (div) với lớp là "quote" và lưu nó trong
biến 'result’, hiển thị giá trị biến 'result’ ra màn hình?

14


2.2. Hãy tìm trong biến 'result’ vừa rồi các dữ liệu có chứa nhãn "small"
với class là "author" và in kết quả ra màn hình?

2.3. Hãy viết hàm tacgiaLink() để lấy nội dung của mỗi tác giả. Với mỗi
tác giả in ra màn hình các nội dung

15


2.4. Hãy lưu kết quả ở câu c vào file Quote.csv tương ứng, với mỗi tác giả
là 1 dòng dữ liệu. Bạn được yêu cầu thu thập ít nhất 40 câu nói nổi tiếng
từ trang web trên một cách tự động theo code của các ý trên?

16



CHƯƠNG II - KHAI PHÁ DỮ LIỆU
1. Xử lý dữ liệu- Data Imputation
1.1. Giới thiệu:
Missing Data là gì?
Missing data là dữ liệu bị thiếu, được hiển thị như NaN, Nat, Null, N/A,… Missing
Data xuất hiện do nhiều nguyên nhân như:


Người dùng quên điền



Dữ liệu bị mất trong quá trình chuyển thủ công từ cơ sở dữ liệu cũ



Lỗi của chương trình



Thiếu dữ liệu do trùng hợp

Missing Data có thể được phân thành 3 loại:


Missing at Random (dữ liệu khuyết ngẫu nhiên).




Missing Completely at Random (dữ liệu thiếu hoàn toàn ngẫu nhiên).



Missing Not at Random (dữ liệu khuyết không ngẫu nhiên).
1.2. Một số giá trị của dữ liệu Trường ngày sinh chưa có, bạn hãy đề xuất
cách điền?

Thực tế trong bộ dữ liệu cào về trong trường năm sinh khơng có dữ liệu nào mất.
Nhưng giả định một vài trường hợp bị null sẽ xử lý như sau:
Bước 1 : Khởi tạo dữ liệu null

Bước 2 : Xử lý dữ liệu null bằng cách giảm số lượng cột trong dataframe sẽ xảy
ra việc mất dữ liệu => không phù hợp
17


Bước 3 : Trong trường hợp chúng ta không sử dụng cột “Namsinh”, giải pháp là
chúng ta bỏ cột “Namsinh”. Nhưng sẽ khơng tính được tuổi nếu khơng có dữ
kiện năm sinh => không phù hợp

Bước 4 : Loại bỏ các dữ liệu khơng liên quan nhưng có ảnh hưởng đến các dữ liệu
khác. Nhưng cũng khơng tính được tuổi của tác giả => không phù hợp

Bước 5 : Dùng phương pháp ffill : lấy giá trị dòng trên chèn xuống dịng dưới.
Nếu dịng trên bị null thì khơng thể thay thế => không phù hợp

Bước 6 : Dùng phương pháp bfill : lấy giá trị dòng dưới chèn lên dịng trên. Nếu
dịng dưới bị null thì khơng thể thay thế => không phù hợp


18


Bước 7 : Lấy giá trị xuất hiện nhiều nhất trong mảng sẽ thay những chỗ cịn lại.
Do đó sẽ điền được tất cả trường trong dataframe mà không bị bỏ sót ơ nào =>
phù hợp

1.3. Bạn hãy thêm vào Trường Tuoi (Tuổi) và đề xuất cách điền tuổi của
các tác giả?

2. Khám phá dữ liệu- Data Exploration
2.1. Giới thiệu
Pandas là một thư viện Python cung cấp các cấu trúc dữ liệu nhanh, mạnh mẽ, linh
hoạt và mang hàm ý. Tên thư viện được bắt nguồn từ panel data (bảng dữ liệu). Pandas
được thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa
chiều, có tiềm năng khơng đồng nhất) và dữ liệu chuỗi thời gian.

19


Mục tiêu của pandas là trở thành khối căn bản (building block) cấp cao cơ bản cho
công việc thực tế, phân tích dữ liệu thế giới thực trong Python, và rộng hơn là trở thành
công cụ thao tác / phân tích mã nguồn mở mạnh mẽ và linh hoạt nhất có sẵn trong bất
kỳ loại ngơn ngữ lập trình nào.
Pandas rất phù hợp với nhiều loại dữ liệu khác nhau:


Dữ liệu dạng bảng với các cột được nhập không đồng nhất, như trong bảng
SQL hoặc bảng tính Excel.




Dữ liệu chuỗi thời gian theo thứ tự và khơng có thứ tự (khơng nhất thiết phải có
tần số cố định).



Dữ liệu ma trận tùy ý (được nhập đồng nhất hoặc không đồng nhất) với nhãn
hàng và cột.



Bất kỳ hình thức khác của các bộ dữ liệu quan sát / thống kê. Dữ liệu thực
sự không cần phải được dán nhãn vào cấu trúc dữ liệu pandas.



Pandas được xây dựng dựa trên NumPy. Hai cấu trúc dữ liệu chính của pandas
là Series (1 chiều) và DataFrame (2 chiều) xử lý được phần lớn các trường
hợp điển hình trong tài chính, thống kê, khoa học xã hội và nhiều lĩnh vực kỹ
thuật.

Dưới đây là một số chức năng của pandas sẽ sử dụng phổ biến :
1. reset_index
2. sort_values
20


3. groupBy


21


4. replace
5. head
6. setdefault
7. loc & iloc
8. strptime
9. dropna
10. fillna

head()
Khi bạn lần đầu tiên nhận được một bộ dữ liệu mới, bạn muốn nhanh chóng khám phá
nó và có được cảm giác về nội dung của nó. Pandas có một số phương pháp cho việc
này. Đầu tiên là đầu, trả về vài hàng đầu tiên của DataFrame. Chức năng đầu được sử
dụng để xem vài hàng đầu tiên của bộ dữ liệu.
sort_values()
Điều đầu tiên bạn có thể làm là thay đổi thứ tự của các hàng bằng cách sắp xếp chúng
sao cho dữ liệu thú vị nhất nằm ở đầu DataFrame. Bạn có thể sắp xếp hàng bằng
phương pháp sort_values, đi qua trong tên cột mà bạn muốn sắp xếp theo.
reset_index()
Nếu bạn muốn chuyển đổi bất kỳ cột nào của bộ dữ liệu làm chỉ mục của nó, nó có thể
được thực hiện thơng qua set_index. Trong ví dụ dưới đây, id hành khách được đặt làm
cột chỉ mục. Điều này rất hữu ích khi bạn muốn đặt một trong các cột làm chỉ mục.
loc & iloc
Với loc và iloc, bạn có thể thực hiện hầu hết mọi thao tác lựa chọn dữ liệu trên
DataFrames. loc dựa trên nhãn, có nghĩa là bạn phải chỉ định hàng và cột dựa trên nhãn
hàng và cột của chúng. iloc dựa trên chỉ số số nguyên, vì vậy bạn phải chỉ định các

22



hàng và cột theo chỉ số số nguyên của chúng. loc và iloc cũng cho phép bạn chọn cả
hàng và cột từ DataFrame
groupBy()
Pandas groupBy() hàm được sử dụng để chia dữ liệu thành các nhóm bằng cách sử
dụng một số tiêu chí được xác định trước. Trong ví dụ dưới đây, chúng tơi sẽ tính thu
nhập trung bình của các ứng cử viên bằng cách nhóm nó theo độ tuổi.
replace()
Hàm replace() trả về một bản sao của chuỗi ban đầu sau khi đã thay thế các chuỗi con
cũ bằng chuỗi con mới.
setdefault()
Phương thức setdefault() tương tự get(), nhưng sẽ thiết lập dict[key]=default nếu key là
không tồn tại trong dict.
strptime()
Chuyển kiễu dữ liệu string sang date
dropna()
Xoá các cột chứa dữ liệu rỗng
fillna()
Điền các giá trị NA / NaN bằng phương pháp xác định.

23


2.2. Thống kê về tác giả và câu nói nổi tiếng có trong bộ dữ liệu

Cách tiếp cận:
● Nhóm dataframe theo tác giả
● Đếm số lần xuất hiện của từng tác giả (tương ứng với số câu nói của tác
giả đó)


df.groupby('Tacgia').size().reset_index(name='So cau noi')

2.3. Thống kê về năm sinh và độ tuổi của các tác giả

Cách tiếp cận:
● Nhóm dataframe theo tác giả
● Hiển thị trường tuổi và năm sinh theo tác giả
● Sắp xếp theo thứ tự tăng dần tuổi

2.4. Thống kê về các câu nói nổi tiếng như: câu dài nhất, ngắn nhất, số từ

Cách tiếp cận:
● Đếm số từ của từng câu nói
● Sắp xếp theo thứ tự giảm dần số từ
● Lấy câu có số từ nhiều nhất và số từ ít nhất

24


2.5.

Thống kê về các từ được sử dụng trong các câu

nói Cách tiếp cận:
● Gộp các câu nói lại với nhau (string + string)
● Đếm tần suất của từng từ sau khi gộp
● Tạo dataframe mới chứa từ và tần suất vừa tính được

Phân tích, trực quan mối quan hệ giữa giữa tác giả và câu nói nổi

tiếng

2.6.

Cách tiếp cận:
● Bổ sung trường tags cho dataframe
● Tạo kiểu dữ liệu dictionary chứa tác giả (key) và tags của tác giả đó
(value)

25


×