Hướng dẫn pivot table trong python - pivot table in python

Groupby trong pandas là gì?

Groupby là nhóm những dữ liệu giống nhau lại trong Data Frame 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 lượng sản phẩm khác, vậy yêu cầu chúng ta cần là tổng hợp lại ngày thứ nhất bán được bao nhiêu số lượng sản phẩm, ngày thứ 2 bán được bao nhiêu, lúc này ta cần sử dụng Groupby để truy xuất thông tin ta cần

Nào! chúng ta bắt đầu thôi và đừng quên import thư viện và tạo một data frame 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 data frame

df = pd.DataFrame[data]
print[df]

Output:

Nhìn vào df trên ta thấy cột “company” có chứa 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 company. 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']

Output:

Lúc này chỉ trả về cho ta một đối tượng groupby, muốn trích xuất thông tin ta cần sử dụng đối tượng groupby này để thao tác

by_comp = df.groupby["Company"]
by_comp.mean[]# lấy giá trị trung bình của sale

Output:

Lấy độ lệch chuẩn

# Dùng hàm std lấy độ lệch chuẩn của Sale
by_comp.std[]

Output:

Giá trị min, max của đối tượng

by_comp.min[]
by_comp.max[]

Output min:

Output max:

Đếm giá trị chứa trong company

# Để đếm giá trị ta dùng hàm count[]
by_comp.count[]

Output:

Thống kê cơ bản trong đối tượng company

# Để thống kê ta dùng hàm describe
by_comp.describe[].transpose[]

Output:

# Chỉ lấy giá trị ["GOOG"]
by_comp.describe[].transpose[]['GOOG']

Pivot Tabale trong pandas

Pivot Table khá tương đồng với GroupBy bên trên là lấy dữ liệu theo chiều cột đơn dữ liệu đầu vào và nhóm các mục lại, đều áp dụng nguyên lý split-apply-combine giống nhau, tuy nhiên dữ liệu sẽ được phân tích và tổng hợp dưới dạng đa chiều, chứ không phải là một chiều.

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]
  • data: DataFrame: DataFrame
  • values [optional]: cột để tổng hợpcột để tổng hợp
  • index: cột, Group hoặc mảng: Nếu mảng được truyền vào thì phải có độ dài bằng với dữ liệuNếu mảng được truyền vào thì phải có độ dài bằng với dữ liệu
  • columns: cột, Group hoặc mảng: Tương tự như indexTương tự như index
  • aggfunc: [default: mean]: hàm tổng hợp dữ liệu mean]: hàm tổng hợp dữ liệu
  • fill_value: giá trị được điền vào các ô dữ liệu NA [sau khi đã tính toán]giá trị được điền vào các ô dữ liệu NA [sau khi đã tính toán]
  • margins: [bool, default: False]: 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ợpThê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 [string, default: ‘All’]: Tên của cột marginsTên của cột margins
  • dropna: [bool, default: False]: Bỏ đi các hàng có chứa NABỏ đi các hàng có chứa NA

ta xem lại data frame trên nhé:

GIờ ta áp dụng Pivot table á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 cty lại thành cột, đưa tên nhân viên ra làm index, và giá trị là sales

df = pd.DataFrame[data]
print[df]
0

Output:

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 chúng lại và lấy thông tin chúng ta cần.

Phần thực hành

Bạn tải file thực hành phần bài học này theo link bên dưới, sau đó tải lên Google Drive của bạn để thực hành. Nếu chưa biết sử dụng Google colab, bạn xem hướng dẫn tại đây: //pythonnangcao.com/bai-2-cai-dat-python-va-cau-hinh-moi-truong-lam-viec/
Nếu chưa biết sử dụng Google colab, bạn xem hướng dẫn tại đây: //pythonnangcao.com/bai-2-cai-dat-python-va-cau-hinh-moi-truong-lam-viec/

Download file thực hành Groupby

Chúc bạn học tốt!

Bài Viết Liên Quan

Chủ Đề