Hành trình phân tích dữ liệu với Python

Tôi đã đến với Python như thế nào? Câu chuyện về trải nghiệm các “Tool” phân tích dữ liệu

Nếu các bạn đang quan tâm đến học về phân tích dữ liệu và lập trình cơ bản phục vụ công việc của mình. Để tôi kể các bạn nghe câu chuyện tôi học phân tích dữ liệu với Python & Google Appscript (JavaScript) như thế nào.
Quay lại những năm 2016, khi mới chập chững làm quen với công việc của 1 chuyên viên digital marketing tập sự tại Adayroi, để ý thấy đồng nghiệp sử dụng Add-in Analytic Edge (bản free) để tải báo cáo từ GA về Excel mỗi ngày vào mỗi buổi sáng, vốn lười biếng làm những việc tay chân tôi tự hỏi liệu có cách nào đỡ tốn sức hơn không.

Phân tích dữ liệu bằng Google Looker Studio (Data Studio)

Cũng năm 2016, Google Data Studio (GDS) ra mắt bản thử nghiệm Beta, tôi bắt gặp thông báo này khi đang xem báo cáo trên GA, thế là thử dùng luôn và thực sự yêu thích nó. Thời đó GDS không có nhiều connector từ các 3rd parties như bây giờ (nhà giàu mới mua dùng) nhưng Google cho phép kết nối nhiều sản phẩm hiện có của Google, hữu dụng nhất phải kể đến Google Ads, Google Analytics, Search Console và Google Sheets nữa. Không ngần ngại bỏ nguyên 1 ngày chủ nhật ở nhà để vọc và làm quen với GDS, sau đó tôi đã có thể xây dựng cho mình 1 dashboard cơ bản đầu tiên để quản lý chiến dịch Google Adwords, báo cáo từ GA và Search console tự refresh mỗi ngày. Ủa vậy Facebook muốn xem chung dashboard thì làm thế nào?

Câu trả lời là mua connector của Supermetrics cho GDS, hoặc mua Supermetrics cho Google Sheets hoặc tự tải báo cáo Facbeook về và làm nốt bước tay chân là copy/paste vào 1 file Google Sheets, nhưng giới hạn của Sheets chỉ là 5 triệu cell vì vậy muốn kết nối nhiều dữ liệu phải tạo nhiều file, tuy vâỵ khi nhiều dữ liệu cần xử lý, Google Sheets sẽ khó tải file và chậm rõ rệt. GDS là 1 công cụ hoàn toàn miễn phí, đơn giản, biểu diễn dữ liệu khá ngon lành nhưng khi làm ở góc độ cá nhân hoặc doanh nghiệp nhỏ vẫn gặp nhiều trở ngại đặc biệt là khâu xử lý dữ liệu thô trước khi muốn biểu diễn hay tìm ra insight gì đó. Ở góc độ doanh nghiệp thì không phải doanh nghiệp nào cũng dùng Google Cloud hay Big Query để tận dụng sức mạnh của Cloud. Với tôi, GDS gãy ở đoạn làm sao kết nối được nhiều nguồn dữ liệu với chi phí thấp hoặc miễn phí, làm sao xử lý dữ liệu thô thuận tiện và tốc độ xử lý dữ liệu là điều đáng quan tâm. 

Microsoft Power BI, Power Query và Power Pivot

