Cách nhóm theo năm trong Python

Một phần thiết yếu của phân tích dữ liệu lớn là tóm tắt hiệu quả. các tập hợp tính toán như

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
1,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
2,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
3,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
4 và
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
5, trong đó một số duy nhất cung cấp cái nhìn sâu sắc về bản chất của một tập dữ liệu lớn tiềm năng. Trong phần này, chúng ta sẽ khám phá các tập hợp trong Pandas, từ các thao tác đơn giản giống như những gì chúng ta đã thấy trên mảng NumPy, đến các thao tác phức tạp hơn dựa trên khái niệm về
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
6

Để thuận tiện, chúng ta sẽ sử dụng hàm ma thuật

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
7 giống như chúng ta đã thấy trong các phần trước

Trong 1]

import numpy as np
import pandas as pd

class display(object):
    """Display HTML representation of multiple objects"""
    template = """

{0}

{1}
"""
def __init__(self, *args): self.args = args def _repr_html_(self): return '\n'.join(self.template.format(a, eval(a)._repr_html_()) for a in self.args) def __repr__(self): return '\n\n'.join(a + '\n' + repr(eval(a)) for a in self.args)

dữ liệu hành tinh

Ở đây, chúng tôi sẽ sử dụng bộ dữ liệu Planets, có sẵn thông qua gói Seaborn (xem Trực quan hóa với Seaborn). Nó cung cấp thông tin về các hành tinh mà các nhà thiên văn học đã phát hiện xung quanh các ngôi sao khác (gọi tắt là các hành tinh ngoài hệ mặt trời hoặc ngoại hành tinh). Nó có thể được tải xuống bằng một lệnh Seaborn đơn giản

Trong 2]

________số 8_______

Ra[2]

(1035, 6)

Trong 3]

planets.head()

Ra[3]

methodnumberorbital_periodmassdistanceyear0Radial Velocity1269. 3007. 1077. 4020061Vận tốc xuyên tâm1874. 7742. 2156. 9520082Vận tốc xuyên tâm1763. 0002. 6019. 8420113Vận tốc xuyên tâm1326. 03019. 40110. 6220074Vận tốc xuyên tâm1516. 22010. 50119. 472009

Điều này có một số chi tiết về hơn 1.000 hành tinh ngoài hệ mặt trời được phát hiện cho đến năm 2014

Tổng hợp đơn giản trong Pandas

Trước đó, chúng tôi đã khám phá một số tập hợp dữ liệu có sẵn cho mảng NumPy ("Tập hợp. Tối thiểu, Tối đa và Mọi thứ ở giữa"). Như với mảng NumPy một chiều, đối với Pandas

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8, các tập hợp trả về một giá trị duy nhất

Trong [4]

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser

Ra[4]

0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64

Trong [5]

ser.sum()

Ra[5]

2.8119254917081569

Trong [6]

ser.mean()

Ra[6]

0.56238509834163142

Đối với

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9, theo mặc định, tổng hợp trả về kết quả trong mỗi cột

Trong [7]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
0

Ra[7]

AB00. 1559950. 02058410. 0580840. 96991020. 8661760. 83244330. 6011150. 21233940. 7080730. 181825

Trong [8]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
1

Ra[8]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
2

Bằng cách chỉ định đối số

0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
0, thay vào đó, bạn có thể tổng hợp trong mỗi hàng

Trong [9]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
3

Ra[9]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
4

Pandas

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8 và
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 bao gồm tất cả các tập hợp phổ biến được đề cập trong Tập hợp. Tối thiểu, Tối đa và Mọi thứ ở giữa; . Hãy sử dụng dữ liệu này trên dữ liệu Hành tinh, bây giờ loại bỏ các hàng có giá trị bị thiếu

Trong [10]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
5

Ra[10]

numberorbital_periodmass distanceyearcount498. 00000498. 000000498. 000000498. 000000498. 000000mean1. 73494835. 7786712. 50932052. 0682132007. 377510std1. 175721469. 1282593. 63627446. 5960414. 167284phút1. 000001. 3283000. 0036001. 3500001989. 00000025%1. 0000038. 2722500. 21250024. 4975002005. 00000050%1. 00000357. 0000001. 24500039. 9400002009. 00000075%2. 00000999. 6000002. 86750059. 3325002011. 000000max6. 0000017337. 50000025. 000000354. 0000002014. 000000

