Tạo phạm vi ngày với Pandas có thể tăng tốc đáng kể quy trình làm việc của bạn khi bạn cần lặp lại một số ngày. Ví dụ: khi chạy truy vấn trên API hoặc cơ sở dữ liệu, chúng tôi có thể cần tạo danh sách ngày có thể lặp lại. Đây có thể là một nhiệm vụ tốn thời gian, nhưng may mắn thay, chúng ta có thể dễ dàng thực hiện điều này với Pandas
Mục lục
Hàm phạm vi ngày của gấu trúc
Hãy xem hàm Pandas date_range có sẵn trong Pandas. Với mục đích của hướng dẫn này, chúng ta sẽ xem xét số lượng tham số đã giảm
pd.date_range[
start=None,
end=None,
periods=None,
freq=None
]
- Các tham số bắt đầu và kết thúc tìm kiếm các chuỗi hoặc các đối tượng giống như ngày giờ
- Tham số thời gian xác định số lượng thời gian để tạo
- Tham số tần số xác định số lượng thời gian để tạo
Tạo phạm vi ngày đầu tiên của chúng tôi
Giả sử chúng tôi muốn tạo một danh sách đầu tiên của tháng hàng tháng vào năm 2020. Chúng ta có thể viết đoạn mã sau
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
Chúng tôi sử dụng tần suất của MS để báo hiệu rằng chúng tôi muốn quay lại đầu tháng. Điều này sẽ tạo ra một danh sách chứa những điều sau đây
DatetimeIndex [['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01', '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01', '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01'],
dtype='datetime64[ns]', freq='MS']
Mỗi mục trong này là một đối tượng datetime. Nếu chúng tôi muốn tạo chuỗi này thành một chuỗi, chúng tôi có thể lặp lại từng mục. Đối với điều này, chúng ta có thể sử dụng vòng lặp for, như hình bên dưới
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
list2020 = []
for i in first2020:
list2020.append[i.strftime['%Y-%m-%d']]
Điều này trả về một danh sách chứa
['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01', '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01', '2020-09-01',
'2020-10-01', '2020-11-01', '2020-12-01']
Tương tự, bạn có thể viết lại toàn bộ mã dưới dạng hiểu danh sách
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
list2020 = [i.strftime['%Y-%m-%d'] for i in first2020]
Một số tần số hữu ích khác
Chúng tôi có thể muốn sử dụng một số tần số khác
- B. tần suất ngày làm việc
- D. tần suất ngày dương lịch
- W. tần suất hàng tuần
- M. tần suất cuối tháng
Phần kết luận. Tạo phạm vi ngày với Pandas
Trong bài đăng này, chúng tôi đã học cách tạo phạm vi ngày tiện dụng với Pandas bằng Python. Đó là một cách tiện dụng và nhanh chóng để giúp tạo các đối tượng có thể lặp lại để truy vấn API và cơ sở dữ liệu. Bạn có thể tìm hiểu thêm về chức năng này bằng cách truy cập tài liệu chính thức
Chúng tôi sẽ giới thiệu một số phương pháp để tạo danh sách một loạt các ngày. Một cách để làm như vậy là sử dụng thư viện
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
5. Pandas có hỗ trợ trực tiếp để đạt được nhiệm vụ. Một cách khác là thiết kế logic của riêng bạn theo cách thủ công bằng cách sử dụng vòng lặp for để tạo ngày thángChúng ta sẽ xem xét một số ví dụ như tạo danh sách phạm vi ngày theo ngày bắt đầu nhập và k ngày sau đó hoặc chúng ta có thể nhập ngày bắt đầu và ngày kết thúc
Sử dụng Pandas để tạo danh sách phạm vi ngày trong Python
Chúng ta sẽ sử dụng hàm
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
6 của pandas trong đó chúng ta sẽ chuyển ngày bắt đầu và số ngày sau đó [được gọi là khoảng thời gian]. Ở đây chúng tôi cũng đã sử dụng thư viện import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
7 để định dạng ngày để chúng tôi có thể xuất ngày ở định dạng này import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
8. Chúng tôi cũng có thể xác định dấu thời gian cùng với ngàyMã Ví dụ
Trong ví dụ này, chúng tôi đang chuyển ngày bắt đầu ở định dạng
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
8 và dấu chấm. Vì vậy, ở đầu ra, chúng ta có thể thấy danh sách phạm vi ngày bắt đầu từ ngày bắt đầu và số Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
1 sau đó# python 3.x
import datetime
import pandas as pd
start = datetime.datetime.strptime["01-12-2021", "%d-%m-%Y"]
date_generated = pd.date_range[start, periods=5]
print[date_generated.strftime["%d-%m-%Y"]]
đầu ra
Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
Bây giờ chúng ta sẽ xem xét một ví dụ khác trong đó chúng ta sẽ vượt qua
Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
2 và Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
3. Chương trình sẽ xuất phạm vi ngày giữa hai ngày nàyimport pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
1đầu ra
import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
2Với sự trợ giúp của vòng lặp for và
Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
4, chúng ta có thể tạo danh sách theo cách thủ công. Index[['01-12-2021', '02-12-2021', '03-12-2021', '04-12-2021', '05-12-2021'], dtype='object']
4 là một hàm được định nghĩa trong thư viện import pandas as pd
first2020 = pd.date_range[start='2020-01-01', end='2020-12-01', freq='MS']
7. Ở đây delta có nghĩa là sự khác biệt. Với sự trợ giúp của nó, chúng ta có thể cộng hoặc trừ delta với một ngày để có được ngày tiếp theo hoặc ngày trước đó, tương ứng. Giả sử chúng ta có một ngày 01-12-2021. Bây giờ, nếu chúng ta thêm 1 vào nó, ngày của chúng ta sẽ là 02-12-2021. Chúng ta sẽ sử dụng logic đó trong vòng lặp for. Vòng lặp for được lặp lại và chúng tôi sẽ thêm biến có ngày bắt đầu để có ngày tiếp theo, sau đó chúng tôi nối ngày được tạo hiện tại vào danh sách của mình cho đến khi chúng tôi nhận được phạm vi ngày hoàn chỉnh