Vẫn là câu chuyện nhanh tay, nhanh mắt. Khi đi làm, thấy đông nghiệp có gì hay ho mình cũng tìm hiểu, thấy team BI dùng Power Pivot tôi về tìm hiểu xem hình thù nó như nào và cố gắng tận dụng để cải thiện hiệu quả công việc. Tiếp đến team BI nâng cấp dần lên sử dụng Power BI, Power Query tôi tìm hiểu và tự học tiếp. Với Power Pivot thì môi trường sử dụng chủ yếu là trên Desktop, nguồn dữ liệu kết nối được cũng không quá đa dạng, làm QC nếu muốn xây dựng 1 dashboard và theo dõi hiệu quả chiến dịch ngay cả khi không tiện mở máy tính thì đây không phải lựa chọn tốt nên tôi quyết định không đầu tư nhiều nỗ lực. Tương tự, với Power BI, tuy vượt trội về các connector, khả năng mạnh mẽ nhưng lại là 1 phần mềm hướng đến đối tượng doanh nghiệp nhiều hơn, đúng nghĩa là phần mềm phân tích dữ liệu chuyên nghiệp, vượt trội hẳn Excel, Power Pivot. Thế nhưng trong trường hợp tôi muốn tạo dashboard truy cập được cả trên điện thoại thì phải mua liciense cho tài khoản tạo dashboard, trả phí hàng tháng thêm cho 1 tài khoản để cấp quyền xem báo cáo cho cả team. Hơn nữa, nếu có database, server thì cũng mới thực hiện refresh dữ liệu hoàn toàn tự động được. Bởi vậy đây cũng không phải bộ công cụ phù hợp phục vụ cho nhu cầu cá nhân, doanh nghiệp nhỏ và cả đối với người không lấn quá sâu vào dữ liệu, kỹ thuật thì đây không phải lựa chọn của tôi nên tôi không cố gắng đào sâu nữa.

Google Apps Script (GAS) và APIs

Nhìn thấy những điểm yếu về các nguồn cấp dữ liệu, để phục vụ tốt cho nhu cầu phân tích dữ liệu của mình về báo cáo, theo dõi hiệu quả công việc mà không phải trả phí hàng tháng, tôi đầu tư thời gian vào Google Apps Script (GAS). Những năm trước đây, các bạn pro về excel hẳn sẽ lận lưng cho mình những macro, code để tuỳ biến và thực thi các các tác vụ tự động, nhưng đội ngũ này cũng không quá phổ biến. Ngôn ngữ của macro không thân thiện đối với tôi và cũng chủ yếu làm việc trên Desktop nên nếu phải lựa chọn một ngôn ngữ để thực hiện những việc macro có thể làm, tôi chọn Google Apps Sript (GAS). Quay lại những năm 2016, hẳn sẽ có nhiều bạn còn nhớ những đoạn script được chia sẻ bởi PPC Hero, Optimyz để điều chỉnh bid tự động theo giờ, thêm negative keywords, đôi khi là quản lý ngân sách. Về sau này Google phát hành GAS như 1 ứng dụng hoàn toàn độc lập, có nghĩa là bạn không cần phải tương tác với GAS thông qua các ứng dụng như Google Sheets, Goolge Ads hay Presentation. Bạn có thể lập trình GAS trên IDE độc lập, lên lịch chạy tự động theo giờ, ngày, sự kiện, vv. Bởi vậy bạn có thể phát triển ứng dụng với GAS ngay trên web mà không cần thêm Code Editor nào khác, khả năng kết nối tất cả thể loại ứng dụng của Google thông qua API cực mạnh, thậm chí bạn có thể deploy đoạn code của mình thành 1 API endpoint. Trong giai đoạn học GAS, tôi đã làm quen và sử dụng đủ các thể loại API, hiểu cách làm sao để tương tác với API thông qua GAS. Là một kẻ tay ngang không có căn bản về JavaScript nên khi bắt đầu cũng khá đau khổ và mất thời gian. Hãy tưởng tượng khi tôi gọi API của Cốc Cốc ad để lấy báo cáo, dữ liệu trả về dưới dạng JSON, là định dạng khá khó nhằn ở thời điểm đó, làm sao để có thể chuyển dữ liệu này thành dữ liệu người thường có thể đọc hiểu và tương tác được trong Gooogle Sheets đã là một thử thách. Khi tìm hiểu trên internet, có 1 số chuyên gia phát triển thư viện xử lý JSON nhưng cũng chỉ hoạt động được với những đoạn JSON tiêu chuẩn, những nền tảng quảng cáo thường dùng loại Nested JSON khiến cho việc bóc tách dữ liệu với người mới chập chững như tôi trở thành điều gần như không thể.

