Báo cáo thực tập cơ sở PTIT, Dự án tập trung vào việc lấy dữ liệu thô về điện thoại trên các sàn thương mạiđiện tử của các Store lớn sau đó bằng việc sử dụng python để làm sạch dữ liệu.Từ dữ liệu thô sau khi loại bỏ dư thừa và làm sạch chúng ta có tệp dữ liệu cóthể sử dụng được. Cuối cùng sẽ visualization dữ liệu.Đầu vào là dữ liệu về điện thoại của: https:cellphones.com.vn,https:fptshop.com.vn, https:www.thegioididong.com,https:www.hnammobile.com.Thông tin cần lấy được: Tên, giá bán, giá gốc, bộ nhớ.Đầu ra: Các đồ thị được trực quan hoá từ nguồn dữ liệu được làm sạch từ dữ liệu thô
Trang 1- 🕮 -
GIẢNG VIÊN HƯỚNG DẪN: Đinh Xuân Trường SINH VIÊN THỰC HIỆN: Nguyễn Duy Mạnh
MÃ SINH VIÊN: B19DCCN417
LỚP: D19CQCN09-B HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN I
Trang 2Mục Lục
Báo cáo Thực tập cơ sở 1
GIỚI THIỆU CHUNG 5
Mục tiêu thực tập cơ sở 5
Mục tiêu và định hướng của cá nhân 6
PATH LEARNING 6
Quy trình học tập 6
Đề tài dự án (Tuần thứ 6) 6
Nội dung thực tập đề xuất 7
BÁO CÁO TIẾN ĐỘ TỪNG TUẦN 8
Tuần 1 (27/3-3/4) 8
Tuần 2 (3/4-10/4) 9
Tuần 3 (11/4-17/4) 10
Tuần 4 (18/4-24/4) 12
Tuần 5 (25/4-1/5) 13
Tuần 6 (2/5-8/5) 16
Tuần 7 (8/5-15/5) 18
Tuần 8 (15/5-22/5) 20
Tuần 9 +10(22/5-29/5) 21
Nội Dung Dự án TTCS 27
I Giới Thiệu 27
1 Tổng quan 27
2 phát biểu bài toán 27
3 ý nghĩa của dự án 27
4 Quy Trình Dự Án 28
Thu Thập dữ liệu: Thu thập dữ liệu bằng 2 công nghệ là: Scrapy và AkaBot 28
Làm sạch dữ liệu: Chuyển dữ liêu thu thập được dưới dạng Data Frame -> tiến hành làm sạch bằng Python 28
Visualizaton: Sử dụng thư viện Plotly để trực quan hoá dữ liệu 28
Trang 3II Cơ sở lý thuyết và các công nghệ sử dụng 28
1 Tự động hóa quy trình(RPA) bằng Akabot 28
2 pandas.DataFrame 30
3 plotly python (https://plotly.com/python/) 30
4 scrapy 30
5 So Sánh thu thập dữ liệu bằng Scrapy và AkaBot 32
Scrapy 32
AkaBot 32
Thu thập bằng việc đi vào các đoạn HTML để lấy dữ liệu -> sử dụng XPath 32
Thu thập bằng việc đi vào các đoạn HTML để lấy dữ liệu -> sử dụng XPath 32
-Có thể thu thập ở nhiều trang nhờ việc tìm link trong đoạn mã HTML để chuyển trang 32
Thu thập ở 1 trang ( thu thập ở nhiều trang yêu cầu trình độ cao và viết bằng C#)32 -Dữ liệu thô thu được khá sạch 32
Dữ liệu thô thu được trùng lặp và phải xử lí nhiều để sử dụng 32
Không thu thập được ở tất cả các web 32
- Thu Thập được ở tất cả các web và lấy được lượng thông tin đầy đủ bằng việc cào 1 trường nhiều lần 32
III Xử lý dữ liệu và Visualization dữ liệu 32
1 Xử lý dữ liệu 32
2 Visualization 35
IV Đánh giá 45
1 Ưu điểm của dự án 45
2 Nhược điểm của dự án 45
3 Hướng phát triển của dự án 45
Kết Luân Quá Trình Thực Tập 45
I Kết quả đạt được 45
1 Nền tảng lý thuyết 45
2 Dự án 46
II Bài học kinh nghiệm 46
III Những điều cần cải thiện 46
Trang 4Mục Lục Hình Ảnh Báo Cáo Dự Án TTCS( Phần 4)
Hình 1 Sử dụng Extract Stractured Data(B) để lấy dữ liệu thô từ web 29
Hình 2: Xpath của các trường dữ liệu 29
Hình 3: Code lấy dữ liệu từ Cellphones của nhện 31
Hình 4: Dữ liệu thô được lấy từ nhện 32
Hình 5: Dữ liệu chuẩn hoá 33
Hình 6: Dữ liệu cellphones 34
Hình 7: Dữ liệu FPT SHOP 34
Hình 8: Dữ liệu Hà Nam Mobile 35
Hình 9: Dữ liệu Thế Giới Di Động 35
Hình 10: Số lượng điện thoại đang được bán ở các store 36
Hình 11: Lượng tương tác của người dùng tại các store 37
Hình 12: Tìm kiếm điện thoại theo tên 38
Hình 13 tìm kiếm điện thoại theo tên đúng và đưa ra gợi ý cửa hàng nên đến mua 39
Hình 14: Số lượng điện thoại theo hãng ở các store(4 đồ thị) 40
Hình 15: Tỉ lệ điện thoại theo hãng ở các store(4 đồ thị) 41
Hình 16: số lượng điện thoại theo yêu cầu ở 4 chi nhánh 42
Hình 17: Tỉ lệ các hãng điện thoại ở cả 4 Store 43
Hình 18: Tổng số lượng điện thoại các hãng tự chọn ở từng Store 44
Trang 5GIỚI THIỆU CHUNG
Nội dung đề tài có thể nằm một trong các mảng sau: Web/ App/ Công nghệ (Học máy, học sâu, ) Các công nghệ về dữ liệu và ứng dụng công nghệ trong một bài toán cụ thể và theo các định hướng chuyên sâu
Mỗi tuần các nhóm / cá nhân cần có báo cáo tiến độ cụ thể các việc thực hiện được trong tuần Cuối kỳ sẽ đánh giá dựa trên kết quả thực hiện của project và cả quá trình học tập Các nhóm sẽ cần trình bày lại project và gửi báo cáo kết quả Điểm sẽ được đánh giá dựa trên báo cáo tiến độ và kết quả trình bày project vào cuối kỳ
Trang 6Mục tiêu và định hướng của cá nhân
- Mục Tiêu: Trong tương lai gần có thể xin thực tập tại 1 vị trí Data Engineer Xa hơn là làm về mảng Dữ Liệu
- Định hướng cá nhân: Phát triển bản thân theo hướng Data ( DA/DS/DE/ML)
nhưng tập trung vào DE
- Lý do: Mặc dù bản thân em không quá giỏi về code, thuật toán, ngoại ngữ nhưng
em có niềm đam mê với các con số, hình ảnh … ở mức độ lớn(rộng hơn là dữ liệu) Em muốn mình có thể làm việc với những thứ mà hiện tại mình thích Và một lý do nhỏ nữa là em muốn có thể giải quyết những bài toán nhỏ trong kinh doanh bằng việc phân tích dữ liệu tự phát vì em có đam mê khá lớn với kinh
Trang 7Công nghệ muốn sử dụng: Python, Scrapy, Hadoop…
Nội dung thực tập đề xuất
Trình bày được về ETL
3 MongoDB 5 Trình bày và cài đặt cấu
Trang 8BÁO CÁO TIẾN ĐỘ TỪNG TUẦN
Tuần 1 (27/3-3/4)
Hadoop ecosystem tools
Cài đặt được các tool, tìm hiểu khái quát về HDFS, YARN
● tìm hiểu khái quát về kiến trúc HDFS( namenode, datanode, secondary
namenode,blocks); đọc ghi dữ liệu trên HDFS
● cài đặt Hadoop và cấu hình hadoop
Trang 9- setup theo: common/SingleCluster.html
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop Gặp một số lỗi về java ở phiên bản 16 -> hạ phiên bản java
- setup xong gặp lỗi không start được localhost và fix:z
Tuần 2 (3/4-10/4)
Data warehouse & ETL
Mục tiêu tuần 2
Trang 10● Data warehouse dimensional modeling
● ETL: khái niệm; cách thức hoạt đông
● Thư viện Prefect hỗ trợ ETL python
54005a34f10b
- tải MongoDB compass và cài
- MongoDB community server
- mở terminal tiến hành cài
Trang 11tạo thư mục để chứa MongoDB; chuyển thư mục bin vừa tải về vào thư mục vừa
tạo; tạo path cho thư mục vừa tạo
- Hệ thống sẽ báo tạo thêm thư mục /data/db -> không tạo thủ công bằng câu lệnh sudo mkdir được do lỗi Read-only file system
- tạo 1 đường dẫn mới và tạo lại thư mục /data/db và connect thành công
Trang 12Tuần 4 (18/4-24/4)
Đề xuất đề tài: Dữ Liệu Điện Thoại di động ở các trang thương mại điện tử uy tín
ở Việt Nam
● Đề tài về dữ liệu điện thoại di động ở Việt Nam Đề tài đề cập đến các số liệu
thống kê về các trang bán điện thoại di động và các loại điện thoại được bán Kết quả hướng đến tệp dữ liệu về điện thoại di động được làm sạch và các biểu đồ
● Hiện nay để đưa ra được chiến lược kinh doanh của các công ty, cửa hàng…
không thể theo cảm tính vì mang tính chất may rủi chính vì vậy chúng ta cần có
dữ liệu cụ thể trên thị trường hoặc của đối thủ để có thể đưa ra những chiến lược phù hợp
● Hiện nay hầu hết các công ty lớn về bán lẻ đều sử dụng và coi như đó là một cách
để nghiên cứu thị trường Trước hết chúng ta cần lấy dữ liệu thô từ các công cụ được chọn, sau đó tiến hành làm sạch dữ liệu và thống kê dữ liệu theo mục đích và cuối cùng là hiển thị nó thành các biểu đồ để thuận tiện cho việc nắm bắt thông tin
Trang 13và phân tích thị trường
● Đề tài này tuy không lớn nhưng nó áp dụng rất nhiều vào cuộc sống ở các quy mô bán lẻ từ nhỏ đến lớn chính vì vậy mà em chọn đề tài này Cuối cùng đề tài này không chỉ dừng lại ở việc dữ liệu điện thoại di động mà nó còn tương tự ở các lĩnh vực khác
● Cũng bởi vì các nhà bán lẻ lớn cần có chiến lược kinh doanh cụ thể và hiệu quả mà các dự án như thế này có thể giúp họ đưa ra quyết định hoặc có cái nhìn tổng quát hơn nên có rất nhiều người đang nghiên cứu và thực hiện các dự án tương tự như này
● Em chia làm 3 giai đoạn:
● Giai đoạn 1: Lấy dữ liệu thô: Akabot, Scrapy
● Giai đoạn 2: Làm sạch dữ liệu: pandas, numpy
● Giai đoạn 3: visualization: plotly.graph_objects
Tuần 5 (25/4-1/5)
Học về Scrapy và xử lý dữ liệu
Nắm được cách Crawl dữ liệu từ web
● Cài Scrapy:
Trang 14● Tạo project và mở code bằng visual studio code
Trang 15● Test dữ liệu adult
- đọc file và xem thông tin dữ liệu
code:
- kiểm tra dữ liệu null -> dữ liệu không có null -> tiền hành đi visualization
- tiến hành đi visualization
Trang 16Tuần 6 (2/5-8/5)
Cào dữ liệu bằng scrapy: https://www.thegioididong.com/dtdd#c=42&o=9&pi=5 https://cellphones.com.vn/
Trang 17● scrapy genspider [Tên thư mục]
● scrapy genspider [ [Tên thư mục] [link]
● scrapy shell
- fetch(“link")
- response.css(‘ ’)
- đường dẫn
Trang 18Dữ liệu thô về điện thoại của Cellphones
file log:
https://drive.google.com/file/d/16A2eGu28YWp5cH96MobFchsb9l3p1kti/view?usp=sharing
- Akabot cần có tài khoản đăng kí để thực hiện và do FPT Software phát triển
- ở đây em đã cho bot đi vào các thẻ HTML để lấy dữ liệu thô đồng loạt
• Em tìm hiểu về các thẻ HTML và xpath của các giá trị cần lấy
• làm bot thực hiện các thao tác để lấy dữ liệu
Trang 19● https://www.thegioididong.com/dtdd#c=42&o=9&pi=5, https://fptshop.com.vn/,
https://www.thegioididong.com/, https://www.hnammobile.com/
● Link git Akabot (.xaml) và dữ liệu thô:
https://github.com/DuyManh030901/Data_ttcs_akabot.git
Trang 20Hình: Sử dụng Extract Structured Data(B) để lấy dữ liệu
• Lưu dữ liệu dưới dạng File Excel
● Xử lí dữ liệu file xulidata( xem chi tiết ở github)
● Sơ lược về xử lí dữ liệu
Hình: Mô tả dữ liệu dưới dạng Data Frame và thêm các column mà tệp dữ liệu thô
chưa có
Trang 21Hình: [‘ratings’] đã được chuẩn hoá
● Xử lý dữ liệu bằng python -> dữ liệu được chuẩn hoá theo một quy định chung gồm các trường:
Tuần 9 +10(22/5-29/5)
Xử lý dữ liệu thô và Visualization dữ liệu( demo trước các đồ thị)
● Xử lý loại bỏ dư thừa dữ liệu bằng excel
● linkgit:
https://github.com/DuyManh030901/Data_ttcs_akabot/tree/master/Data_ttcs/code
- Thư mục data là dữ liệu đã được loại bỏ dư thừa
- xử lý loại bỏ những dòng trống, dữ liệu dư thừa bằng excel ( khi thu thập cùng 1 ô
có thể chứa nhiều giá trị -> khi thu thập như vậy những ô có ít giá trị có thể gây thừa -> tiến hành loại bỏ)
- sử dụng những câu code excel để xử lý dữ liệu đơn giản ( Khi thu thập dữ liệu bằng akabot cùng 1 trường nhưng phải thu nhiều lần để lấy được toàn bộ dữ liệu -> tiến hành ghép cột)
• Sơ lược về xử lí dữ liệu
Hình: Đọc dữ liệu và tiến hành đánh giá dữ liệu để đưa ra hướng xử lí; Tiếp đó là
đưa dữ liệu về dạng DataFrame
Trang 22Hình: Chuẩn hoá giá bán [‘price_selloff’] bằng cách loại bỏ ‘nan’ và các kí tự thừa
và đưa giá bán về dạng float
• Dữ liệu thu được
Hình: kiểu dữ liệu thu được sau khi làm sạch
● Xử lý dữ liệu bằng python file xulidataakabot-> dữ liệu được chuẩn hoá theo một
quy định chung gồm các trường:
● Dữ liệu cuối cùng được lưu dưới dạng _final.csv
● Sử Dụng thư viện Plotly để tiến hành trực quan hoá dữ liệu
Trang 23Hình: Số lượng điện thoại theo hãng ở các store(4 đồ thị)
Trang 24Hình: Tỉ lệ điện thoại theo hãng ở các store(4 đồ thị)
Trang 26Hình: Tỉ lệ các hãng điện thoại ở cả 4 Store
Trang 27để có thể dung hòa các yếu tố(giá tiền, sản phẩm, ) với nhau để cạnh tranh và phát triển.
Hiện nay ở Việt Nam có rất nhiều nhà bán lẻ điện thoại với lượng thông tin khổng lồ mà chúng ta có thể lấy được
Thông tin quan trọng mà chúng ta cần biết về một điện thoại là: tên, giá bán, giá gốc, bộ nhớ
2 phát biểu bài toán
Dự án tập trung vào việc lấy dữ liệu thô về điện thoại trên các sàn thương mại điện tử của các Store lớn sau đó bằng việc sử dụng python để làm sạch dữ liệu
Từ dữ liệu thô sau khi loại bỏ dư thừa và làm sạch chúng ta có tệp dữ liệu có thể sử dụng được Cuối cùng sẽ visualization dữ liệu
Đầu vào là dữ liệu về điện thoại của: https://cellphones.com.vn/,
https://fptshop.com.vn/, https://www.thegioididong.com/,
https://www.hnammobile.com/
Thông tin cần lấy được: Tên, giá bán, giá gốc, bộ nhớ
Đầu ra: Các đồ thị được trực quan hoá từ nguồn dữ liệu được làm sạch từ dữ liệu thô
3 ý nghĩa của dự án
Kinh doanh luôn là sự cạnh tranh của nhiều phía; đối với các nhà bán lẻ thì
sự cạnh tranh này càng lớn hơn nhất là khi các mặt hàng điện thoại có lượng tiêu thụ lớn ở thị trường Việt Nam
Dự án giúp cho các nhà bán lẻ giải quyết được việc đưa ra quyết định một
Trang 28è Dự án hỗ trợ các nhà bán lẻ có thể đưa ra quyết định hoặc đưa ra kế hoạch
Marketing; Giúp cho người dùng có cái nhìn tổng quát hơn về giá của các loại điện thoại
4 Quy Trình Dự Án
Thu Thập dữ liệu: Thu thập dữ liệu bằng 2 công nghệ là: Scrapy và AkaBot Làm sạch dữ liệu: Chuyển dữ liêu thu thập được dưới dạng Data Frame -> tiến hành làm sạch bằng Python
Visualizaton: Sử dụng thư viện Plotly để trực quan hoá dữ liệu
II Cơ sở lý thuyết và các công nghệ sử dụng
1 Tự động hóa quy trình(RPA) bằng Akabot
RPA là viết tắt của Robotic Process Automation (Tự động hóa quy trình bằng robot), chỉ một phần mềm được tích hợp vào máy tính, robot, có khả năng
bắt chước thực hiện các hoạt động của con người Thông qua việc thu thập các
dữ liệu, RPA sẽ mô phỏng thao tác lặp đi lặp lại thường xuyên và thay thế con người xử lý các tác vụ kỹ thuật số như diễn giải, kích hoạt hay giao tiếp với ứng dụng và hệ thống Việc dùng RPA trong một số công đoạn giúp giảm chi phí cho nguồn nhân lực, cũng như hạn chế những rủi ro về sai sót trong quá trình sản xuất, kinh doanh
Sự khác biệt của RPA với AI là: khi sử dụng RPA, bạn sẽ "dạy" cho máy làm theo mình, còn với AI, bạn sẽ phải nạp một khối lượng dữ liệu nền tảng "khủng"
để chúng tự học
Ưu điểm của RPA: Tiết kiệm thời gian và cải thiện thông lượng tốt hơn Linh hoạt và có khả năng mở rộng dữ liệu cần thiết Độ chính xác rất cao Nhân viên của bạn sẽ không phải tập trung vào nhiều quá trình dư thừa, chỉ cần lo những công việc
có khả năng phát triển công việc cao hơn Phần mềm tự động hóa có thể kiểm soát được cả quả trình thực hiện Bạn có nhiều thời gian hơn, có thể tập trung đem đến sự đổi mới và làm hài lòng khách hàng của mình Thu thập dữ liệu và phân tích chuẩn xác Dễ sử dụng và có khả năng phủ sóng rộng trong nhiều doanh nghiệp lớn nhỏ.Một số phần mềm RPA lớn: UiPath, OFFICEROBOT, Aiwozo, AkaBot… Akabot: là giải pháp tự động hoá do FPT Software phát triển và có mặt trong top 10 giải pháp RPA toàn cầu Phù hợp với người Việt và dễ dàng để tiếp cận ở mức cơ bản Và cuối cùng đây là giải pháp có trả phí
Sử dụng AkaBot ở dự án này giúp việc cào dữ liệu từ web trở nên nhanh chóng và dễ dàng hơn tuy nhiên dữ liệu thô lấy được rất cồng kềnh và bị trùng lặp
Trang 29Hình 1 Sử dụng Extract Stractured Data(B) để lấy dữ liệu thô từ web
Trang 302 pandas.DataFrame
Pandas DataFrame là một cấu trúc chứa dữ liệu hai chiều và các nhãn tương ứng của nó DataFrames được sử dụng rộng rãi trong data science, machine
learning, scientific computing và nhiều lĩnh vực sử dụng nhiều dữ liệu khác
DataFrames tương tự như SQL tables hoặc bảng tính mà bạn làm việc trong Excel hoặc Calc Trong nhiều trường hợp, DataFrame nhanh hơn, dễ sử dụng hơn và mạnh hơn bảng hoặc spreadsheets vì chúng là một phần không thể thiếu của hệ sinh thái Python và NumPy
Tại sao không sử dụng NoSql mà sử dụng Pandas DataFrame:
• Tệp dữ liệu chưa đủ phức tạp chính vì vậy việc sử dụng Data Frame trở nên dễ dàng hơn
• Phù hợp với dự án nhỏ
• Ở dự án chưa phát triển thành web, app… mà chỉ đơn thuần trên desktop nên việc
sử dụng Data Frame là hợp lý hơn
3 plotly python ( https://plotly.com/python/ )
Plotly (plotly.py) trong Python là một thư viện đồ họa tương tác, mã nguồn
mở, và dựa trên nền tảng trình duyệt So với các thư viện đồ họa phổ biến khác của
Python như Matplotlib, Pandas,Visualization hay Seaborn thì Plotly có một lợi thế
lớn khi tạo ra các biểu đồ tương tác nhất
Hiện tại thư viện Plotly hỗ trợ đa dạng các loại biểu đồ với 15 loại biểu đồ cơ bản, 12 loại biểu đồ Thống kê, 20 loại biểu đồ Khoa học, 8 loại biểu đồ Tài chính,
12 loại bản đồ, 14 loại biểu đồ 3D và nhiều tiện ích khác
Dự án sử dụng hai loại biểu đồ chính là Cột và Tròn Chính vì vậy việc sử dụng Plotly sẽ dễ dàng tiếp cận hơn
Mong muốn phát triển dưới dạng web -> sử dụng Plotly phù hợp cho việc phát triển
4 scrapy
Scrapy là một khung thu thập thông tin web mã nguồn mở và miễn phí được viết bằng Python Ban đầu được thiết kế để tìm kiếm web, nó cũng có thể được sử dụng để trích xuất dữ liệu bằng cách sử dụng API hoặc như một trình thu thập thông tin web có mục đích chung
So sánh với AkaBot về việc thu thập dữ liệu: