Groupby là nhóm những dữ liệu giống nhau quay lại trong Khung dữ liệu tại một cột nào đó để ta tìm ra điểm chung của dữ liệu đó, ví dụ trong ngày thứ nhất chúng ta bán được một số lượng sản phẩm, ngày thứ 2 bán được một
No. chúng ta bắt đầu thôi và đừng quên nhập thư viện và tạo khung dữ liệu nhé
import pandas as pd # Create dataframe data = {'Company':['GOOG','GOOG','MSFT','MSFT','FB','FB'], 'Person':['Sam','Charlie','Amy','Vanessa','Carl','Sarah'], 'Sales':[200,120,340,124,243,350]}
Tạo 1 khung dữ liệu
df = pd.DataFrame[data] print[df]
đầu ra
Nhìn vào df trên ta thấy cột “công ty” có chứa các tên công ty giống nhau. Bây giờ chúng ta có thể sử dụng phương thức. groupby[] để nhóm các hàng lại với nhau dựa trên tên cột công ty. Thao tác này sẽ tạo một đối tượng DataFrameGroupBy
# Tạo một đối tượng groupby df.groupby['Company']
đầu ra
Lúc này chỉ trả về cho ta một nhóm đối tượng, trích dẫn muốn xuất thông tin ta cần sử dụng nhóm đối tượng này để thao tác
by_comp = df.groupby["Company"] by_comp.mean[]# lấy giá trị trung bình của sale
đầu ra
Rifty speed
# Dùng hàm std lấy độ lệch chuẩn của Sale by_comp.std[]
đầu ra
Giá trị tối thiểu, tối đa của đối tượng
by_comp.min[] by_comp.max[]
Đầu ra tối thiểu
Đầu ra tối đa
Dem value in company
# Để đếm giá trị ta dùng hàm count[] by_comp.count[]
đầu ra
Thống kê cơ bản trong công ty đối tượng
# Để thống kê ta dùng hàm describe by_comp.describe[].transpose[]
đầu ra
________số 8
Pivot Table khá tương đồng với GroupBy bên trên là lấy dữ liệu theo cột đơn dữ liệu đầu vào và nhóm các mục trở lại, đều áp dụng nguyên lý tách-áp dụng-kết hợp giống nhau, tuy nhiên dữ liệu sẽ được phân tích và tổng hợp
cú pháp
pandas.pivot_table[data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False]
- dữ liệu. Khung dữ liệu
- giá trị [tùy chọn]. column to composit
- mục lục. cột, nhóm hoặc mảng. If a array has been transfer to, then must have a length with data
- cột. cột, nhóm hoặc mảng. Tương tự như chỉ mục
- aggfunc. [mặc định. bần tiện]. datasumation function
- fill_value. giá trị được điền vào ô dữ liệu NA [sau khi tính toán]
- lề. [bool, mặc định. Sai]. Thêm một cột tính tất cả các giá trị của các cột còn lại theo hàm tổng hợp
- margins_name [chuỗi, mặc định. 'Tất cả các']. Tên của cột lề
- dropna. [bool, mặc định. Sai]. Bỏ đi các hàng có chứa NA
ta xem lại data frame trên nhé
GIờ ta áp dụng bảng Pivot áp dụng vào df trên nhóm các giá trị theo yêu cầu của chúng ta
Ta muôn nhóm các tên công ty lại thành cột, đưa tên nhân viên ra làm chỉ mục và giá trị là doanh số bán hàng
df = pd.DataFrame[data] print[df]0
đầu ra
Thông thường, khi xử lý các dữ liệu giống nhau, ta thường sử dụng groupby và pivot table để nhóm lại và lấy thông tin chúng ta cần
Trong số này, bước phân chia nhóm [1] là đơn giản nhất. Trên thực tế, trong nhiều trường hợp, bạn có thể chia tệp dữ liệu thành các nhóm và làm bất cứ điều gì với các nhóm đó. Trong bước [2], mong muốn có thể là một trong những điều sau
Tổng hợp [Tổng hợp/Giảm]. phân tích thống kê trong một nhóm. Ví dụ
Tính tổng, nghĩa, tiêu chuẩn, tối thiểu, tối đa của nhóm dữ liệu
Tính toán số lượng nhóm [size/count]
Chuyển đổi [Transformation]. thực hiện một nhóm công cụ tính toán có thể và trả về một loại chỉ mục giống. ví dụ
Chuẩn hóa dữ liệu [zscore] trong nhóm
Điền các giá trị NA bằng một giá trị từ các nhóm
Filter [Lọc]. loại bỏ một số nhóm, tính toán theo nhóm Đánh giá đúng hay sai. ví dụ
Loại bỏ thuộc tính nhóm dữ liệu chỉ với một vài thành viên
Lọc dữ liệu dựa trên tổng hoặc nghĩa của nhóm
Hoặc là kết hợp của các điều khiển trên. GroupBy sẽ kiểm tra kết quả của các bước và cố gắng trả lại một kết quả hợp lý nếu nó không phù hợp với một trong hai loại trên
Bài học bao gồm
+ nhóm theo
+ Tổng hợp [Tổng/Giảm]
Cú pháp trong gấu trúc tự nhiên hơn cách làm trong sql
Expendition in sql, groupby as after
df = pd.DataFrame[data] print[df]1
Ví dụ, groupby trong dataframe
df = pd.DataFrame[data] print[df]2
BÍ QUYẾT, THUẬT, MẸO. Chú ý với chuỗi dữ liệu kiểu [dữ liệu phân loại] ở cột A và cột B. Ta cần chuyển A và B về loại danh mục để có được những lợi ích sau. Chú ý, tăng tốc các hoạt động đặc biệt là trong groupby[]
df = pd.DataFrame[data] print[df]3
Ví dụ, groupby trong Series
df = pd.DataFrame[data] print[df]4
Theo mặc định, các phím được sắp xếp trong quá trình nhóm. Tuy nhiên, bạn không thể sắp xếp theo phép gán sort = False để tăng tốc
df = pd.DataFrame[data] print[df]5
Ta could accept the results of groupby is type dictionaryqua property “groups”
df = pd.DataFrame[data] print[df]6
Duyệt qua toàn bộ nhóm
df = pd.DataFrame[data] print[df]7
Phương thức get_group[] giúp ta có được giá trị của một nhóm. Ví dụ
df = pd.DataFrame[data] print[df]8
tổng hợp
Các phép “aggregation/reduction” có sẵn như sum[], count[],mean[] outside ta có thể tự định nghĩa nhiều “aggregation” riêng cho dữ liệu của mình
Tạo một khung dữ liệu để minh họa cho bài học
df = pd.DataFrame[data] print[df]9
Ví dụ sau. so sánh kết quả của “aggregate” sử dụng hàm có sắn np. tổng và một hàm tự viết để tính tổng trong một nhóm
# Tạo một đối tượng groupby df.groupby['Company']0
Một ví dụ cho việc sử dụng tập hợp tùy chỉnh
df = pd.DataFrame[data] print[df]20
Trong quá trình “aggregation” ta có thể áp dụng cùng lúc nhiều hàm
df = pd.DataFrame[data] print[df]21
Ta có thể áp dụng từng hàm cho từng cột trong quá trình “tổng hợp”
df = pd.DataFrame[data] print[df]22
Kết luận
Trong bài viết này, bạn đọc đã có thể học cách xác định và chia dataframe theo các nhóm để tiến hành tổng hợp [Tổng hợp/Giảm] hoặc phân tích bổ sung [ví dụ như tính tổng, tiêu chuẩn, tối thiểu, tối đa. ]. Bạn đọc sẽ được học cách chuyển đổi và lọc dữ liệu, bao gồm cách phát hiện các giá trị ngoại lệ [outliers] và xử lý các giá trị bị thiếu ở bài tiếp theo