Tuy vậy, tôi đã khá kiên trì. Nếu ngày này không làm được hãy nghỉ ngơi và sẽ thử lại nhưng quyết không được từ bỏ. Những thời điểm như vậy mấu chốt nếu bạn có những thành quả nho nhỏ đủ để khích lệ tinh thần thì nhiệt huyết sẽ lại sục sôi. Cuối cùng tôi đã tìm ra cách đã xử lý được API của Cốc Cốc để xuất báo cáo sau khi kiên trì tìm hiểu đủ thể loại nguồn thông tin mất cả hơn tháng trời. Sau khi nắm cách làm cơ bản với API, JSON và làm việc với Google Sheets thì tôi chuyển sang tìm hiểu Facebook Marketing API. Khi tìm hiểu các tài liệu mà ad platform cung cấp, Python là cái tên chỗ nào cũng thấy trong khi GAS thì không rõ ràng là 1 ngôn ngữ để được hỗ trợ như JavaScript. Với GAS, bạn không có nhiều thư viện có thể sử dụng để bớt tốn công sức, ngôn ngữ lập trình cũng khá chặt chẽ và rắc rối nên chưa thể đáp ứng hết nhu cầu của tôi.

Đến thời điểm 2020, tôi xây dựng các dashboard trên GDS dựa trên 2 nguồn dữ liệu chính là connector sẵn có của Google, dữ liệu lấy về Google Sheets thông qua kết nối các API và lên lịch refresh dữ liệu mỗi ngày. Khi chuyển sang công ty mới, thay vì bộ công cụ Google tôi lại phải làm quen với AWS Cloud, vậy là Metabase dùng SQL thiết thực hơn GDS để truy xuất dữ liệu từ database nhưng lại không bao gồm dữ liệu quảng cáo và tính tuỳ biến khi kết hợp với các nguồn dữ liệu không đến từ database. Tôi đã chọn xây dựng dashboard bằng Power BI desktop, dữ liệu đầu vào được tự động lấy về Google Sheets, đồng bộ qua OneDrive API sau đó đồng bộ về desktop. Quả là 1 hành trình cực nhọc.

“Cày” phân tích dữ liệu với Python

1/1/2021 tôi bắt đầu với Python và học thần tốc trong 10 ngày để phục cho mục đích Data Analysis cơ bản. Vì sao lại là 10 ngày? Câu trả lời đơn giản, đó là thời gian trial của tài khoản membership trên website Oreilly.com – nơi có rất nhiều tài liệu hay và bài bản về công nghệ thông tin. Cũng bởi vậy tôi phát hiện ra rằng, tại sao chúng ta cứ phải đương đầu trực diện với những project cồng kềnh để rồi khó có thành quả và bỏ cuộc giữa chừng trong khi chỉ cần bắt đầu bằng những project nhỏ mà bạn chắc chắn thực hiện được? Tôi bắt đầu phương pháp học từng phần của mình bằng khoá học dạng video sau đó nhanh chóng nhận ra rằng học lập trình qua video không phù hợp. Hãy tưởng tượng khi bạn thực hành 1 đoạn code hay 1 phần nào đó của khoá học, bạn chợt quên và muốn xem lại giải thích, hẳn bạn phải ngồi di chuột mệt mỏi để tìm lại đúng đoạn video trong 1 video nào đó có chứa thông tin bạn cần. Thực sự vất vả. Đối với tôi, đọc sách là phương pháp thích hợp hơn hẳn, khi cần tìm kiếm bất cứ thứ gì chỉ Ctrl + F sẽ ra ngay. Khi đọc sách, bạn cũng có thời gian suy nghĩ và ghi nhớ sâu hơn so với chỉ xem Video. Theo tôi, học qua video thực sự phù hợp với những khoá học đồ hoạ hơn là lập trình. Đôi khi bạn có thể học thông qua các tutorial video cho trực quan nhưng để học sâu và chắc, có lẽ sách và tài liệu vẫn hợp lý hơn.