Đây có thể là một cách hữu ích để bắt đầu hiểu các thuộc tính tổng thể của tập dữ liệu. Ví dụ, chúng ta thấy trong cột

0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
4 rằng mặc dù các ngoại hành tinh đã được phát hiện từ năm 1989, nhưng một nửa số ngoại hành tinh đã biết không được phát hiện cho đến năm 2010 hoặc sau đó. Điều này phần lớn là nhờ sứ mệnh Kepler, một kính viễn vọng trong không gian được thiết kế đặc biệt để tìm kiếm các hành tinh che khuất xung quanh các ngôi sao khác

Bảng sau đây tóm tắt một số tập hợp Pandas tích hợp khác

Tổng hợp Mô tả
0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
5Tổng số mặt hàng
0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
6,
0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
7Mục đầu tiên và cuối cùng
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
2,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
3Trung bình và trung bình_______0_______4,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
5Tối thiểu và tối đa
ser.sum()
2,
ser.sum()
3Độ lệch chuẩn và phương sai
ser.sum()
4Độ lệch tuyệt đối trung bình
ser.sum()
5Sản phẩm của tất cả các mặt hàng_______0_______1Tổng của tất cả các mặt hàng

Đây là tất cả các phương thức của đối tượng

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 và
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8

Tuy nhiên, để đi sâu hơn vào dữ liệu, các tổng hợp đơn giản thường là không đủ. Cấp độ tóm tắt dữ liệu tiếp theo là hoạt động

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
6, cho phép bạn tính toán tổng hợp nhanh chóng và hiệu quả trên các tập hợp con của dữ liệu

NhómBy. Tách, áp dụng, kết hợp

Các tổng hợp đơn giản có thể mang lại cho bạn hương vị của tập dữ liệu, nhưng thường thì chúng tôi muốn tổng hợp có điều kiện trên một số nhãn hoặc chỉ mục. điều này được thực hiện trong cái gọi là hoạt động

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
6. Tên "nhóm theo" xuất phát từ một lệnh trong ngôn ngữ cơ sở dữ liệu SQL, nhưng có lẽ sẽ sáng sủa hơn khi nghĩ về nó theo thuật ngữ được đặt ra lần đầu bởi Hadley Wickham của Rstats nổi tiếng. tách, áp dụng, kết hợp

Tách, áp dụng, kết hợp

Một ví dụ điển hình của hoạt động tách-áp dụng-kết hợp này, trong đó "áp dụng" là một tập hợp tổng kết, được minh họa trong hình này

Cách nhóm theo năm trong Python

Điều này làm rõ những gì mà

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
6 đạt được

  • Bước phân tách bao gồm việc chia nhỏ và nhóm một
    rng = np.random.RandomState(42)
    ser = pd.Series(rng.rand(5))
    ser
    
    9 tùy thuộc vào giá trị của khóa được chỉ định
  • Bước áp dụng liên quan đến việc tính toán một số chức năng, thường là tổng hợp, chuyển đổi hoặc lọc trong các nhóm riêng lẻ
  • Bước kết hợp hợp nhất kết quả của các hoạt động này thành một mảng đầu ra

Mặc dù điều này chắc chắn có thể được thực hiện thủ công bằng cách sử dụng một số kết hợp của các lệnh tạo mặt nạ, tổng hợp và hợp nhất đã đề cập trước đó, nhưng một nhận thức quan trọng là các phân tách trung gian không cần phải được khởi tạo rõ ràng. Thay vào đó,

2.8119254917081569
3 có thể (thường) thực hiện việc này trong một lần truyền dữ liệu, cập nhật tổng, giá trị trung bình, số đếm, số tối thiểu hoặc tổng hợp khác cho mỗi nhóm trong suốt quá trình. Sức mạnh của
2.8119254917081569
3 là nó trừu tượng hóa các bước này. người dùng không cần phải suy nghĩ về cách tính toán được thực hiện bí mật, mà thay vào đó hãy nghĩ về toàn bộ hoạt động

