Số tiền tích lũy gấu trúc theo tháng

Pandas là một công cụ đặc biệt cho phép chúng tôi thực hiện các thao tác dữ liệu phức tạp một cách hiệu quả và hiệu quả. Bên trong gấu trúc, chúng tôi chủ yếu xử lý tập dữ liệu ở dạng DataFrame. DataFrames là cấu trúc dữ liệu 2 chiều trong pandas. DataFrames bao gồm các hàng, cột và dữ liệu

Tính tổng tích lũy theo nhóm [cumsum] trong Pandas

Giả sử, chúng tôi có một DataFrame có nhiều cột và chúng tôi cần nhóm một số cột, sau đó chúng tôi cần tìm tổng tích lũy [cumsum] trong một nhóm

Với mục đích này, trước tiên chúng ta sẽ thực hiện groupby[] trên cột/cột và sau đó chúng ta sẽ sử dụng phương thức transform[] để truyền phương thức cumsum bên trong nó

Bất cứ khi nào chúng tôi muốn thực hiện một số thao tác trên toàn bộ DataFrame, chúng tôi sử dụng phương thức chuyển đổi. Phương thức biến đổi [] chuyển một cột duy nhất của một nhóm tại một thời điểm dưới dạng một chuỗi bên trong hàm được mô tả trong phương thức biến đổi []

Hàm được mô tả bên trong phương thức transform[] phải trả về một chuỗi có cùng độ dài với nhóm

Hãy xem xét một khung dữ liệu gấu trúc trong đó mỗi chỉ mục được biểu diễn dưới dạng một đối tượng ngày giờ ở dạng như

df.groupby[df.index.date]['col1'].sum[].cumsum[]
3

Để tính tổng giá trị của một cột trong mỗi ngày, tôi đã sử dụng các cách giải quyết sau

df['col1'].resample['D'].sum[].cumsum[]

hoặc

df.groupby[df.index.date]['col1'].sum[].cumsum[]

nơi cả hai có thể trả lại đầu ra mong muốn của tôi

Tuy nhiên, tôi đã tự hỏi liệu có giải pháp nào khác mà không sử dụng hai hàm tổng hợp liên tiếp không,

df.groupby[df.index.date]['col1'].sum[].cumsum[]
4?

Công thức cụ thể này nhóm các hàng theo ngày trong your_date_column và tính tổng các giá trị cho values_column trong DataFrame

Lưu ý rằng dt. hàm month[] trích xuất tháng từ cột ngày trong pandas

Ví dụ sau đây cho thấy cách sử dụng cú pháp này trong thực tế

Ví dụ. Cách nhóm theo tháng trong Pandas

Giả sử chúng ta có Khung dữ liệu gấu trúc sau đây hiển thị doanh số bán hàng của một số công ty vào các ngày khác nhau

import pandas as pd

#create DataFrame
df = pd.DataFrame[{'date': pd.date_range[start='1/1/2020', freq='W', periods=10],
                   'sales': [6, 8, 9, 11, 13, 8, 8, 15, 22, 9],
                   'returns': [0, 3, 2, 2, 1, 3, 2, 4, 1, 5]}]

#view DataFrame
print[df]

        date  sales  returns
0 2020-01-05      6        0
1 2020-01-12      8        3
2 2020-01-19      9        2
3 2020-01-26     11        2
4 2020-02-02     13        1
5 2020-02-09      8        3
6 2020-02-16      8        2
7 2020-02-23     15        4
8 2020-03-01     22        1
9 2020-03-08      9        5

Có liên quan. Cách tạo phạm vi ngày trong Pandas

Chúng ta có thể sử dụng cú pháp sau để tính tổng doanh số được nhóm theo tháng

#calculate sum of sales grouped by month
df.groupby[df.date.dt.month]['sales'].sum[]

date
1    34
2    44
3    31
Name: sales, dtype: int64