Ok vậy thử đọc sách trong 10 ngày và thực hành thôi. Phải nói đây là thời gian tôi cực kỳ tập trung và hứng thú, tối đi làm về thức khuya học code, có những hôm ngồi đến 2AM thậm chí là 4AM để tận dụng mọi thời gian và nguồn lực. Liệu 10 ngày đã đủ? Chắc chắn là chưa rồi. Ở mức độ này, tôi đã hiểu cơ bản và nhớ code những code thường xuyên sử dụng, làm project nào đó mới vẫn phải mở workbook cũ đã thực hành hoặc project mình xây dựng từ trước để copy lại code. Thu nạp kiến thức là một chuyện, phương pháp bạn tổ chức và biến kiến thức học được của mình càng quan trọng hơn. Một điểm thuận lợi của tôi là trên công ty tôi được tiếp cận dễ dàng với mọi nguồn dữ liệu từ database đến api và lượng dữ liệu đủ lớn để làm đứng máy nếu mở excel hoặc dùng Power BI trên những máy tính cơ bản :-D. Đối với những file dữ liệu excel, csv tầm 300MB-500MB hẳn bạn sẽ thấy excel không là mơ khi fill công thức hay chỉ là cố mở file thành công thôi. Đã thế lại còn lâu lâu gặp lỗi không phản hồi, có nguy cơ không lưu được công việc dở dang. Với python và Pandas, bạn sẽ cực kỳ ngạc nhiên, bởi mở những file csv vài GB trên Macbook Air cũng chỉ mất khoảng vài chục giây để có thể đọc và xem những dữ liệu đầu tiên.

Khai phá và phân tích dữ liệu với Dataprep
Khai phá & phân tích dữ liệu với thư viện Dataprep cho Python

Khi lạc vào thế giới Python, bạn cũng sẽ cảm thấy như việc 1 đứa trẻ ra thành phố bắt gặp 1 thế giới mới toàn những điều hay ho không kể hết. Số thư viện hỗ trợ Python trong việc xử lý dữ liệu rất đa dạng. Muốn tự động hoá workflow của mình hoặc lập trình ứng dụng bằng Python bạn hoàn toàn có thể tự mình làm được khi có chút kiến thức và tập trung suy nghĩ. Python có thể đọc đủ thể loại định dạng dữ liệu, quét dữ liệu trên web, làm việc với API, tương tác với hệ điều hành,..vv kết nối đủ thứ trên đời với chỉ vài dòng code và import thư viện. Những vấn đề tôi gặp phải với GDS, GAS, Power BI, Excel, Sheets và các công cụ xử lý dữ liệu khác đều không phải là vấn đề với Python. Bạn cũng chẳng cần phải trả phí để có các connector hay đợi các nhà cung cấp dịch vụ SaaS hỗ trợ công cụ của mình. Dù phục vụ mục đích cá nhân, doanh nghiệp nhỏ, doanh nghiệp lớn đi chăng nữa, Python đều có thể đảm nhận xuất sắc. 

dash graphing libraries
Biểu diễn dữ liệu tương tác với Plotly và Dash

