Trước khi vào việc vẽ biểu đồ thể hiện dữ liệu thì chúng ta cần tổng quan dữ liệu của các cột: .... Tiếp theo là thực hiện phân tích thống kê trên dữ liệu để xác định xu hướng và mối liê
Trang 1ỦY BAN NHÂN DÂN THÀNH PHỐ HỒCHÍ MINH TRƯỜNG ĐẠI HỌC SÀI GÒNKHOA CÔNG NGHỆ THÔNG TIN
TÊN ĐỀ TÀI:
Phân tích dữ liệu trên PySpark
Giảng viên hướng dẫn: PGS.TS Nguyễn Tuấn ĐăngThành viên nhóm thức hiện:
Họ và Tên: Phan Tuấn Kiệt - 3120411082
Họ và Tên: Lê Hoàng Nhựt - 3120411111
Họ và Tên: Trương Tấn Phát - 3120411114Lớp: DCT120C2
TP HỒ CHÍ MINH, tháng 5 năm 2023
Trang 2MỤC LỤC
MỞ ĐẦU 1
NỘI DUNG 2
I Khái Niệm 2
1.1 Khái niệm Phân Tích Dữ Liệu 2
1.2 Khái niệm về PySpark 2
1.3 Khái niệm về Apache Spark ? 3
1.4 Ưu điểm và Nhược điểm của Pyspark 4
II Triển khai nội dung 5
1) Chúng ta sẽ thực hiện bằng Pyspark DataFrame nên chúng ta cần 5
thực hiện theo các bước sau đây: 5
a Import các thư viện cần thiết cho việc phân tích dữ liệu: 5
b Do làm việc trên Pyspark nên ta cần tạo Spark và truyền vào đấy dữ liệu mà cần phân tích: 6
c Sau khi truyền dữ liệu vào ta sẽ cần kiểm tra thông tin của dữ liệu và các dòng đầu tiên của dữ liệu: 6
d Tiền xử lý dữ liệu: Chúng ta cần chắc chắn rằng kiểu dữ liệu của các cột đều chính xác Vì kiểu dữ liệu sẽ ảnh hưởng đến quá trình phân tích dữ liệu của chúng ta 7
e Tiếp đến chúng ta cần làm sạch dữ liệu để chắc chắn rằng không có dữ liệu mang giá trị Null: 8
f Tiếp theo việc kiểm tra giá trị Null chúng ta cần kiểm tra các giá trị trùng lặp: 9
g Trước khi vào việc vẽ biểu đồ thể hiện dữ liệu thì chúng ta cần tổng quan dữ liệu của các cột: 9
h Chúng ta sẽ tiến hành vẽ biểu đồ tròn cho sản phẩm đã được mua: 10
h1 Cách 1: Chuyển Pandas để vẽ 10
h2 Cách 2: Vẽ trực tiếp không chuyển qua Pandas 10
i Biểu đồ thống kê sản phẩm được mua theo giới tính: 12
i1 Cách 1 : Dùng Matplotib vẽ 12
i2 Cách 2 : Dùng Seaborn vẽ 12
i3 Cách 3 : Dùng scatterplot() để vẽ 12
j Biểu đồ trung bình dặm đối với mỗi sản phẩm: 14
j1 Cách 1 :Chuyển Pandas để vẽ 14
Trang 3j2 Cách 2 :Vẽ trực tiếp không chuyển Pandas để vẽ 14
k Biểu đồ phạm vi khách hàng: 16
k1.Cách 1 : Chuyển Pandas để vẽ 16
k2 Cách 2: Vẽ trực tiếp không chuyển qua Pandas 16
l Biểu đồ thể hiện tương quan giữa Income, Age, Product, Usage: 18
l1 Cách 1 : Dùng Replot() để vẽ 18
l2 Cách 2: Dùng Matplotlib để vẽ 18
m Tính toán ma trận tương quan của dữ liệu Cardio và vẽ biểu đồtrực quan cho dữ liệu đã tính: 21 m1 Cách 1 :Vẽ Bằng Seaborn 22
m2 Cách 2 : Vẽ trực tiếp không chuyển Pandas 22
m3 Cách 3: Dùng matplotlib để vẽ 23
2) Sau khi chúng ta tổng quan dữ liệu để thống kê chúng ta bắt đầu tính toán bằng các kỹ thuật hồi qui: 26
a Chia dữ liệu thành các tập Train và Test: 26
b Áp dụng Linear Regression: 26
c Áp dụng Logistic Regression: 27
d Áp dụng Decision Tree Classifier: 28
III Kết Luận: 29
IV Tài Liệu Tham Khảo: 30
V Phụ Lục 30
Trang 4MỤC LỤC HÌNH ẢNH
Hình 1: Các tính năng của Apache Spark 3
Hình 2: Import các thư viện 5
Hình 3: Tạo Spark và truyền dữ liệu vào Spark 6
Hình 4: Hiện thông tin của dữ liệu 6
Hình 4.1: Kết quả thông tin dữ liệu 6
Hình 4.2: Kiểm tra dữ liệu 7
Hình 4.3: Kết quả sau khi kiểm tra dữ liệu 7
Hình 5: Chuyển đổi kiểu dữ liệu 7
Hình 5.1: Kết quả sau khi chuyển đổi 8
Hình 6: Kiểm tra giá trị Null trong dữ liệu 8
Hình 6.1: Kết quả Null của dữ liệu 8
Hình 7: Loại bỏ các giá trị trùng lặp 9
Hình 7.1: Kết quả loại bỏ 9
Hình 8: Tổng quan dữ liệu 9
Hình 8.1: Kết quả của việc tổng quan 10
Hình 9: Thực hiện việc vẽ biểu đồ cho sản phẩm bằng cách 1 10
Hình 9.1 : Thực hiện việc vẽ biểu đồ cho sản phẩm bằng cách 2 11
Hình 9.2: Biểu đồ tròn cho các sản phẩm bán được vẽ bằng Cách 1 11
Hình 9.3: Biểu đồ tròn cho các sản phẩm bán được vẽ bằng Cách 2 11
Hình 10: Thực hiện vẽ biểu đồ thống kê sản phẩm theo giới tính theo cách 1 12
Hình 10.1: Thực hiện vẽ biểu đồ thống kê sản phẩm theo giới tính theo cách 2 12
Hình 10.2: Biểu đồ thể hiện sản phẩm mua theo giới tính 13
Hình 10.3: Biểu đồ thể hiện sản phẩm mua theo giới tính 13
Hình 11: Thực hiện vẽ trung bình dặm bằng cách 1 14
Hình 11.1: Thực hiện vẽ trung bình dặm bằng cách 2 14
Hình 11.2: Biểu đồ dặm cho mỗi sản phẩm bằng cách 1 15
Hình 11.3: Biểu đồ dặm cho mỗi sản phẩm bằng cách 2 15
Hình 12: Thực hiện trực quan phạm vi khách hàng bằng cách 1 16
Hình 12.1: Thực hiện trực quan phạm vi khách hàng bằng cách 2 16
Hình 12.2: Vẽ biểu đồ trực quan phạm vi khách hàng bằng cách 1 17
Trang 5Hình 13: Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 1 18
Hình 13.1: Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 2 18
Hình 13.2 : Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 3 19
Hình 13.3 : Biểu đồ trực quan I, A, U,P bằng cách 1 19
Hình 13.4: Biểu đồ trực quan I, A, U,P bằng cách 2 20
Hình 13.5 Biểu đồ trực quan I, A, U,P bằng cách 3 20
Hình 14 : Tính toán ma trận tương quan 21
Hình 14.1 : Vẽ bản đồ của ma trận tương quan bằng cách 1 22
Hình 14.2 : Vẽ bản đồ của ma trận tương quan bằng cách 2 22
Hình 14.3: Vẽ bản đồ của ma trận tương quan bằng cách 3 23
Hình 14.4: Ma trận tương quan của dữ liệu Cardio 24
Hình 14.5: Biểu đồ trực quan cho ma trận tương quan bằng cách 1 24
Hình 14.6: Biểu đồ trực quan cho ma trận tương quan bằng cách 2 25
Hình 14.6: Biểu đồ trực quan cho ma trận tương quan bằng cách 3 25
Hình 15: Thực hiện việc chia dữ liệu thành Train và Test 26
Hình 16: Thực hiện áp dụng Linear Regression 26
Hình 16.1: Kết quả độ chính xác của mô hình 27
Hình 17: Thực hiện Logistic Regression 27
Hình 17.1: Kết quả độ chính xác của mô hình 27
Hình 18: Thực hiện Decision Tree Classifier 28
Hình 18.1: Kết quả độ chính xác của mô hình 28
Trang 7Dự án Cardio Good Fitness là chiến lược phân tích dữ liệu sử dụng Python
và PySpark để xem xét kỹ lưỡng dữ liệu từ một công ty có tên là Cardio GoodFitness chuyên sản xuất thiết bị thể dục Có những thông tin về khách hàng như làtuổi , họ tên ,phản hồi của khách hàng khi sử dụng sản phẩm của công ty
Mục tiêu chính của dự án là tạo điều kiện cho công ty hiểu được khách hàng
và cách sử dụng sản phẩm của họ Các kỹ thuật phân tích dữ liệu được sử dụngtrong dự án bao gồm làm sạch dữ liệu, khám phá, trực quan hóa và phân tích thốngkê
Tiếp theo là thực hiện phân tích thống kê trên dữ liệu để xác định xu hướng
và mối liên hệ giữa các biến khác nhau, bao gồm phân tích tương quan để xác địnhcường độ và hướng của mối quan hệ giữa các biến khác nhau
Cuối cùng, dự án kết thúc bằng cách trình bày một loạt khuyến nghị choCardio Good Fitness dựa trên những hiểu biết thu được từ phân tích dữ liệu Những
đề xuất này bao gồm các đề xuất cải tiến sản phẩm, chiến lược tiếp thị và sáng kiếnthu hút khách hàng
Mục đích của bài báo cáo này là thực hiện một dự án phân tích dữ liệu trên nền tảngPySpark, sử dụng các công cụ và kỹ thuật của ngôn ngữ lập trình Python Dự ánxoay quanh chương trình Cardio Good Fitness, bao gồm việc xem xét kỹ lưỡng dữliệu khách hàng cho một công ty sản xuất sản phẩm thể dục
Bài tiểu luận này bao gồm phần giới thiệu về PySpark và dự án Cardio Good Fitness,tiền xử lý dữ liệu, phân tích dữ liệu khám phá và triển khai các thuật toán máy học
để dự đoán hành vi của khách hàng Mục tiêu cuối cùng là cung cấp một ví dụ thực
tế về cách PySpark có thể được sử dụng để phân tích các tập dữ liệu lớn và đưa raquyết định sáng suốt
Trang 8NỘI DUNG
I Khái Niệm
1.1 Khái niệm Phân Tích Dữ Liệu
Phân tích dữ liệu chuyển đổi dữ liệu thô thành thông tin chuyên sâu hữu ích.Quá trình này bao gồm đa dạng các công cụ, công nghệ và quy trình được áp dụng
để tìm kiếm xu hướng và giải quyết vấn đề bằng dữ liệu Phân tích dữ liệu có thểđịnh hình các quy trình kinh doanh, cải thiện khả năng ra quyết định và thúc đẩytăng trưởng doanh nghiệp
Phân tích dữ liệu được áp dụng trong một số ngành và lĩnh vực như tài chính,chăm sóc sức khỏe, tiếp thị và nghiên cứu khoa học Nó cho phép các tổ chức xácđịnh xu hướng, mẫu và mối quan hệ trong dữ liệu của họ, mà họ có thể sử dụng đểđưa ra quyết định sáng suốt, hợp lý hóa hoạt động và nâng cao kết quả
Trong thời đại dữ liệu lớn ngày nay, nơi các tổ chức thu thập và lưu trữlượng thông tin khổng lồ hàng ngày, phân tích dữ liệu đóng một vai trò quan trọng.Bằng cách sử dụng sức mạnh của phân tích dữ liệu, các tổ chức có thể có đượcthông tin chi tiết về khách hàng và hoạt động của họ
1.2 Khái niệm về PySpark
PySpark là API Python cho Apache Spark Nó cho phép bạn thực hiện xử lý
dữ liệu quy mô lớn thời gian thực trong môi trường phân tán bằng Python Nó cũngcung cấp một PySpark shell để phân tích dữ liệu của bạn một cách tương tác.PySpark kết hợp khả năng học và sử dụng dễ dàng của Python với sức mạnhcủa Apache Spark để cho phép xử lý và phân tích dữ liệu bất kỳ kích thước cho tất
cả mọi người quen thuộc với Python
PySpark hỗ trợ tất cả các tính năng của Spark như Spark SQL, DataFrames,Structured Streaming, Machine Learning (MLlib) và Spark Core
Trang 91.3.Khái niệm về Apache Spark ?
Apache Spark là một framework xử lý dữ liệu mã nguồn mở trên quy
mô lớn Spark cung cấp một giao diện để lập trình các cụm tính toán songsong với khả năng chịu lỗi Ban đầu Spark được phát triển tại AMPLab củaĐại học California Berkeley, sau đó mã nguồn được tặng cho ApacheSoftware Foundation vào năm 2013 và tổ chức này đã duy trì nó cho đến nay.Khả năng tính toán phân tán của Apache Spark khiến nó rất phù hợpvới big data và machine learning, vốn đòi sức mạnh tính toán khổng lồ để làmviệc trên các kho dữ liệu lớn Spark cũng giúp loại bỏ một số gánh nặng lậptrình khỏi vai của các nhà phát triển với một API dễ sử dụng đảm nhiệm phầnlớn công việc khó khăn của tính toán phân tán và xử lý dữ liệu lớn
Hình 1: Các tính năng của Apache Spark
Trang 101.4 Ưu điểm và Nhược điểm của Pyspark
Ưu điểm :
- Khả năng mở rộng: PySpark có thể xử lý phân tích và xử lý dữ liệu quy môlớn Nó có thể chi phối khối lượng công việc trên nhiều máy, giúp dự án dễ dàngtăng và giảm quy mô khi cần
- Tốc độ: PySpark xử lý dữ liệu với tốc độ cao Nó có thể xử lý dữ liệu nhanhhơn tới 100 lần so với Hadoop MapReduce truyền thống
- Tính linh hoạt: PySpark có thể tích hợp với nhiều nguồn dữ liệu và công cụkhác nhau, bao gồm Hadoop, Hive, Cassandra và Kafka, cho phép người dùng viếtcode bằng nhiều ngôn ngữ, bao gồm Python, Java và Scala
- Máy học: PySpark cung cấp một thư viện máy học mạnh mẽ, cho phépngười dùng xây dựng và đào tạo các mô hình phức tạp trên các tập dữ liệu lớn
Trang 11II.Triển khai nội dung
1)Chúng ta sẽ thực hiện bằng Pyspark DataFrame nên chúng ta cầnthực hiện theo các bước sau đây:
a Import các thư viện cần thiết cho việc phân tích dữ liệu:
Hình 2: Import các thư viện
Trang 12b Do làm việc trên Pyspark nên ta cần tạo Spark và truyền vào đấy
dữ liệu mà cần phân tích:
Hình 3: Tạo Spark và truyền dữ liệu vào Spark
c Sau khi truyền dữ liệu vào ta sẽ cần kiểm tra thông tin của dữliệu và các dòng đầu tiên của dữ liệu:
Hình 4: Hiện thông tin của dữ liệu
OutPut:
Hình 4.1: Kết quả thông tin dữ liệu
Trang 13Hình 4.2: Kiểm tra dữ liệu
Hình 4.3: Kết quả sau khi kiểm tra dữ liệu
d Tiền xử lý dữ liệu: Chúng ta cần chắc chắn rằng kiểu dữ liệu củacác cột đều chính xác Vì kiểu dữ liệu sẽ ảnh hưởng đến quátrình phân tích dữ liệu của chúng ta
Hình 5: Chuyển đổi kiểu dữ liệu
Trang 14Tại đây ta tiến hành gán cột Product, Gender, Marital Status thành kiểu String.
Hình 5.1: Kết quả sau khi chuyển đổi
e Tiếp đến chúng ta cần làm sạch dữ liệu để chắc chắn rằng không
có dữ liệu mang giá trị Null:
Hình 6: Kiểm tra giá trị Null trong dữ liệuOutput: Ta có thể thấy dữ liệu không hề mang giá trị Null
Hình 6.1: Kết quả Null của dữ liệu
Trang 15f Tiếp theo việc kiểm tra giá trị Null chúng ta cần kiểm tra các giátrị trùng lặp:
Trang 16Hình 8.1: Kết quả của việc tổng quan
h Chúng ta sẽ tiến hành vẽ biểu đồ tròn cho sản phẩm đã được mua:h1 Cách 1: Chuyển Pandas để vẽ
Hình 9: Thực hiện việc vẽ biểu đồ cho sản phẩm bằng cách 1h2 Cách 2: Vẽ trực tiếp không chuyển qua Pandas
Trang 17Hình 9.1 : Thực hiện việc vẽ biểu đồ cho sản phẩm bằng cách 2Output: Thông qua biểu đồ ta có thể thấy được sản phẩm TM195 được bánnhiều nhất so với 2 sản phẩm còn lại trong khi TM798 lại được mua ít nhất.
Hình 9.2: Biểu đồ tròn cho các sản phẩm bán được vẽ bằng Cách 1
Trang 18i Biểu đồ thống kê sản phẩm được mua theo giới tính:
Trang 19Output: Qua biểu đồ ta thấy được các sản phẩm được ưa chuộng khác nhauvới giới tính của họ Cả sản phẩm TM195 và TM498 có vẻ đồng đều về mặtgiới tính Riêng TM 798 có vẻ chỉ phổ biến đối với nam.
Hình 10.2: Biểu đồ thể hiện sản phẩm mua theo giới tính
Hình 10.3: Biểu đồ thể hiện sản phẩm mua theo giới tính
Trang 20j Biểu đồ trung bình dặm đối với mỗi sản phẩm:
j1 Cách 1 :Chuyển Pandas để vẽ
Hình 11: Thực hiện vẽ trung bình dặm bằng cách 1j2 Cách 2 :Vẽ trực tiếp không chuyển Pandas để vẽ
Hình 11.1: Thực hiện vẽ trung bình dặm bằng cách 2
Trang 21Output: Qua biểu đồ này ta có thể thấy sản phẩmTM798 những người đibộ/chạy sử dụng nhiều hơn so với sản phẩm khác.
Hình 11.2: Biểu đồ dặm cho mỗi sản phẩm bằng cách 1
Hình 11.3: Biểu đồ dặm cho mỗi sản phẩm bằng cách 2
Trang 23Output: Ta có thể thấy khách hàng có thu nhập trong khoảng 30000 - 100000,
rõ ràng hơn nằm trong phạm vi lương thấp và kiếm ít hơn 70000
Hình 12.2: Vẽ biểu đồ trực quan phạm vi khách hàng bằng cách 1
Hình 12.3: Vẽ biểu đồ trực quan phạm vi khách hàng bằng cách 2
Trang 24l Biểu đồ thể hiện tương quan giữa Income, Age, Product, Usage:l1 Cách 1 : Dùng Replot() để vẽ
Hình 13: Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 1l2 Cách 2: Dùng Matplotlib để vẽ
Hình 13.1: Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 2l3 Cách 3 : Dùng scatterplot() để vẽ
Trang 25Hình 13.2 : Thực hiện việc trực quan dữ liệu I, A, U,P bằng cách 3Output: Thông qua biểu đồ ta có thể thấy được người có độ tuổi từ 23 - 35 tậptrung nhiều hơn và những người có Income dưới 70000 mua sản phẩmTM195 và TM498 Còn TM798 được khách hàng trong độ tuổi 23 - 30 vàngười có thu nhập trên 70000.
Hình 13.3 : Biểu đồ trực quan I, A, U,P bằng cách 1
Trang 26Hình 13.4: Biểu đồ trực quan I, A, U,P bằng cách 2
Hình 13.5 Biểu đồ trực quan I, A, U,P bằng cách 3
Trang 27m Tính toán ma trận tương quan của dữ liệu Cardio và vẽ biểu đồtrực quan cho dữ liệu đã tính:
Các thông tin này cho biết được các thông tin mới và sự phụ thuộc của dữ liệuvới nhau
Chúng ta có thể thấy được có sự tương quan mạnh 0.79 giữa Fitness và Miles.Điều này thấy được khách hàng có xu hướng chạy nhiều hơn trên máy chạy bộ.Trong khi tương quan giữa Fitness và MilesPerUsage là 0.56 có nghĩa là họ thườngxuyên chạy hơn là đi bộ
Mối liên giữa Education và Income là 0.63 điều này có thể thấy đượcIncome của họ sẽ cao hơn nếu họ dạy được nhiều năm hơn
Mối tương quan tích cực mạnh giữa việc mua TM798 dựa vào yếu tố Fitness(0,73), Income (0,71), Miles (0,66), Usage (0,65) và Education (0,58) Trong khi đó,
có mối tương quan thấp hơn giữa việc mua TM498 hoặc TM198
Hình 14 : Tính toán ma trận tương quan
Trang 29m3 Cách 3: Dùng matplotlib để vẽ
Hình 14.3: Vẽ bản đồ của ma trận tương quan bằng cách 3
Trang 30Hình 14.4: Ma trận tương quan của dữ liệu Cardio
Hình 14.5: Biểu đồ trực quan cho ma trận tương quan bằng cách 1
Trang 31Hình 14.6: Biểu đồ trực quan cho ma trận tương quan bằng cách 2