Như một ví dụ cụ thể, chúng ta hãy xem việc sử dụng Pandas để tính toán được hiển thị trong sơ đồ này. Chúng ta sẽ bắt đầu bằng cách tạo đầu vào

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9

Trong [11]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
6

Ra[11]

keydata0A01B12C23A34B45C5

Thao tác tách-áp dụng-kết hợp cơ bản nhất có thể được tính toán bằng phương pháp

2.8119254917081569
6 của
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 giây, chuyển tên của cột khóa mong muốn

Trong [12]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
7

Ra[12]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
8

Lưu ý rằng những gì được trả về không phải là một tập hợp các

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9, mà là một đối tượng
2.8119254917081569
9. Đối tượng này là nơi có phép thuật. bạn có thể nghĩ về nó như một chế độ xem đặc biệt của
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9, sẵn sàng đào sâu vào các nhóm nhưng không thực sự tính toán cho đến khi áp dụng phép tổng hợp. Phương pháp "đánh giá lười biếng" này có nghĩa là các tập hợp chung có thể được triển khai rất hiệu quả theo cách gần như minh bạch đối với người dùng

Để tạo ra kết quả, chúng ta có thể áp dụng tổng hợp cho đối tượng

2.8119254917081569
9 này, đối tượng này sẽ thực hiện các bước áp dụng/kết hợp thích hợp để tạo ra kết quả mong muốn

Trong [13]

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
9

Ra[13]

khóa dữ liệuA3B5C7

Phương pháp

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
1 chỉ là một khả năng ở đây;

Đối tượng GroupBy

Đối tượng

2.8119254917081569
3 là một trừu tượng rất linh hoạt. Theo nhiều cách, bạn có thể đơn giản coi nó như thể nó là một tập hợp của
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 và nó thực hiện những điều khó khăn bí mật. Hãy xem một số ví dụ sử dụng dữ liệu Hành tinh

Có lẽ các hoạt động quan trọng nhất được cung cấp bởi một

2.8119254917081569
3 là tổng hợp, lọc, biến đổi và áp dụng. Chúng ta sẽ thảo luận đầy đủ hơn về từng chức năng này trong phần , nhưng trước đó, hãy giới thiệu một số chức năng khác có thể được sử dụng với hoạt động cơ bản
2.8119254917081569
3

lập chỉ mục cột

Đối tượng

2.8119254917081569
3 hỗ trợ lập chỉ mục cột theo cách tương tự như đối tượng
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 và trả về một đối tượng
2.8119254917081569
3 đã sửa đổi. Ví dụ

Trong [14]

(1035, 6)
0

Ra[14]

(1035, 6)
1

Trong [15]

(1035, 6)
2

Ra[15]

(1035, 6)
3

Ở đây, chúng tôi đã chọn một nhóm

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8 cụ thể từ nhóm
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 ban đầu bằng cách tham chiếu đến tên cột của nó. Như với đối tượng
2.8119254917081569
3, không có tính toán nào được thực hiện cho đến khi chúng ta gọi một số tổng hợp trên đối tượng

Trong [16]

(1035, 6)
4

Ra[16]

(1035, 6)
5

Điều này đưa ra ý tưởng về quy mô chung của các chu kỳ quỹ đạo (tính bằng ngày) mà mỗi phương pháp nhạy cảm với

Lặp qua các nhóm

Đối tượng

2.8119254917081569
3 hỗ trợ lặp trực tiếp qua các nhóm, trả về mỗi nhóm dưới dạng
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8 hoặc
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9

Trong [17]

(1035, 6)
6

(1035, 6)
7

Điều này có thể hữu ích khi thực hiện một số việc theo cách thủ công, mặc dù sử dụng chức năng

0.56238509834163142
7 tích hợp thường nhanh hơn nhiều, chức năng này chúng ta sẽ thảo luận trong giây lát

Phương thức gửi hàng

