Python, một ngôn ngữ lập trình đa năng, ngày càng trở nên phổ biến và được ưa chuộng rộng rãi trong các lĩnh vực thống kê, phân tích dữ liệu và khoa học dữ liệu. Với khả năng xử lý thông tin mạnh mẽ và hệ sinh thái thư viện phong phú, Python mở ra một thế giới mới cho những ai có kiến thức cơ bản về thống kê và muốn ứng dụng chúng vào thực tiễn. Bài viết này của tonghopthuthuat.com sẽ hướng dẫn bạn cách bắt đầu khai thác dữ liệu bằng Python một cách nhanh chóng và hiệu quả hơn nhiều so với các phương pháp thủ công truyền thống. Hãy cùng khám phá tiềm năng của Python trong việc biến dữ liệu thô thành những thông tin chi tiết có giá trị.
Tại Sao Nên Sử Dụng Python Cho Phân Tích Dữ Liệu?
Khi nói đến phân tích dữ liệu, nhiều người có thể tự hỏi: Tại sao lại chọn Python thay vì các công cụ bảng tính quen thuộc như Excel, LibreOffice Calc hay Google Sheets?
Lý do chính để sử dụng Python là bạn sẽ có được nhiều lựa chọn và khả năng tùy chỉnh vượt trội so với những gì có sẵn trong hầu hết các bảng tính. Các công cụ bảng tính chủ yếu được thiết kế cho các phép tính kinh doanh và tài chính cơ bản. Trong khi đó, với Python, bạn có thể thực hiện các phép tính nâng cao và phức tạp hơn rất nhiều nhờ vào kho thư viện khổng lồ và đa dạng của nó.
Bảng tính LibreOffice Calc trình bày dữ liệu máy tính xách tay
Một vấn đề khác cần xem xét là khả năng mở rộng (scalability). Bảng tính hoạt động hiệu quả hơn với các bộ dữ liệu nhỏ. Tuy nhiên, đối với người dùng chuyên sâu, họ có thể tạo ra những bảng tính dài hàng trăm hàng ngàn dòng. Để thực hiện các thao tác, bạn thường phải nhấp và kéo chuột xuống các cột. Điều này có thể nhanh chóng làm mỏi tay nếu bạn có nhiều màn hình dữ liệu cần xử lý.
Các hoạt động xử lý dữ liệu của Python, đặc biệt khi sử dụng các thư viện như NumPy, pandas, Seaborn, và Pingouin, hiệu quả hơn nhiều khi làm việc với lượng lớn dữ liệu. Bạn có thể chỉ định các phép toán phức tạp, ví dụ như chọn dữ liệu từ nhiều cột và thực hiện các phép tính trên chúng chỉ bằng một hoặc vài dòng code. Hơn nữa, bạn có thể viết script để tự động hóa các thao tác này, giúp tiết kiệm thời gian đáng kể vì chỉ cần nhập lệnh một lần duy nhất.
Mặc dù vậy, bảng tính vẫn có vị trí riêng của chúng. Chúng rất tuyệt vời cho các thao tác nhanh chóng, cũng như định dạng dữ liệu để sử dụng trong Python. Chúng tôi sẽ chỉ cho bạn cách nhập dữ liệu từ bảng tính vào Python. Để định dạng dữ liệu, nếu bạn cần dữ liệu được định dạng theo các ràng buộc như độ dài ký tự hoặc một loại số như số nguyên, một hệ quản trị cơ sở dữ liệu nhỏ như SQLite thậm chí còn tốt hơn.
Để bài viết ngắn gọn, chúng tôi sẽ tập trung vào cách sử dụng các thư viện Python cho các phép tính thống kê cơ bản và không đi sâu giải thích lý thuyết. Nếu bạn muốn tìm hiểu về lý thuyết thống kê, có rất nhiều tài nguyên trực tuyến và ngoại tuyến, bao gồm các khóa học, sách giáo trình và video. Bạn có thể thử sách giáo trình trực tuyến của OpenStax hoặc Khan Academy để tìm các lựa chọn học tập miễn phí.
Thiết Lập Môi Trường Của Bạn
Để thiết lập môi trường cho phân tích dữ liệu, bạn sẽ cần cài đặt một số thư viện đã đề cập trước đó. Chúng tôi sẽ giả định bạn đang sử dụng một hệ thống giống Unix, chẳng hạn như Linux, macOS hoặc Windows với Windows Subsystem for Linux (WSL) đã được cài đặt.
Kích hoạt môi trường Mamba 'stats' và khởi động IPython trong Terminal Linux
Điều đầu tiên bạn cần cài đặt là Mamba, một trình quản lý gói dành cho các thư viện này. Hầu hết các hệ thống Linux đều đi kèm với một trình quản lý gói, vậy tại sao bạn lại cần một trình quản lý gói trên trình quản lý gói của mình? Các trình quản lý gói hệ thống có Python và các thư viện mà chúng tôi đề cập, nhưng chúng chủ yếu nhằm mục đích quản lý hệ điều hành, không phải cho các dự án lập trình của bạn. Các nhà phát triển có xu hướng muốn các phiên bản mới hơn so với những gì được cung cấp bởi hầu hết các bản phân phối chính thống, đó là lý do tại sao các bản phân phối rolling-release phổ biến trong nhóm này. Mamba cung cấp một tùy chọn thứ ba, cho phép bạn chạy một hệ thống cơ bản ổn định trong khi vẫn có quyền truy cập vào các gói phát triển mới hơn. Bạn có thể làm theo hướng dẫn trên trang web của Mamba. Về cơ bản, bạn chỉ cần dán một script vào terminal của mình.
Với Mamba đã được cài đặt, bạn sẽ cần cài đặt các thư viện. Các thư viện chúng ta sẽ sử dụng trong bài viết này là NumPy, pandas, SciPy và Pingouin. Chúng tôi cũng sẽ cài đặt IPython, vì nó rất tiện lợi cho việc sử dụng tương tác so với trình thông dịch Python tiêu chuẩn.
Chúng ta sẽ tạo một môi trường có tên “stats” bằng Mamba với các gói này:
mamba create -n stats
Sau đó, chúng ta cần kích hoạt nó:
mamba activate stats
Với môi trường đã được tạo, chúng ta có thể cài đặt các gói:
mamba install ipython numpy pandas scipy seaborn pingouin
Bây giờ môi trường đã được thiết lập, chúng ta có thể bắt đầu với các phép tính thống kê.
Lấy Dữ Liệu
Để thực hiện các phép tính thống kê, bạn sẽ cần một số dữ liệu. Đây có thể là dữ liệu bạn đã có, chẳng hạn như một bảng tính Excel. Nó cũng có thể là dữ liệu bạn đã tải xuống từ một trang web như Kaggle. Seaborn và Pingouin cũng có thể truy cập các bộ dữ liệu công khai để bạn thực hành và học hỏi.
Để bắt đầu, hãy đảm bảo môi trường “stats” của bạn đang hoạt động, sau đó chạy IPython:
ipython
Chúng ta sẽ bắt đầu bằng cách nhập thư viện pandas:
import pandas as pd
Pandas có các phương thức để đọc từ các định dạng tệp dữ liệu phổ biến, bao gồm Excel (.xls) và định dạng giá trị được phân tách bằng dấu phẩy (.csv), vốn rất phổ biến trong phân tích dữ liệu.
Chúng ta sẽ sử dụng phương thức read_csv
của pandas để đọc một tệp. Tôi sẽ minh họa với dữ liệu giá laptop của tôi mà tôi đã sử dụng để xây dựng một mô hình phức tạp gần đây:
data = pd.read_csv("data/laptop_prices.csv")
Lệnh này sẽ tạo ra một cấu trúc dữ liệu được gọi là “DataFrame,” tương tự như một bảng tính hoặc cơ sở dữ liệu quan hệ. Hãy hình dung nó như một bảng chứa dữ liệu của bạn. Bạn có thể xem vài dòng đầu tiên bằng cách gọi phương thức head()
trên DataFrame:
data.head()
Hiển thị vài dòng đầu tiên của DataFrame trong Pandas bằng Python
Bạn cũng có thể tự tạo dữ liệu bằng cách tạo ngẫu nhiên. Điều này rất hữu ích để tạo dữ liệu thử nghiệm. Bạn có thể sử dụng trình tạo số ngẫu nhiên của NumPy cho mục đích này.
Đầu tiên, hãy nhập NumPy:
import numpy as np
Sau đó, chúng ta sẽ tạo một trình tạo số ngẫu nhiên:
rng = np.random.default_rng()
Chúng ta có thể tạo một mảng gồm 50 số ngẫu nhiên được lấy từ phân phối chuẩn:
a = rng.standard_normal(50)
Tạo mảng số ngẫu nhiên với NumPy trong Python
Thống Kê Mô Tả: Trung Bình, Trung Vị, Độ Lệch Chuẩn, Phân Vị
Việc tính toán các thống kê mô tả cơ bản bằng Python và pandas rất dễ dàng.
Chúng ta sẽ sử dụng tập dữ liệu tips
của Seaborn cho DataFrame của mình:
import seaborn as sns
tips = sns.load_dataset('tips')
Để xem các cột, hãy sử dụng phương thức head()
đã đề cập ở trên:
tips.head()
Kiểm tra dữ liệu 'tips' bằng phương thức head() trong Python
Chúng ta có thể sử dụng phương thức describe()
để lấy thống kê mô tả của tất cả các cột số trong DataFrame:
tips.describe()
Hiển thị thống kê mô tả tập dữ liệu 'tips' với Pandas trong Python
Pandas sẽ in dữ liệu cho các cột “total_bill,” “tip,” và “size.” Điều này bao gồm số lượng điểm dữ liệu, giá trị trung bình (mean), độ lệch chuẩn (standard deviation), giá trị nhỏ nhất (minimum value), tứ phân vị dưới hay phân vị thứ 25 (lower quartile/25th percentile), giá trị trung vị hay phân vị thứ 50 (median/50th percentile), và tứ phân vị trên hay phân vị thứ 75 (upper quartile/75th percentile).
Bạn cũng có thể xem thống kê mô tả cho một cột riêng lẻ. Ví dụ, để xem giá trị trung vị của tiền tip:
tips['total_bill'].describe()
Thống kê mô tả của cột 'total_bill' trong DataFrame Pandas Python
Để xem giá trị trung vị của tiền tip:
tips['tip'].median()
Hiển thị giá trị trung vị của cột 'tip' trong DataFrame 'tips' bằng Python
Hồi Quy: Xu Hướng Là Gì?
Thống kê mô tả cung cấp các mô tả về dữ liệu. Sức mạnh của phân tích dữ liệu đến từ việc tìm ra các mối quan hệ trong dữ liệu. Hồi quy tuyến tính là một trong những cách đơn giản nhất để làm điều này.
Chúng ta có thể hình dung hồi quy tuyến tính là việc vẽ một đường thẳng phù hợp nhất qua các điểm dữ liệu.
Hãy quay lại tập dữ liệu tips
của chúng ta. Chúng ta sẽ sử dụng Seaborn để vẽ biểu đồ mối quan hệ giữa tiền tip và tổng hóa đơn. Số tiền hóa đơn, biến độc lập, sẽ nằm trên trục x, và tiền tip, biến phụ thuộc, sẽ nằm trên trục y. Chúng ta có thể vẽ đường hồi quy trên biểu đồ phân tán để xem mức độ phù hợp của nó.
sns.regplot(x='total_bill',y='tip',data=tips)
Biểu đồ hồi quy tuyến tính mối quan hệ giữa 'tip' và 'total_bill' được tạo bằng Seaborn
Chúng ta cũng có thể thu được một phân tích chính thức hơn với Pingouin:
import pingouin as pg
pg.linear_regression(tips['total_bill'],tips['tip'])
Cột ngoài cùng bên trái sẽ chứa điểm chặn y (y-intercept) và hệ số cho giá trị x, trong trường hợp này là tổng hóa đơn. Điều này sẽ cho phép bạn tái tạo đường thẳng dưới dạng phương trình chuẩn dạng đường dốc-điểm chặn, nhưng con số cần chú ý là bình phương của hệ số tương quan, hay r². Trong trường hợp này, nó xấp xỉ 0.46, đây là một mức độ phù hợp khá tốt theo chiều dương, xác nhận những gì chúng ta đã thấy trong biểu đồ.
Kiểm Định Thống Kê: Sự Khác Biệt Có Thực Sự Quan Trọng?
Một điều thường xuyên xuất hiện trong các thí nghiệm có nhóm đối chứng và nhóm thử nghiệm, chẳng hạn như thử nghiệm lâm sàng một loại thuốc mới, là việc xác định xem sự khác biệt giữa hai nhóm có phải do ngẫu nhiên hay không. Các kiểm định thống kê giữa các nhóm có thể giúp chúng ta xác định xem một sự khác biệt có ý nghĩa thống kê hay không.
Một trong những kiểm định phổ biến nhất trong nghiên cứu đương đại là kiểm định t-test của Student, vì nó rất tốt trong việc xử lý các mẫu nhỏ cần thiết trong các thí nghiệm.
Chúng ta sẽ sử dụng trình tạo số ngẫu nhiên của NumPy để tạo một vài nhóm mô phỏng, mỗi nhóm gồm mười phần tử:
import numpy as np
rng = np.random.default_rng()
a = rng.standard_normal(10) * 20
b = rng.standard_normal(10) * 50
Tạo hai nhóm số ngẫu nhiên 'a' và 'b' bằng NumPy trong Python
Pingouin có một hàm ttest
được tích hợp sẵn để kiểm định giả thuyết vô hiệu (null hypothesis) rằng không có sự khác biệt đáng kể giữa hai nhóm:
pg.ttest(a,b)
Kết quả kiểm định t-test từ thư viện Pingouin trong Python
Con số để xác định ý nghĩa trong đầu ra là giá trị p (p-value). Chúng ta sẽ sử dụng ngưỡng p-value là 0.05 để xác định ý nghĩa. Kết quả là xấp xỉ 0.61. Vì con số này cao hơn 0.05, chúng ta không thể bác bỏ giả thuyết vô hiệu, do đó chúng ta kết luận rằng kết quả không có ý nghĩa thống kê.
Kết Luận
Những ví dụ này chỉ là bước khởi đầu khi nói đến phân tích dữ liệu trong Python. Qua bài viết này, tonghopthuthuat.com hy vọng bạn đã thấy được sự dễ dàng và mạnh mẽ của các thao tác dữ liệu trong Python với sự trợ giúp của các thư viện chuyên dụng. Khả năng tự động hóa, xử lý dữ liệu lớn và thực hiện các phân tích phức tạp khiến Python trở thành một lựa chọn hàng đầu cho các nhà phân tích dữ liệu và khoa học dữ liệu.
Hãy bắt đầu khám phá sâu hơn các thư viện NumPy, pandas, Seaborn và Pingouin để mở rộng kỹ năng phân tích của bạn. Thế giới dữ liệu rộng lớn đang chờ bạn khai thác!
Bạn có bất kỳ câu hỏi nào về việc sử dụng Python cho thống kê không? Hãy để lại bình luận bên dưới để tonghopthuthuat.com và cộng đồng cùng thảo luận nhé!