Python everywhere là có thật. Từ server, desktop, máy tính nhúng hay thậm chí trên tablet Android bạn cũng có thể sử dụng python. Nếu bạn cần interactive dashboard, đẹp đẽ, dễ dùng hãy thử Plotly & Dash hoặc xây dựng dashboard như 1 web app độc lập với Streamlit. Hầu hết các giáo trình Python phổ biến đều bắt đầu dạy về Matplotlib và Seaborn nhưng đó không phải lựa chọn duy nhất và dễ sử dụng nhất cho bạn để bắt đầu. Nếu cần học Python ngay chẳng phải setup gì rắc rối, hãy tìm Google Colab Notebook. Nếu muốn có 1 server cho riêng mình, schedule code chạy tự động làm những thứ hay ho, hãy thử tìm hiểu Raspberry Pi hoặc học cách Thiết lập Linux server chạy Python tự động sử dụng Oracle Cloud (Always Free) như mình hướng dẫn. Đôi điều về Raspberry Pi, với mức đầu tư khoảng 2tr5 bạn sẽ có chiếc máy tính nhỏ bằng bàn tay (Rasberry Pi 4B, 4GB RAM), chỉ cần cắm cục sạc, kết nối wifi và đặt nó đâu đó ở góc nhà là bạn có thể sử dụng như 1 server linux thoải mái suốt ngày đêm. Có quá nhiều thứ hay ho với Python để khám phá. Tôi tin rằng rồi 1 ngày nào đó người ta sử dụng nó phổ biến như viết function trên Excel và Google Sheets vậy. Bạn không cần phải là siêu nhân mới có thể học lập trình nhưng kiên trì là điều bắt buộc. Tuyệt vời hơn nữa là bạn có phương pháp tiếp cận đúng đắn, nếu có người hướng dẫn nữa thì quá tuyệt vời. Cuối cùng học python cũng y như học một ngoại ngữ vậy. Hãy tạo cho mình một môi trường sử dụng nó nhiều nhất có thể thực sự “think python, act python”. Nếu cảm thấy khối lượng kiến thức bạn muốn tiếp nhận quá lớn, tưởng chừng quá sức, hãy biến nó thành những thứ nhỏ hơn và khả thi. 

“Don’t bite off more than you can chew!”.

Chúc các bạn thành công!

Rate this post

3 comments

  1. Thật sự là Python everywhere và mọi con đường đều dẫn đến Python.
    Em nghĩ con đường trải nghiệm các tool để “chơi” với data cũng sẽ ít nhiều giống nhau. Em đi từ Google Data Studio trước khi muốn tự build dashboard để trực quan hoá khi nhìn dữ liệu. Sau đó thì tìm cách để có thể xử lý đống data được tự động và nhẹ nhàng hơn nên đang tìm hiểu về Big Query và Power Query (nguồn cơn dẫn đến bài viết này). Trên con đường đó thì đâu đó vẫn nghe tên Python.

    Trước đó em đã tìm hiểu muốn học về ngôn ngữ lập trình cho 1 dự định khác (không liên quan đến data), thì em cũng thấy Python hiện tại là ngôn ngữ dễ tiếp cận nhất cho dân “không chuyên”. Liệu rằng trong tương lai Python (hoặc 1 ngôn ngữ lập trình nào mới dễ dùng hơn) sẽ trở nên phổ biến và “must have” với mọi người? Có thể không quá chuyên sâu nhưng có thể sử dụng cơ bản tuỳ theo nhu cầu mỗi người, giống như ai cũng phải học và biết mấy hàm cơ bản như sum, ave,.. trên excel vậy. Vì suy cho cùng Python hay gì cũng chỉ là một ngôn ngữ để con người giao tiếp với máy tính. Thay vì phải đi qua các công cụ có sẵn (giống như người với người giao tiếp với nhau phải có từ điển hay phiên dịch viên) thì mình có thể trao đổi trực tiếp.

    1. Cám ơn Lệ đã chia sẻ trải nghiệm của mình. Anh nghĩ thời đại của “no code” có lẽ sẽ dần được thay thế bằng “low code” khi mà nhiều ngôn ngữ lập trình hướng tới tính ứng dụng thực tiễn trong khi dễ tiếp thu hơn. Ngay cả Python cũng có những cải thiện đáng kể trong các phiên bản gần đây. Khi một ngôn ngữ lập trình như Python trở nên dễ học, phổ biến rộng rãi thì người dùng cũng có nhiều lựa chọn để tuỳ biến các ứng dụng/phân tích của mình trong khi đem đến sự tự do và thoải mái hơn rất nhiều.

  2. Cảm ơn rất nhiều về bài viết của Bạn. Nó đang rất hữu ích với mình, người đang bắt đầu chọn 1 tool BI để theo đuổi.

Leave a Reply

Your email address will not be published. Required fields are marked *