Thông qua một số phép thuật của lớp Python, bất kỳ phương thức nào không được triển khai rõ ràng bởi đối tượng

2.8119254917081569
3 sẽ được chuyển qua và gọi trên các nhóm, cho dù chúng là đối tượng
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 hay
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8. Ví dụ: bạn có thể sử dụng phương pháp
0    0.374540
1    0.950714
2    0.731994
3    0.598658
4    0.156019
dtype: float64
3 của
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 giây để thực hiện một tập hợp các tập hợp mô tả từng nhóm trong dữ liệu

Trong [18]

(1035, 6)
8

Hết[18]

countmeanstdmin25%50%75%maxmethodAstrometry2. 02011. 5000002. 1213202010. 02010. 752011. 52012. 252013. 0Biến đổi thời gian của Eclipse9. 02010. 0000001. 4142142008. 02009. 002010. 02011. 002012. 0Hình ảnh38. 02009. 1315792. 7819012004. 02008. 002009. 02011. 002013. 0Microlensing23. 02009. 7826092. 8596972004. 02008. 002010. 02012. 002013. 0Điều chế độ sáng quỹ đạo3. 02011. 6666671. 1547012011. 02011. 002011. 02012. 002013. 0Thời gian sao xung5. 01998. 4000008. 3845101992. 01992. 001994. 02003. 002011. 0Biến thể thời gian xung1. 02007. 000000NaN2007. 02007. 002007. 02007. 002007. 0Vận tốc xuyên tâm553. 02007. 5189874. 2490521989. 02005. 002009. 02011. 002014. 0Chuyển tuyến397. 02011. 2367762. 0778672002. 02010. 002012. 02013. 002014. 0Biến đổi thời gian quá cảnh4. 02012. 5000001. 2909942011. 02011. 752012. 52013. 252014. 0

Nhìn vào bảng này giúp chúng ta hiểu rõ hơn về dữ liệu. ví dụ, phần lớn các hành tinh đã được phát hiện bằng phương pháp Vận tốc hướng tâm và Vận tốc, mặc dù phương pháp sau chỉ trở nên phổ biến (do các kính viễn vọng mới, chính xác hơn) trong thập kỷ qua. Các phương pháp mới nhất dường như là Biến đổi thời gian vận chuyển và Điều chế độ sáng quỹ đạo, không được sử dụng để khám phá một hành tinh mới cho đến năm 2011

Đây chỉ là một ví dụ về tiện ích của các phương thức điều phối. Lưu ý rằng chúng được áp dụng cho từng nhóm riêng lẻ và kết quả sau đó được kết hợp trong khoảng thời gian

2.8119254917081569
3 và được trả về. Một lần nữa, bất kỳ phương pháp
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9/_______0_______8 hợp lệ nào cũng có thể được sử dụng trên đối tượng
2.8119254917081569
3 tương ứng, điều này cho phép thực hiện một số thao tác rất linh hoạt và mạnh mẽ

Tổng hợp, lọc, biến đổi, áp dụng

Cuộc thảo luận trước tập trung vào tập hợp cho hoạt động kết hợp, nhưng có nhiều tùy chọn hơn. Cụ thể, các đối tượng

2.8119254917081569
3 có các phương thức
import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
08,
import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
09,
import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
10 và
import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
11 thực hiện hiệu quả nhiều hoạt động hữu ích trước khi kết hợp dữ liệu được nhóm

Vì mục đích của các tiểu mục sau, chúng tôi sẽ sử dụng

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 này

Trong 19]

(1035, 6)
9

Hết[19]

keydata1data20A051B102C233A334B475C59

tổng hợp

Bây giờ chúng ta đã quen thuộc với các tập hợp

2.8119254917081569
3 với
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
1,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
3 và tương tự, nhưng phương pháp
import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
08 thậm chí còn linh hoạt hơn. Nó có thể lấy một chuỗi, một hàm hoặc một danh sách của chúng và tính toán tất cả các tập hợp cùng một lúc. Đây là một ví dụ nhanh kết hợp tất cả những điều này

Trong 20]

planets.head()
0

Hết[20]

