Hướng dẫn này sử dụng tập dữ liệu titanic, được lưu trữ dưới dạng CSV. Dữ liệu bao gồm các cột dữ liệu sau
Id hành khách. Id của mỗi hành khách
sống sót. Tính năng này có giá trị 0 và 1. 0 cho không sống sót và 1 cho sống sót
lớp học. Có 3 lớp. Lớp 1, Lớp 2 và Lớp 3
Tên. Tên hành khách
giới tính. Giới tính của hành khách
Tuổi. Tuổi của hành khách
SibSp. Dấu hiệu cho thấy hành khách có anh chị em và vợ/chồng
Phơi. Dù hành khách đi một mình hay có gia đình
Vé. Số vé hành khách
giá vé. Cho biết giá vé
cabin. Khoang hành khách
bắt tay. hạng mục bắt đầu
Hướng dẫn này sử dụng tập dữ liệu Titanic, được lưu trữ dưới dạng CSV. Dữ liệu bao gồm các cột dữ liệu sau
Id hành khách. Id của mỗi hành khách
sống sót. Cho biết liệu hành khách có sống sót hay không. In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 2 nếu có và In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 3 nếu không
lớp học. Một trong 3 hạng vé. Lớp In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 3, Lớp In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 5 và Lớp In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 6
Tên. Tên hành khách
giới tính. Giới tính của hành khách
Tuổi. Tuổi của hành khách theo năm
SibSp. Số anh chị em hoặc vợ chồng trên tàu
Phơi. Số lượng cha mẹ hoặc trẻ em trên tàu
Vé. Số vé hành khách
giá vé. Cho biết giá vé
cabin. Số khoang hành khách
bắt tay. cảng lên tàu
In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns]
Tổng hợp thống kê
Độ tuổi trung bình của hành khách trên tàu Titanic là bao nhiêu?
In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882
Các số liệu thống kê khác nhau có sẵn và có thể được áp dụng cho các cột có dữ liệu số. Các hoạt động nói chung loại trừ dữ liệu bị thiếu và hoạt động trên các hàng theo mặc định
Độ tuổi trung bình và giá vé của hành khách Titanic là bao nhiêu?
In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64
Thống kê được áp dụng cho nhiều cột của một In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 7 (việc lựa chọn hai cột trả về một In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 7, xem phần ) được tính cho từng cột số
Thống kê tổng hợp có thể được tính cho nhiều cột cùng một lúc. Ghi nhớ chức năng In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 9 từ ?
In [6]: titanic[["Age", "Fare"]].describe() Out[6]: Age Fare count 714.000000 891.000000 mean 29.699118 32.204208 std 14.526497 49.693429 min 0.420000 0.000000 25% 20.125000 7.910400 50% 28.000000 14.454200 75% 38.000000 31.000000 max 80.000000 512.329200
Thay vì thống kê được xác định trước, có thể xác định các kết hợp cụ thể của thống kê tổng hợp cho các cột nhất định bằng phương pháp
In [7]: titanic.agg( ...: { ...: "Age": ["min", "max", "median", "skew"], ...: "Fare": ["min", "max", "median", "mean"], ...: } ...: ) ...: Out[7]: Age Fare min 0.420000 0.000000 max 80.000000 512.329200 median 28.000000 14.454200 skew 0.389108 NaN mean NaN 32.204208
Để hướng dẫn sử dụng
Chi tiết về thống kê mô tả được cung cấp trong phần hướng dẫn sử dụng trên
Tổng hợp số liệu thống kê được nhóm theo danh mục
Độ tuổi trung bình của nam và nữ hành khách Titanic là bao nhiêu?
In [8]: titanic[["Sex", "Age"]].groupby("Sex").mean() Out[8]: Age Sex female 27.915709 male 30.726645
Vì mối quan tâm của chúng tôi là độ tuổi trung bình cho mỗi giới tính nên lựa chọn phụ trên hai cột này được thực hiện trước. In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 1. Tiếp theo, phương pháp được áp dụng trên cột In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 3 để tạo một nhóm cho mỗi danh mục. Độ tuổi trung bình cho mỗi giới tính được tính toán và trả về
Tính toán một thống kê nhất định (e. g. In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 4 tuổi) cho mỗi danh mục trong một cột (e. g. nam/nữ trong cột In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 3) là một khuôn mẫu phổ biến. Phương pháp In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 6 được sử dụng để hỗ trợ loại hoạt động này. Điều này phù hợp với mẫu In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 7 tổng quát hơn
Chia dữ liệu thành các nhóm
Áp dụng một chức năng cho từng nhóm một cách độc lập
Kết hợp các kết quả thành một cấu trúc dữ liệu
Các bước áp dụng và kết hợp thường được thực hiện cùng nhau trong gấu trúc
Trong ví dụ trước, chúng tôi đã chọn rõ ràng 2 cột đầu tiên. Nếu không, phương pháp In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 4 được áp dụng cho từng cột chứa các cột số bằng cách chuyển qua In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 9
In [9]: titanic.groupby("Sex").mean(numeric_only=True) Out[9]: PassengerId Survived Pclass .. SibSp Parch Fare Sex .. female 431.028662 0.742038 2.159236 .. 0.694268 0.649682 44.479818 male 454.147314 0.188908 2.389948 .. 0.429809 0.235702 25.523893 [2 rows x 7 columns]
Không có ý nghĩa gì nhiều khi lấy giá trị trung bình của In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 0. Nếu chúng ta chỉ quan tâm đến độ tuổi trung bình của mỗi giới tính, việc lựa chọn các cột (dấu ngoặc chữ nhật In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 1 như thường lệ) cũng được hỗ trợ trên dữ liệu được nhóm
In [10]: titanic.groupby("Sex")["Age"].mean() Out[10]: Sex female 27.915709 male 30.726645 Name: Age, dtype: float64
Ghi chú
Cột In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 0 chứa dữ liệu số nhưng thực tế đại diện cho 3 loại (hoặc yếu tố) với các nhãn tương ứng là '1', '2' và '3'. Tính toán số liệu thống kê về những điều này không có nhiều ý nghĩa. Do đó, pandas cung cấp loại dữ liệu In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 3 để xử lý loại dữ liệu này. Thông tin thêm được cung cấp trong phần hướng dẫn sử dụng
Giá vé trung bình cho mỗi kết hợp giới tính và hạng ghế là bao nhiêu?
In [11]: titanic.groupby(["Sex", "Pclass"])["Fare"].mean() Out[11]: Sex Pclass female 1 106.125798 2 21.970121 3 16.118810 male 1 67.226127 2 19.741782 3 12.661633 Name: Fare, dtype: float64
Việc nhóm có thể được thực hiện theo nhiều cột cùng một lúc. Cung cấp tên cột dưới dạng danh sách cho phương thức
Để hướng dẫn sử dụng
Mô tả đầy đủ về cách tiếp cận tách-áp dụng-kết hợp được cung cấp trong phần hướng dẫn sử dụng trên
Đếm số bản ghi theo danh mục
Số lượng hành khách trong mỗi hạng cabin là bao nhiêu?
In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 0
Phương thức đếm số lượng bản ghi cho mỗi danh mục trong một cột
Hàm này là một phím tắt, vì nó thực sự là một hoạt động theo nhóm kết hợp với việc đếm số lượng bản ghi trong mỗi nhóm
In [2]: titanic = pd.read_csv("data/titanic.csv") In [3]: titanic.head() Out[3]: PassengerId Survived Pclass .. Fare Cabin Embarked 0 1 0 3 .. 7.2500 NaN S 1 2 1 1 .. 71.2833 C85 C 2 3 1 3 .. 7.9250 NaN S 3 4 1 1 .. 53.1000 C123 S 4 5 0 3 .. 8.0500 NaN S [5 rows x 12 columns] 1
Ghi chú
Cả In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 6 và In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 7 đều có thể được sử dụng kết hợp với In [4]: titanic["Age"].mean() Out[4]: 29.69911764705882 6. Trong khi In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 6 bao gồm các giá trị In [6]: titanic[["Age", "Fare"]].describe() Out[6]: Age Fare count 714.000000 891.000000 mean 29.699118 32.204208 std 14.526497 49.693429 min 0.420000 0.000000 25% 20.125000 7.910400 50% 28.000000 14.454200 75% 38.000000 31.000000 max 80.000000 512.329200 0 và chỉ cung cấp số lượng hàng (kích thước của bảng), thì In [5]: titanic[["Age", "Fare"]].median() Out[5]: Age 28.0000 Fare 14.4542 dtype: float64 7 không bao gồm các giá trị bị thiếu. Trong phương pháp In [6]: titanic[["Age", "Fare"]].describe() Out[6]: Age Fare count 714.000000 891.000000 mean 29.699118 32.204208 std 14.526497 49.693429 min 0.420000 0.000000 25% 20.125000 7.910400 50% 28.000000 14.454200 75% 38.000000 31.000000 max 80.000000 512.329200 2, sử dụng đối số In [6]: titanic[["Age", "Fare"]].describe() Out[6]: Age Fare count 714.000000 891.000000 mean 29.699118 32.204208 std 14.526497 49.693429 min 0.420000 0.000000 25% 20.125000 7.910400 50% 28.000000 14.454200 75% 38.000000 31.000000 max 80.000000 512.329200 3 để bao gồm hoặc loại trừ các giá trị In [6]: titanic[["Age", "Fare"]].describe() Out[6]: Age Fare count 714.000000 891.000000 mean 29.699118 32.204208 std 14.526497 49.693429 min 0.420000 0.000000 25% 20.125000 7.910400 50% 28.000000 14.454200 75% 38.000000 31.000000 max 80.000000 512.329200 0