Đây là cách giải thích đầu ra

  • Tổng doanh số bán hàng được thực hiện trong tháng 1 [tháng 1] là 34
  • Tổng doanh số thực hiện trong tháng 2 [tháng 2] là 44
  • Tổng doanh số bán hàng được thực hiện trong tháng 3 [tháng 3] là 31

Chúng tôi có thể sử dụng cú pháp tương tự để tính toán bất kỳ giá trị nào chúng tôi muốn được nhóm theo giá trị tháng của cột ngày

Nếu bạn đang đọc bài viết này, chắc hẳn bạn đã nghe nói đến hoặc sử dụng Pandas. Vì vậy, tôi đang bỏ qua phần mà tôi nói về việc Pandas tuyệt vời như thế nào. 😊

Trong bài viết này, chúng ta sẽ xem xét các ví dụ chứng minh một số tính năng Pandas không được sử dụng phổ biến. Tôi không gặp chúng thường xuyên trong hành trình Pandas 3 năm của mình

Cách tốt nhất để học Pandas hoặc bất kỳ công cụ phần mềm nào khác là thực hành. Đó là những gì chúng tôi sẽ làm. Bước đầu tiên là tạo một DataFrame mẫu để làm việc

import numpy as np
import pandas as pd
df = pd.DataFrame[{

"date": pd.date_range[start="2021-11-20", periods=100, freq="D"],
"class": ["A","B","C","D"] * 25,
"amount": np.random.randint[10, 100, size=100]
}]df.head[]

5 hàng đầu tiên của df [hình ảnh của tác giả]

Chúng tôi có một DataFrame với 3 cột và 100 hàng. Cột ngày chứa 100 ngày liên tiếp, cột lớp chứa 4 giá trị riêng biệt được lưu trữ với kiểu dữ liệu đối tượng và cột số lượng chứa các số nguyên ngẫu nhiên trong khoảng từ 10 đến 100

1. To_period

Chúng ta sử dụng ngày với nhiều khoảng thời gian hoặc khoảng thời gian khác nhau như ngày, tuần, tháng, quý, v.v. Cái nào để sử dụng phụ thuộc vào nhiệm vụ trong tầm tay. Chẳng hạn, trong bảng điều khiển doanh thu, chúng tôi có thể muốn hiển thị doanh thu hàng tháng hoặc hàng quý

Trong Pandas, các chức năng thao tác ngày có sẵn trong bộ truy cập dt. Hàm to_period cho phép chuyển đổi một ngày thành một khoảng thời gian cụ thể. Các khoảng thời gian tôi thường sử dụng là tháng và quý

Phương thức tháng chỉ trả về tháng không hữu ích trong nhiều trường hợp như báo cáo doanh thu lịch sử. Chúng ta cần phân biệt được tháng 12 năm 2020 và tháng 12 năm 2021. Điều này có thể đạt được bằng cách sử dụng khoảng thời gian “M” với chức năng to_period. Tương tự, chúng ta có thể trích xuất thông tin quý bằng “Q”

Hãy tạo các cột mới cho năm tháng và quý

df["month"] = df["date"].dt.to_period["M"]
df["quarter"] = df["date"].dt.to_period["Q"]
df.head[]

5 hàng đầu tiên của df [hình ảnh của tác giả]

Hãy cũng kiểm tra các giá trị năm tháng và quý khác nhau trong DataFrame của chúng tôi

df["month"].value_counts[]# output
2021-12 31
2022-01 31
2022-02 27
2021-11 11
Freq: M, Name: month, dtype: int64
--------------------------
df["quarter"].value_counts[]
# output
2022Q1 58
2021Q4 42
Freq: Q-DEC, Name: quarter, dtype: int64

2. Cumsum và nhóm

Cumsum là một chức năng Pandas rất hữu ích. Nó tính toán tổng tích lũy của các giá trị trong một cột. Đây là cách chúng ta thường sử dụng nó

df["cumulative_sum"] = df["amount"].cumsum[]df.head[]

5 hàng đầu tiên của df [hình ảnh của tác giả]