data1data2minmedianmaxminmedianmaxkeyA01. 5334. 05B12. 5403. 57C23. 5536. 09

Một mẫu hữu ích khác là chuyển tên cột ánh xạ từ điển cho các thao tác được áp dụng trên cột đó

Trong [21]

planets.head()
1

Hết[21]

data1data2keyA05B17C29

lọc

Hoạt động lọc cho phép bạn xóa dữ liệu dựa trên thuộc tính nhóm. Ví dụ: chúng tôi có thể muốn giữ tất cả các nhóm trong đó độ lệch chuẩn lớn hơn một số giá trị tới hạn

Trong [22]

planets.head()
2

Hết[22]

df

keydata1data20A051B102C233A334B475C59

df. nhóm ('chìa khóa'). tiêu chuẩn()

dữ liệu1data2keyA2. 121321. 414214B2. 121324. 949747C2. 121324. 242641

df. nhóm ('chìa khóa'). bộ lọc(filter_func)

keydata1data21B102C234B475C59

Hàm lọc sẽ trả về giá trị Boolean chỉ định xem nhóm có vượt qua quá trình lọc hay không. Ở đây vì nhóm A không có độ lệch chuẩn lớn hơn 4 nên nó bị loại khỏi kết quả

chuyển đổi

Trong khi tập hợp phải trả về một phiên bản rút gọn của dữ liệu, chuyển đổi có thể trả về một số phiên bản đã chuyển đổi của dữ liệu đầy đủ để kết hợp lại. Đối với phép biến đổi như vậy, đầu ra có cùng hình dạng với đầu vào. Một ví dụ phổ biến là căn giữa dữ liệu bằng cách trừ đi giá trị trung bình của nhóm

Trong [23]

planets.head()
3

Hết[23]

data1data20-1. 51. 01-1. 5-3. 52-1. 5-3. 031. 5-1. 041. 53. 551. 53. 0

Phương thức áp dụng ()

Phương thức

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
11 cho phép bạn áp dụng một hàm tùy ý cho kết quả nhóm. Hàm này phải nhận một giá trị là
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 và trả về một đối tượng Pandas (e. g. ,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9,
rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
8) hoặc một số vô hướng;

Ví dụ: đây là một

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
11 chuẩn hóa cột đầu tiên bằng tổng của cột thứ hai

Trong [24]

planets.head()
4

Ra[24]

df

keydata1data20A051B102C233A334B475C59

df. nhóm ('chìa khóa'). áp dụng(norm_by_data2)

keydata1data20A0. 00000051B0. 14285702C0. 16666733A0. 37500034B0. 57142975C0. 4166679

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
11 trong vòng một
2.8119254917081569
3 khá linh hoạt. tiêu chí duy nhất là hàm lấy một ____0_______9 và trả về một đối tượng Pandas hoặc vô hướng;

Chỉ định khóa tách

Trong các ví dụ đơn giản được trình bày trước đây, chúng tôi tách

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9 trên một tên cột. Đây chỉ là một trong nhiều tùy chọn mà các nhóm có thể được xác định và chúng ta sẽ xem xét một số tùy chọn khác cho đặc tả nhóm tại đây

Một danh sách, mảng, chuỗi hoặc chỉ mục cung cấp các khóa nhóm

Khóa có thể là bất kỳ chuỗi hoặc danh sách nào có độ dài khớp với độ dài của

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
9. Ví dụ

Trong [25]

planets.head()
5

Hết[25]

df

keydata1data20A051B102C233A334B475C59

df. theo nhóm(L). Tổng()

dữ liệu1data20717143247

Tất nhiên, điều này có nghĩa là có một cách khác, dài dòng hơn để hoàn thành

import seaborn as sns
planets = sns.load_dataset('planets')
planets.shape
27 từ trước đó

Trong [26]

planets.head()
6

Hết[26]

df

keydata1data20A051B102C233A334B475C59

df. groupby(df['key']). Tổng()

data1data2keyA38B57C712

Chỉ mục ánh xạ từ điển hoặc chuỗi thành nhóm

Một phương pháp khác là cung cấp một từ điển ánh xạ các giá trị chỉ mục tới các khóa nhóm

