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

PYTHON TRONG PHÂN TÍCH DỮ LIỆU

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 (832.83 KB, 32 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC

PYTHON TRONG
PHÂN TÍCH DỮ LIỆU
ĐỒ ÁN I
Chuyên ngành: TOÁN TIN

Giảng viên hướng dẫn: ThS. NGUYỄN TUẤN DŨNG
Sinh viên thực hiện:

TRẦN HẢI PHONG

Lớp:

Toán Tin 2 – K63

Mã số sinh viên:

20185393

HÀ NỘI – 2021


TRANG NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

1. Mục đích và nội dung của đồ án:

2. Kết quả đạt được:



3. Ý thức làm việc của sinh viên:

Hà Nội, ngày

tháng

năm 2021

Giảng viên hướng dẫn
(Ký và ghi rõ họ tên)

1


MỤC LỤC

MỞ ĐẦU .......................................................................................................... 3

NỘI DUNG CHÍNH ........................................................................................ 4

1.

Tổng quan về Python và Phân tích dữ liệu ....................................... 4
1.1. Python ................................................................................................ 4
1.1.1. Lịch sử .............................................................................. 4
1.1.2. Đặc điểm ........................................................................... 5
1.1.3. Ứng dụng .......................................................................... 8
1.1.4. Một số ví dụ ...................................................................... 9
1.2. Phân tích dữ liệu .............................................................................. 12

1.2.1. Định nghĩa....................................................................... 12
1.2.2. Quá trình phân tích dữ liệu ............................................. 14
1.2.3. Ứng dụng của phân tích dữ liệu ...................................... 17

2.

Sử dụng Python trong phân tích dữ liệu ......................................... 18
2.1. Đặc điểm .......................................................................................... 18
2.2. Ứng dụng: Trực quan hóa dữ liệu (data visualization) ................... 20
2.2.1. Biểu đồ đường (line chart) .............................................. 21
2.2.2. Biểu đồ cột (bar chart) .................................................... 22
2.2.3. Biểu đồ tròn (pie chart) ................................................... 23
2.3. Ví dụ: Xây dựng biểu đồ phân tích chứng khoán ........................... 24

KẾT LUẬN .................................................................................................... 30

TÀI LIỆU THAM KHẢO ............................................................................ 31

2


MỞ ĐẦU

Theo dự đoán của International Data Corporation, doanh thu tồn cầu của
các giải pháp phân tích dữ liệu lớn sẽ đạt 274,3 tỷ USD vào năm 2022, và giữ
mức tăng trưởng 13,2% trong vịng 5 năm tới. Phân tích dữ liệu giúp các doanh
nghiệp dự đoán nhu cầu, đưa ra các quyết định nhằm phòng tránh rủi ro và tối
ưu hóa lợi nhuận,… Những lợi ích trên khiến các giải pháp phân tích dữ liệu
đang ngày càng trở nên phổ biến: nếu năm 2015 chỉ có 17% các cơng ty sử
dụng các phân tích dữ liệu lớn, thì năm 2017 tỉ lệ đó đã tăng lên 53%.

Một trong những cơng cụ cần thiết để sử dụng phân tích dữ liệu chính là
ngơn ngữ lập trình, những ngơn ngữ phổ biến nhất có thể kể đến Python,
JavaScript, SQL, R,… Trong số đó, em chú ý tới ngơn ngữ Python vì sự đơn
giản và phổ biến của nó. Theo một khảo sát năm 2013, 40% các nhà khoa học
dữ liệu chọn Python là ngơn ngữ chính được họ sử dụng trong cơng việc. Lý
do chính có lẽ vì ngơn ngữ này rất dễ học, song lại có thể được sử dụng cho
nhiều cơng việc khác nhau nhờ có các thư viện của nó.
Do đó, em quyết định lấy “Python trong Phân tích dữ liệu” là đề tài cho
Đồ án I của mình. Trong đây em sẽ tập trung tìm hiểu tổng quan về ngơn ngữ
lập trình Python, những ưu điểm của việc sử dụng Python trong phân tích dữ
liệu cũng như một số ví dụ thực tế.
Trong q trình thực hiện đề tài, em đã nhận được rất nhiều sự chỉ bảo,
giúp đỡ và góp ý của thầy Nguyễn Tuấn Dũng. Thầy đã giúp đỡ em rất nhiều
trong việc hoàn thành đề tài của mình. Mặc dù em đã cố gắng hết sức, song có
thể khơng tránh khỏi được những thiếu sót. Em rất mong được sự đóng góp của
thầy cơ để báo cáo đồ án của em có thể được hoàn thiện hơn.

3


NỘI DUNG CHÍNH

1. Tổng quan về Python và Phân tích dữ liệu
1.1. Python
1.1.1. Lịch sử
Python là một ngôn ngữ lập trình thơng dịch (interpreted), hướng đối
tượng (object-oriented) bậc cao (high-level) được sử dụng cho nhiều mục đích
đa dạng. Ngơn ngữ này luôn được xếp hạng là một trong những ngôn ngữ lập
trình phổ biến nhất, được sử dụng bởi từ người mới học lập trình cho tới các
lập trình viên kinh nghiệm. Điều đó có được là nhờ sự dễ học, cú pháp dễ hiểu

và rõ ràng cùng với khả năng thực hiện nhiều tác vụ khác nhau.
Python được phát triển vào cuối những năm 1980 bởi Guido Van Rossum
tại Viện Nghiên cứu Quốc gia về Toán học và Khoa học máy tính của Hà Lan.
Đây là một ngơn ngữ kế thừa của ngơn ngữ ABC, và do đó cũng có cú pháp rất
dễ hiểu. Python lần đầu được ra mắt vào năm 1991 mang tên Python 0.9.0. Từ
đó đến nay Python đã ra mắt các phiên bản 1, 2 và 3, với phiên bản mới nhất
mang tên Python 3.9.5.
Python dần trở thành ngơn ngữ lập trình phổ biến nhất vào những năm
2010, vượt lên trên những ngôn ngữ khác như JavaScript hay Java nhờ sự phát
triển của những ngành như phân tích dữ liệu, máy học, dữ liệu lớn… cùng với
đó là sự tăng trưởng của số lượng lập trình viên, với số lượng lớn trong số đó
chọn Python là ngôn ngữ đầu tiên.

4


Hình 1: Sự tăng trưởng của các ngơn ngữ lập trình phổ biến

1.1.2. Đặc điểm
Triết lý thiết kế của Python bao gồm 19 điều, có thể đọc được sử dụng
đoạn mã import this. Một số trong số đó là:
• Đẹp đẽ tốt hơn là xấu xí
• Minh bạch tốt hơn là che đậy
• Đơn giản tốt hơn phức tạp
• Phức tạp tốt hơn rắc rối
• Dễ đọc
• …
5



Có thể thấy ngơn ngữ Python được thiết kế với ý tưởng là trở thành một
ngôn ngữ dễ học, dễ đọc ngay cả với người mới bắt đầu lập trình. Các đặc điểm
chính của Python là:
• Dễ học, dễ đọc
So với các ngơn ngữ lập trình phổ biến khác như Java, C++ hay C#,
Python dễ sử dụng hơn rất nhiều nhờ cú pháp rõ ràng, dễ hiểu. Python
thường sử dụng các từ khóa bằng tiếng Anh thay vì các kí hiệu và cấu
trúc cú pháp phức tạp như một số ngơn ngữ khác.

Hình 2: In "Hello World" trong Java và Python

• Miễn phí, mã nguồn mở
Python là một ngơn ngữ lập trình miễn phí với mã nguồn mở, bất kỳ ai
cũng có thể sử dụng cũng như thay đổi mã nguồn của nó. Nhờ đó ngơn
ngữ này có một cộng đồng người dùng rất lớn.
• Có tính mở rộng
Người dùng có thể tích hợp vào Python nhiều hàm sử dụng C, C++,…
hoặc có thể liên kết trình thơng dịch của nó với các ứng dụng nền C để
sử dụng như một phần mở rộng.
• Khả năng di chuyển
Các chương trình được viết bằng Python có thể chạy trên nhiều nền
tảng như Windows, Linux, MacOS,… một cách liền mạch mà không
gặp vấn đề gì.
6


• Là một ngơn ngữ lập trình thơng dịch (interpreted) bậc cao
Một ngơn ngữ lập trình thơng dịch là loại ngôn ngữ thực thi các lệnh
trực tiếp và tự do mà khơng cần biên dịch (compile) trước chương trình
khi chuyển sang ngôn ngữ máy. Là một ngôn ngữ thông dịch, Python

sẽ thực thi trực tiếp các chương trình, tiến hành dịch từng câu lệnh sang
chuỗi các chương trình con và chuyển sang mã máy. Điều này giúp
ngôn ngữ Python trở nên dễ thực hiện, tiết kiệm thời gian, cũng như
cho phép nó hỗ trợ sử dụng được trên nhiều nền tảng khác nhau.
• Là một ngơn ngữ lập trình hướng đối tượng (object-oriented)
Ngơn ngữ Python hỗ trợ các tính năng và kỹ thuật lập trình hướng đối
tượng, giúp người sử dụng giải quyết các vấn đề phức tạp một cách
trực quan nhất. Nhờ có lập trình hướng đối tượng, các dự án bằng
Python có thể dược mở rộng một cách dễ dàng, có tính bảo mật và tái
sử dụng cao. Ngồi ra chúng cịn giúp việc sửa lỗi (nếu có) trở nên dễ
dàng hơn so với lập trình hướng cấu trúc, đồng thời rút ngắn thời gian
xây dựng, tiết kiệm tài nguyên hệ thống và tăng năng suất thực hiện.
• Thư viện tiêu chuẩn lớn
Một thư viện là một tập hợp các đoạn mã đã được soạn sẵn có thể sử
dụng nhiều lần để giảm bớt thời gian lập trình cho người sử dụng. Đây
được coi là một trong những thế mạnh lớn nhất của Python. Hiện nay
Python có hơn 100.000 thư viện và vẫn đang không ngừng tăng thêm,
với đa dạng các tính năng từ tự động hóa, cơ sở dữ liệu cho tới xử lý
văn bản,… Dù là thư viện lõi được xây dựng trong ngôn ngữ Python,
hay là một thư viện do cộng đồng người dùng tạo nên, thường sẽ ln
có một thư viện cho bất cứ nhu cầu nào của lập trình viên Python.

7


1.1.3. Ứng dụng
Python là một ngơn ngữ lập trình rất linh hoạt và có nhiều ứng dụng trong
cuộc sống, một phần là nhờ số lượng thư viện rất lớn và vẫn đang không ngừng
tăng lên. Các ứng dụng của Python có thể kể đến như:
• Lập trình Web

Các framework của Python như Django hay Flask giúp cho việc xây
dựng web trên Python trở nên rất dễ dàng. Các nhà phát triển có thể
đưa ý tưởng trở thành hiện thực trong thời gian ngắn nhờ các công cụ
được cung cấp đầy đủ trong Python.
• Trí tuệ nhân tạo và Máy học
Các dự án Trí tuệ nhân tạo và Máy học cần một ngơn ngữ lập trình ổn
định, linh động, bảo mật và có những cơng cụ cần thiết cho những tác
vụ đặc biệt. Với nhu cầu kể trên, Python là một sự lựa chọn tốt.
• Phát triển các ngơn ngữ lập trình khác
Các ưu điểm của Python là nguồn cảm hứng đằng sau sự phát triển của
nhiều ngơn ngữ lập trình phổ biến khác như Swift, Nim,…
• Khoa học dữ liệu và Trực quan hóa dữ liệu
Dữ liệu là mỏ vàng mới trong thời đại này. Python có thể được sử dụng
để lấy một lượng lớn dữ liệu, trích xuất các thông tin quan trọng từ bộ
dữ liệu và trực quan hóa chúng để dự báo rủi ro, tăng lợi nhuận.
• Internet vạn vật (IoT)
IoT đang ngày càng trở nên phổ biến, với nhiều ứng dụng khác nhau
từ đời sống hàng ngày tới trong các doanh nghiệp. Hầu hết các thiết bị
IoT đều được điều khiển bởi những dòng code Python.

8


• Tính tốn khoa học
Python là một cơng cụ quan trọng trong tính tốn khoa học, cung cấp
bộ khung cho các ứng dụng tính tốn và xử lý dữ liệu khoa học.
• …
1.1.4. Một số ví dụ
• Chuyển đổi từ giây sang giờ
def chuyển_đổi(giây):

giây = giây % (24 * 3600)
giờ = giây // 3600
giây %= 3600
phút = giây // 60
giây %= 60
return "%d:%02d:%02d" % (giờ, phút, giây)

#Ví dụ
n = 654321
print(chuyển_đổi(n))

Output: 13:45:21

• Tính tiền lãi ngân hàng
def tiền_lãi(gốc, lãi_suất, tháng):
gốc_và_lãi = gốc * (pow((1 + lãi_suất / 100), tháng))
lãi = round(gốc_và_lãi - gốc,2)
print("Tiền lãi sau", tháng, "tháng là", lãi)

#Ví dụ
tiền_lãi(10000, 10, 6)

Output: Tiền lãi sau 6 tháng là 7715.61

9


• Nạp dữ liệu vào Python: cách phổ biến là sử dụng file JSON hoặc CSV.
o JSON (JavaScript Object Notation) là một kiểu định dạng dữ liệu
tuân theo một quy luật nhất định và là một tiêu chuẩn mở để trao

đổi dữ liệu trên web.
File text:
ten Phong
tuoi 20
mssv 20185393
## Chuyển từ file text sang file json
import json
filename = 'data.txt'
dict1 = {}
with open(filename) as fh:
for line in fh:
command, description = line.strip().split(None, 1)
dict1[command] = description.strip()
out_file = open("data.json", "w")
json.dump(dict1, out_file, indent = 4, sort_keys = False)
out_file.close()

#Đọc file json
import json
with open('data.json', 'r') as myfile:
data=myfile.read()
obj = json.loads(data)
print("Name: " + str(obj['ten']))
print("Age: " + str(obj['tuoi']))
print("Student ID: " + str(obj['mssv']))

10


Output:

Name: Phong
Age: 20
Student ID: 20185393

o CSV (Comma Separated Values) là một loại định dạng văn bản đơn
giản mà trong đó các giá trị được ngăn cách với nhau bằng dấu
phẩy, thường được sử dụng để lưu các bảng tính quy mô nhỏ.
File text:
A,20,20185393
B,21,20181234

import csv
with open('data2.txt') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for row in csv_reader:
print(f'\t{row[0]}, {row[1]} tuổi, mã số sinh viên là
{row[2]}.')

Output:
A, 20 tuổi, mã số sinh viên là 20185393.
B, 21 tuổi, mã số sinh viên là 20181234.

Trong khi JSON có tính phân cấp, khả năng mở rộng tốt hơn thì CSV nhỏ
gọn và bảo mật hơn.

11


1.2. Phân tích dữ liệu

1.2.1. Định nghĩa
Phân tích dữ liệu là quá trình gồm các bước kiểm tra dữ liệu, làm sạch dữ
liệu, chuyển hóa và mơ hình hóa dữ liệu để từ dữ liệu thơ có thể tìm ra các
thơng tin quan trọng, giúp ra quyết định chính xác. Marshall và Rossman (2015)
mơ tả rằng phân tích dữ liệu là một quá trình mơ hồ, lộn xộn và tốn thời gian,
song lại là một quá trình sáng tạo và hấp dẫn, nhờ đó mà một khối dữ liệu có
thể được giải nghĩa.
Phân tích dữ liệu được chia thành 4 dạng như sau:
• Phân tích mơ tả:
Đây là nền tảng cho việc tìm hiểu dữ liệu, và cũng là ứng dụng phổ
biến nhất của phân tích dữ liệu. Đúng như tên gọi, phân tích mơ tả sẽ
tổng kết dữ liệu trong quá khứ để mô tả những sự việc đã xảy ra trong
một khoảng thời gian nhất định. Chúng thường được sử dụng để đánh
giá chỉ số hiệu quả công việc (KPI).
• Phân tích chẩn đốn:
Đi sâu hơn phân tích mơ tả điều gì đã xảy ra, phân tích chẩn đốn sẽ
tập trung tìm hiểu vì sao điều ấy lại xảy ra. Phép phân tích này địi hỏi
dữ liệu thơ đầu vào đa dạng hơn, song đồng thời cũng tạo nên nhiều
mối tương quan dữ liệu hơn.
• Phân tích dự đoán
Sử dụng kết quả thu được từ hai phép phân tích trên, dạng phân tích
này sẽ dự đốn điều sắp xảy ra trong tương lai một cách logic. Độ chính
xác của dự đốn dựa vào độ chính xác của mơ hình thống kê, cũng như
chất lượng và độ chi tiết của dữ liệu đầu vào.

12


• Phân tích đề xuất
Đây là dạng phân tích dữ liệu cao nhất, song ít nơi có thể áp dụng được

vì địi hỏi của nó rất cao. Phân tích đề xuất kết hợp ba phép phân tích
trên để đề xuất ra giải pháp tối ưu nhất. Điều này có thể đạt được nhờ
sự giúp đỡ của trí tuệ nhân tạo, với khả năng xử lý một lượng lớn dữ
liệu đầu vào. Phép phân tích này được nhiều tập đồn lớn sử dụng như
Facebook, Google, Amazon,…
Trung bình, mỗi người trong chúng ta tạo ra 1,7MB dữ liệu mỗi giây.
Trong năm 2020 con người tạo ra 2,5 tỷ tỷ byte dữ liệu mỗi ngày, hay 2,5
exabyte. Dự đoán tới năm 2025 mỗi ngày chúng ta sẽ tạo ra 463 exabyte dữ
liệu, tức là gấp gần 200 lần so với hiện nay. Có thể nói dữ liệu là vàng trong kỷ
nguyên kỹ thuật số ngày nay, tuy nhiên ước tính chỉ 0,5% dữ liệu thực sự được
phân tích và sử dụng. Ngành phân tích dữ liệu do đó có rất nhiều tiềm năng để
phát triển trong tương lai, giúp chúng ta đột phá trong cuộc cách mạng công
nghiệp 4.0.

13


1.2.2. Q trình phân tích dữ liệu
Có tổng cộng 5 bước trong việc phân tích dữ liệu
Bước 1.

Xác định mục tiêu
Trước khi tiến hành việc phân tích dữ liệu, cần xác định rõ mục
đích của việc này là gì. Từ đó ta sẽ biết được cần sử dụng hình
thức phân tích dữ liệu nào để đem lại hiệu quả tối đa và tiết
kiệm nguồn lực nhất

Bước 2.

Thu thập dữ liệu

Bước này rất quan trọng vì nguồn dữ liệu đầu vào sẽ quyết
định sự chính xác của việc phân tích. Dữ liệu được chia làm
hai loại là dữ liệu thứ cấp đã có sẵn, dễ thu thập và dữ liệu sơ
cấp chưa có sẵn, thường là dữ liệu khơng có cấu trúc.

Bước 3.

Xử lý dữ liệu
Không phải mọi dữ liệu thu được đều có ích, do đó dữ liệu thơ
đầu vào cần phải trải qua quá trình xử lý. Quá trình này sẽ tìm
ra và sửa các giá trị bị trùng lặp, dị thường hoặc những giá trị
còn thiếu. Những lỗi này, dù rất nhỏ, song có thể ảnh hưởng
lớn tới kết quả cuối cùng. Xử lý dữ liệu do đó rất quan trọng,
chiếm 60% trong tồn bộ việc phân tích dữ liệu.

Bước 4.

Phân tích dữ liệu
Với bộ dữ liệu đã qua xử lý, ta sử dụng các kỹ thuật phân tích
dữ liệu để đưa ra các nhận xét, đánh giá cũng như dự đốn. Có
thể kể đến các kỹ thuật như phân tích hồi quy, phương pháp
Monte Carlo hay phân tích tổ hợp,…
14


Bước 5.

Rút ra kết luận
Bước cuối cùng trong việc phân tích dữ liệu là rút ra kết luận
liên quan tới mục đích ban đầu dựa trên kết quả thu được từ

các bước trước đó, từ đó đưa ra các giải pháp hay đề xuất trong
tương lai.

Trong các bước vừa nêu ở trên, xử lý dữ liệu chiếm một phần rất quan
trọng. Theo một nghiên cứu của IBM Data Analytsics thì 80% thời gian của
một nhà khoa học dữ liệu được dành để tìm kiếm, làm sạch và sắp xếp dữ liệu,
chỉ 20% thời gian còn lại để thực sự phân tích dữ liệu. Một trong những vấn đề
cần được xử lý trong quá trình trên là xử lý dữ liệu bị thiếu. Để giải quyết vấn
đề này trước tiên ta cần hiểu nguyên nhân vì sao dữ liệu lại bị thiếu. Nếu dữ
liệu bị thiếu một cách hoàn toàn ngẫu nhiên và tần suất dữ liệu bị thiếu thấp
(khoảng 5%) thì ta có thể bỏ qua chúng, song nếu dữ liệu bị thiếu một cách có
hệ thống thì phép phân tích có thể sẽ đưa ra kết quả sai lệch. Do đó dữ liệu bị
thiếu được chia thành 3 loại như sau:
• Dữ liệu bị thiếu hồn tồn ngẫu nhiên (Missing Completely at Random
- MCAR)
Dữ liệu bị thiếu hoàn toàn ngẫu nhiên khi khơng có bất kỳ mối liên hệ
nào giữa nguyên nhân dữ liệu bị thiếu và các biến quan sát được cũng
như các tham số không quan sát được, nghĩa là việc thiếu dữ liệu xảy
ra hoàn toàn là do ngẫu nhiên. Ví dụ như khi đang lấy dữ liệu về cân
nặng của một nhóm người thì chiếc cân đột nhiên hết pin, do đó một
số người sẽ khơng có kết quả. Trong trường hợp này thì lợi thế thống
kê của nó là phân tích vẫn khơng thiên vị vì việc thiếu dữ liệu khơng
làm sai lệch các tham số ước tính. Song trong thực tế thì hiếm khi xảy
ra trường hợp dữ liệu bị thiếu hoàn toàn ngẫu nhiên.

15


• Dữ liệu bị thiếu ngẫu nhiên (Missing at Random - MAR)
Dữ liệu bị thiếu một cách ngẫu nhiên khi xu hướng thiếu điểm dữ liệu

không liên quan đến bản thân dữ liệu bị thiếu, nhưng nó liên quan đến
một số dữ liệu được quan sát. Nói cách khác, xác suất thiếu giá trị phụ
thuộc vào đặc điểm của dữ liệu quan sát được. Ví dụ vẫn chiếc cân kể
trên song được đặt trên một mặt phẳng mềm hơn thì sẽ tạo ra nhiều dữ
liệu bị thiếu hơn là đặt trên một mặt phẳng cứng, và chứng ta giả sử dữ
liệu đó bị thiếu hồn tồn ngẫu nhiên trên mỗi loại mặt phẳng, thì bộ
dữ liệu được gọi là bị thiếu ngẫu nhiên. Trong thực tế thì dữ liệu MAR
thường gặp hơn dữ liệu MCAR, và các phương pháp xử lý dữ liệu thiếu
cũng thường bắt nguồn từ việc giả sử dữ liệu bị thiếu ngẫu nhiên. Tuy
nhiên cũng không thể chắc chắn liệu dữ liệu thực sự bị thiếu ngẫu nhiên
hay việc bị thiếu phụ thuộc vào các yếu tố dự đốn khơng quan sát
được hoặc chính dữ liệu bị thiếu.
• Dữ liệu bị thiếu khơng ngẫu nhiên (Missing Not at Random – MNAR)
Khi dữ liệu không phải MAR hoặc MCAR thì việc thiếu dữ liệu sẽ có
liên hệ tới nguyên nhân dữ liệu bị thiếu, hay dữ liệu bị thiếu khơng phải
do ngẫu nhiên. Ví dụ, chiếc cân sau một thời gian sử dụng sẽ bị sai lệch
dần, tạo ra nhiều dữ liệu thiếu hơn song chúng ta lại khơng nhận ra điều
đó. Dữ liệu bị thiếu khơng ngẫu nhiên khơng thể bị bỏ qua do chúng
có thể làm sai lệch phép phân tích, thay vào đó chúng ta cần phải tìm
thêm dữ liệu về nguyên nhân dẫn đến sự thiếu dữ liệu, hoặc thực hiện
các phép phân tích xem dữ liệu thay đổi như thế nào trong các trường
hợp khác nhau.

16


1.2.3. Ứng dụng của phân tích dữ liệu
Sử dụng phân tích dữ liệu, ta có thể rút ra các thơng tin quan trọng từ dữ
liệu thô mà các phương pháp khác khơng thể tìm ra được. Một vài ứng dụng
của phân tích dữ liệu trong thực tế là:

• Internet
Băng thơng được cấp phát tới từng khu vực dựa trên dữ liệu về lưu
lượng sử dụng trong từng khoảng thời gian trong ngày.
• Phát hiện rủi ro
Các doanh nghiệp sử dụng phân tích dữ liệu để đề phịng các rủi ro như
lừa đảo, thị trường đi xuống,…
• An ninh
Phép phân tích dự đoán được nhiều nơi sử dụng để dự đoán về tỉ lệ tội
phạm trong một khu vực dựa trên các dữ liệu trong q khứ.
• Giao thơng cơng cộng
Dựa trên dữ liệu về số người sử dụng trong mỗi khoảng thời gian để
cung cấp đủ số lượng phương tiện, đảm bảo giao thơng thơng suốt.
• Logistics và vận chuyển
Các cơng ty sử dụng phân tích dữ liệu để tìm tuyến đường vận chuyển
tốt nhất, thời gian giao hàng dự kiến, định vị vị trí trực tiếp của chuyến
hàng để đảm bảo khơng bị thất lạc hàng hóa.
• …

17


2. Sử dụng Python trong phân tích dữ liệu
2.1. Đặc điểm
Có rất nhiều cơng cụ có thể được sử dụng trong phân tích dữ liệu như R,
Tableau Public, Excel,… Song trong bài báo cáo này em sẽ sử dụng Python vì
một đây là một ngơn ngữ dễ sử dụng và được nhiều người sử dụng. Python là
một công cụ rất hữu hiệu trong phân tích dữ liệu nhờ những ưu điểm sau:
• Đơn giản
Python tập trung vào sự đơn giản, dễ đọc, cú pháp rõ ràng. Do đó, đây
là một lựa chọn tốt cho người mới bắt đầu so với các cơng cụ khác. Với

cùng một u cầu thì ta có thể viết chương trình cho nó bằng Python
nhanh hơn nhiều so với sử dụng C++ hay Java.
• Được hỗ trợ đầy đủ
Tuy đơn giản song Python có rất nhiều thư viện để sử dụng trong phân
tích dữ liệu như SciPy, NumPy, Pandas, Matplotlib,… Số lượng thư
viện vẫn không ngừng tăng lên cùng với số lượng người dùng, đảm bảo
Python có thể đáp ứng được mọi nhu cầu trong quá trình sử dụng. Một
số có thể kể đến như:
o NumPy: một trong những thư viện được ứng dụng đầu tiên trong
phân tích dữ liệu. Đây là một thư viện tốn học phổ biến và mạnh
mẽ cho phép làm việc hiệu quả với ma trận và mảng với tốc độ xử
lý nhanh hơn nhiều lần.
o Pandas: được xây dựng dựa trên NumPy, có thể được dùng cho rất
nhiều tác vụ, từ nhập dữ liệu từ bảng tính Excel tới xử lý bộ dữ liệu
theo thời gian.
o Matplotlib: thư viện vẽ biểu đồ, dựa trên thư viện SciPy để phân
tích dữ liệu khoa học
o …
18


• Hỗ trợ đa mơ hình lập trình
Nhờ đó mà Python hỗ trợ cả lập trình hướng đối tượng lẫn lập trình
hướng khía cạnh. Ví dụ với chương trình “Hello World”, nếu ở Java
thì ta phải lập một class riêng, cịn ở Python thì khơng cần thiết.
• Tích hợp ứng dụng doanh nghiệp (EAI)
Python có thể nhúng được trong nhiều ứng dụng khác nhau, dù được
viết bằng ngôn ngữ lập trình khác, do dó nó là cơng cụ rất tốt cho EAI.
• Mã nguồn mở
Python có thể chạy trên đa dạng các môi trường, từ Windows tới Linux.

Jupyter Notebook là cơng cụ phổ biến đối với những người lập trình
bằng Python, giúp trình bày code, văn bản, hình ảnh, cơng thức,… theo
một cách trực quan nhất. Ngoài ra, dựa trên nền của Jupyter Notebook,
ta cịn có Google Colaboratory (hay Google Colab) với khả năng điện
toán đám mây, cho phép chạy Jupyter Notebook trên các bộ xử lý hiệu
suất cao của Google và lưu trữ chúng ngay trên Google Drive. Tất cả
đều là các phần mềm miễn phí.
• Tính mềm dẻo, khả năng mở rộng
Python có thể được sử dụng để giải quyết nhiều vấn đề trong nhiều lĩnh
vực khác nhau, với tốc độ nhanh hơn các công cụ khác.
Tuy nhiên Python cũng khơng phải là khơng có nhược điểm. Nó sử dụng
tương đối nhiều bộ nhớ và tạo ra nhiều thư mục rác. Python là một ngôn ngữ
dynamic typing, do đó làm chậm q trình tìm kiểu các lỗi dữ liệu liên quan tới
việc đặt các dữ liệu khác nhau vào cùng kiểu biến.

19


2.2. Ứng dụng: Trực quan hóa dữ liệu (data visualization)
Để thực hiện các phép phân tích dữ liệu và đưa ra dự đốn, đề xuất, việc
trực quan hóa dữ liệu là rất cần thiết để có thể hình dung được mối quan hệ
trong bộ dữ liệu. Sử dụng các biểu đồ, đồ thị để trực quan hóa dữ liệu giúp
những dữ liệu phức tạp trở nên dễ hiểu và dễ tiếp cận hơn. Vitaly Friedman cho
rằng mục đích chính của việc trực quan hóa dữ liệu là để truyền đạt thông tin
một cách rõ ràng thông qua các biểu đồ, và để đạt được điều đó thì biểu đồ cần
phải vừa có tính thẩm mỹ vừa có sự hiệu quả cao.
Python cung cấp rất nhiều thư viện giúp trực quan hóa đa dạng các loại dữ
liệu khác nhau tùy theo nhu cầu của người sử dụng: bokeh, ggplot, seaborn,…
Tuy nhiên thư viện được sử dụng phổ biến nhất là matplotlib. Đây là một thư
viện vẽ đồ thị rất mạnh mẽ và hữu ích. Nó cung cấp một giao diện lập trình ứng

dụng (API) hướng đối tượng để nhung các biểu đồ vào ứng dụng. Được ra đời
từ năm 2003, matplotlib được coi là thư viện trực quan hóa dữ liệu đầu tiên
trong Python. Hiện nay, dựa trên nền matplotlib, nhiều thư viện khác đã và
đang được xây dựng để hỗ trợ tốt hơn cho mọi nhu cầu của người sử dụng.

Hình 3: Một số biểu đồ được dựng bằng matplotlib

Sau đây em sẽ sử dụng matplotlib để vẽ một số biểu đồ đơn giản.
20


2.2.1. Biểu đồ đường (line chart)
Biểu đồ sau đây diễn tả giá cổ phiếu của Apple Inc. (mã chứng khoán:
AAPL) trong 6 tháng đầu năm 2021.
import matplotlib.pyplot as plt
from pandas_datareader import data
import datetime
start_date = datetime.datetime(2021,1,1)
end_date = datetime.datetime(2021,6,1)
df = data.DataReader(name="AAPL", data_source="yahoo", start=start
_date, end=end_date)
plt.plot(df['Close'].tail(100))
plt.ylabel('Giá')
plt.xlabel('Thời gian')
plt.title('Giá chứng khoán Apple Inc. 6 tháng đầu năm 2021')

Hình 4: Biểu đồ đường

Từ biểu đồ trên ta dễ dàng thấy rằng giá cổ phiếu của Apple Inc. trong
năm 2021 cao nhất vào khoảng cuối tháng 1 và thấp nhất vào giữa tháng 3.

Hiện nay giá cổ phiếu dao động trong khoảng mức 120-130$.
21


2.2.2. Biểu đồ cột (bar chart)
Biểu đồ sau đây so sánh giá cổ phiếu giữa Microsoft (mã chứng khoán:
MSFT) và Facebook (mã chứng khoán: FB) trong 5 ngày từ 21-25/06/2021.

import pandas
import datetime
from pandas_datareader import data
from pandas import Series, DataFrame
start = datetime.datetime(2021, 6,21)
end = datetime.datetime(2021, 6, 25)
df = data.DataReader(["MSFT", "FB"], 'yahoo', start, end)
df = df['Close']
ax = df.plot( kind='bar')
ax.set_xticklabels(df.index.format(), rotation=30, size=10)
plt.locator_params(axis='x', nbins=30)
plt.legend(bbox_to_anchor=(1.05, 1))

Hình 5: Biểu đồ cột

22


2.2.3. Biểu đồ tròn (pie chart)
Biểu đồ sau đây thể hiện các ngơn ngữ lập trình được sử dụng nhất phổ
biến nhất thế giới, số liệu được lấy vào tháng 05/2021.
import matplotlib.pyplot as plt

import numpy as np
x = np.array([13.38, 11.87, 11.74, 7.81, 4.41, 50.79])
mylabels = ["C", "Python", "Java", "C++", "C#", "Khác"]
myexplode = [0, 0.3, 0, 0, 0, 0]
plt.pie(x, labels = mylabels, autopct = '%1.1f%%',
explode = myexplode)
plt.show()

Hình 6: Biểu đồ trịn

Từ biểu đồ trên có thể thấy Python là ngơn ngữ lập trình phổ biến thứ hai
trên thế giới, chỉ sau ngơn ngữ C. Ngồi ra thì chỉ 5 ngơn ngữ C, Python, Java,
C++ và C# đã chiếm tỉ lệ gần bằng với tất cả các ngơn ngữ lập trình khác.
23


2.3. Ví dụ: Xây dựng biểu đồ phân tích chứng khốn
Để tìm hiểu về thị trường chứng khốn, trước hết ta phải biết cách đọc một
biểu đồ chứng khoán. Ở đây em sẽ sử dụng biểu đồ hình nến. Đây là một loại
biểu đồ mô tả chuyển động giá của một chứng khoán trong quá khứ. Biểu đồ
này biểu diễn giá đóng cửa, mở cửa, giá cao nhất và thấp nhất theo ngày của
một chứng khốn

Hình 7: Một biểu đồ dạng hình nến

Hình 8: Diễn giải một biểu đồ hình nến

24



×