Bây giờ chúng ta có tổng tích lũy của các giá trị trong cột số tiền. Tuy nhiên, nó không đưa các lớp học vào xem xét. Trong một số trường hợp, chúng tôi có thể cần tính riêng tổng tích lũy cho các danh mục khác nhau

Rất may, Pandas làm cho nhiệm vụ này trở nên rất đơn giản. Chúng ta chỉ cần nhóm các hàng theo cột lớp rồi áp dụng hàm cumsum

________số 8

Hãy xác nhận kết quả trên lớp A

df[df["class"]=="A"].head[]

[hình ảnh của tác giả]

Cột tổng tích lũy của lớp chứa các giá trị tổng tích lũy được tính riêng cho từng lớp

3. Loại dữ liệu danh mục

Chúng ta thường cần xử lý dữ liệu phân loại có số lượng giá trị có thể hạn chế và thường cố định. Trong DataFrame của chúng tôi, cột lớp là một biến phân loại có 4 giá trị riêng biệt. A B C D

Theo mặc định, kiểu dữ liệu của cột này trở thành “đối tượng”

df.groupby[df.index.date]['col1'].sum[].cumsum[]
0

Pandas cũng có kiểu dữ liệu "danh mục" tiêu tốn ít bộ nhớ hơn nhiều so với kiểu dữ liệu đối tượng. Vì vậy, tốt hơn là sử dụng kiểu dữ liệu danh mục bất cứ khi nào có thể

Hãy sao chép cột lớp nhưng với kiểu dữ liệu "danh mục"

df.groupby[df.index.date]['col1'].sum[].cumsum[]
1

Bây giờ chúng ta có thể so sánh mức tiêu thụ bộ nhớ của các cột class và class_category

df.groupby[df.index.date]['col1'].sum[].cumsum[]
2

Cột class_category tiêu thụ ít hơn một nửa mức tiêu thụ bộ nhớ của cột class. Sự khác biệt là 496 byte không nhiều. Tuy nhiên, khi chúng tôi làm việc với các tập dữ liệu lớn, sự khác biệt chắc chắn sẽ rất quan trọng

Bạn có thể trở thành thành viên Phương tiện để mở khóa quyền truy cập đầy đủ vào bài viết của tôi, cộng với phần còn lại của Phương tiện. Nếu bạn đã đăng ký, đừng quên đăng ký nếu bạn muốn nhận email bất cứ khi nào tôi xuất bản một bài viết mới

Cumsum hoạt động như thế nào trong gấu trúc?

Dòng gấu trúc. hàm cumsum[] . Trả về một Khung dữ liệu hoặc Sê-ri có cùng kích thước chứa tổng tích lũy. Chỉ số hoặc tên của trục. 0 tương đương với Không có hoặc 'chỉ mục'. used to get cumulative sum over a DataFrame or Series axis. Returns a DataFrame or Series of the same size containing the cumulative sum. The index or the name of the axis. 0 is equivalent to None or 'index'.

Làm cách nào tôi có thể nhóm theo tháng từ trường ngày bằng gấu trúc Python?

Hãy thử điều này. .
Thay đổi cột ngày thành định dạng ngày giờ. ---> df['Ngày'] = pd. to_datetime[df['Ngày']]
Chèn một hàng mới vào khung dữ liệu có tháng như [May, 'June'] ---> df['months'] = df['date']. áp dụng [lambda x. x. strftime['%B']].
Bây giờ tổng hợp dữ liệu tổng hợp trong cột tháng và tính tổng doanh thu

Làm cách nào để trích xuất tháng từ một ngày có kiểu dữ liệu chuỗi trong gấu trúc?

Pandas Trích xuất Tháng và Năm bằng Ngày giờ. phương thức strftime[] lấy định dạng ngày giờ và trả về một chuỗi đại diện cho định dạng cụ thể. Bạn có thể sử dụng %Y và %m làm mã định dạng để trích xuất năm và tháng tương ứng từ DataFrame của gấu trúc.

Chủ Đề