Trong [27]

planets.head()
7

Hết[27]

df2

data1data2keyA05B10C23A33B47C59

df2. nhóm (ánh xạ). Tổng()

data1data2consonant1219vowel38

Bất kỳ hàm Python nào

Tương tự như ánh xạ, bạn có thể chuyển bất kỳ hàm Python nào sẽ nhập giá trị chỉ mục và xuất nhóm

Trong [28]

planets.head()
8

Hết[28]

df2

data1data2keyA05B10C23A33B47C59

df2. nhóm(str. thấp hơn). nghĩa là()

dữ liệu1data2a1. 54. 0b2. 53. 5c3. 56. 0

Danh sách khóa hợp lệ

Hơn nữa, bất kỳ lựa chọn phím nào trước đó đều có thể được kết hợp để nhóm trên nhiều chỉ mục

Trong [29]

planets.head()
9

Hết[29]

data1data2avowel1. 54. 0bphụ âm2. 53. 5cphụ âm3. 56. 0

Ví dụ nhóm

Như một ví dụ về điều này, trong một vài dòng mã Python, chúng ta có thể đặt tất cả những thứ này lại với nhau và đếm các hành tinh được phát hiện theo phương pháp và theo thập kỷ

Trong [30]

rng = np.random.RandomState(42)
ser = pd.Series(rng.rand(5))
ser
0

Ra[30]

thập kỷ1980s1990s2000s2010sphương phápThiên văn học0. 00. 00. 02. 0Biến đổi thời gian của Eclipse0. 00. 05. 010. 0Hình ảnh0. 00. 029. 021. 0Microlensing0. 00. 012. 015. 0Điều chế độ sáng quỹ đạo0. 00. 00. 05. 0Thời gian sao xung0. 09. 01. 01. 0Biến thể thời gian xung0. 00. 01. 00. 0Vận tốc hướng tâm1. 052. 0475. 0424. 0Chuyển tuyến0. 00. 064. 0712. 0Biến đổi thời gian quá cảnh0. 00. 00. 09. 0

Điều này cho thấy sức mạnh của việc kết hợp nhiều hoạt động mà chúng ta đã thảo luận cho đến thời điểm này khi xem xét các bộ dữ liệu thực tế. Chúng tôi ngay lập tức có được sự hiểu biết sơ bộ về thời gian và cách thức các hành tinh được phát hiện trong vài thập kỷ qua

Ở đây, tôi khuyên bạn nên đào sâu vào một vài dòng mã này và đánh giá từng bước riêng lẻ để đảm bảo bạn hiểu chính xác những gì chúng đang làm đối với kết quả. Đó chắc chắn là một ví dụ hơi phức tạp, nhưng việc hiểu những phần này sẽ cung cấp cho bạn phương tiện để khám phá dữ liệu của riêng bạn theo cách tương tự

Làm cách nào để nhóm dữ liệu theo tháng và năm trong gấu trúc?

Nhóm theo tháng và năm rồi tính tổng . Chúng tôi sẽ sử dụng trình truy cập dt và trình định dạng strftime để thực hiện việc này . Sau khi dữ liệu được tổng hợp, chúng tôi sẽ áp dụng phép tính tổng để cộng các giá trị hàng khác nhau.

Nhóm theo () trong thư viện gấu trúc là gì?

Nhóm là một trong những chức năng Pandas được sử dụng thường xuyên nhất trong phân tích dữ liệu. Nó được sử dụng để nhóm các điểm dữ liệu (i. e. hàng) dựa trên các giá trị riêng biệt trong một hoặc nhiều cột đã cho . Sau đó, chúng tôi có thể tính toán các giá trị tổng hợp cho các nhóm được tạo.

Làm cách nào để trích xuất năm từ cột ngày giờ trong Python?

Sử dụng pandas DatetimeIndex() để trích xuất tháng và năm . thuộc tính tháng để tìm tháng và sử dụng Datetime Index. thuộc tính year để tìm năm hiện tại trong ngày

Python chia tuổi thành các nhóm như thế nào?