Trong bài viết này, bạn sẽ tìm thấy 3 ví dụ khác nhau về cách chia khung dữ liệu thành các khung dữ liệu mới dựa trên một cột. Các ví dụ là
Video hướng dẫn
gấu trúc. Cách chia khung dữ liệu trên cơ sở hàng tháng
Bạn có thể xem khung dữ liệu trên hình bên dưới. Ban đầu các cột. "ngày", "mm", "năm" không tồn tại. Chúng tôi sẽ chia khung dữ liệu thành nhiều nhóm tùy thuộc vào tháng. Với mục đích đó, chúng tôi đang chia cột ngày thành ngày, tháng và năm. Sau đó ta sẽ nhóm vào cột tháng. Cuối cùng, chúng tôi đang in các khung dữ liệu đầu ra
import pandas as pd
df = pd.DataFrame[
{
"Company": [
"Samsung", "Samsung", "Samsung", "Samsung", "Samsung", "LG", "LG", "LG", "LG", "LG", "Sony", "Sony", "Sony",
"Sony", "Sony",
],
"Date": [
"10/9/2015", "10/9/2015", "10/9/2017", "10/10/2017", "10/10/2017", "10/10/2018", "10/9/2018", "10/9/2018",
"10/9/2018", "10/10/2016", "10/10/2016", "10/10/2016", "10/10/2019", "10/10/2019", "10/10/2019",
],
"Country": [
"India", "India", "USA", "France", "India", "India", "Germany", "USA", "Brazil", "Brazil", "India",
"Germany", "India", "India", "Brazil",
],
"Sells": [15, 81, 29, 33, 21, 42, 67, 35, 2, 34, 21, 50, 10, 26, 53],
}
]
df[["day", "mm", "year"]] = df["Date"].str.split["/", expand=True]
agg = df.groupby[['mm']]
for group in agg:
print[group]
kết quả
CompanyDateCountrySells daymmyear3Samsung10/10/2017France33101020174Samsung10/10/2017India21101020175LG10/10/2018India42101020189LG10/10/2016Brazil341010201610Sony10/10/2016India211010201611Sony10/10/2016Germany501010201612Sony10/10/2019India101010201913Sony10/10/2019India261010201914Sony10/10/2019Brazil5310102019CompanyDateCountrySells day mmyear0Samsung10/9/2015India1510920151Samsung10/9/2015India8110920152Samsung10/9gấu trúc. Cách chia khung dữ liệu mỗi năm
Lần này chúng tôi sẽ sử dụng cách tiếp cận khác để đạt được hành vi tương tự. Đầu tiên chúng ta sẽ sử dụng lambda để chuyển đổi chuỗi thành ngày tháng. Sau đó, chúng tôi đang trích xuất các khoảng thời gian. Phần cuối cùng là nhóm theo năm trích xuất
import dateutil
import pandas as pd
df = pd.DataFrame[
{
"Company": [
"Samsung", "Samsung", "Samsung", "Samsung", "Samsung", "LG", "LG", "LG", "LG", "LG", "Sony", "Sony", "Sony",
"Sony", "Sony",
],
"Date": [
"10/9/2015", "10/9/2015", "10/9/2017", "10/10/2017", "10/10/2017", "10/10/2018", "10/9/2018", "10/9/2018",
"10/9/2018", "10/10/2016", "10/10/2016", "10/10/2016", "10/10/2019", "10/10/2019", "10/10/2019",
],
"Country": [
"India", "India", "USA", "France", "India", "India", "Germany", "USA", "Brazil", "Brazil", "India",
"Germany", "India", "India", "Brazil",
],
"Sells": [15, 81, 29, 33, 21, 42, 67, 35, 2, 34, 21, 50, 10, 26, 53],
}
]
df["Date"] = df["Date"].apply[lambda x: dateutil.parser.parse[x]]
year = df["Date"].dt.to_period["Y"]
agg = df.groupby[[year]]
for group in agg:
print[group]
kết quả
CompanyDate CountrySellsdaymmyear0Samsung 2015-10-09India1510920151Samsung 2015-10-09India811092015CompanyDateCountrySells daymmyear9LG 2016-10-10Brazil341010201610Sony 2016-10-10India211010201611Sony 2016-10-10Germany5010102016CompanyDate CountrySells daymmyear2Samsung 2017-10-09USA2910920173Samsung 2017-10-10France33101020174Samsung 2017-10-10India2110102017CompanyDateCountrySells daymmyear5LG 2018-10-gấu trúc. Tách khung dữ liệu trên một cột chuỗi
Lần này khung dữ liệu là một khung dữ liệu khác. Và chúng tôi có hồ sơ cho hai công ty bên trong. Nếu mục tiêu của chúng tôi là chia khung dữ liệu này thành các khung dữ liệu mới dựa trên các công ty thì chúng tôi có thể thực hiện
Tham số n có thể được sử dụng để giới hạn số lần phân tách trên dấu phân cách. Đầu ra của split và rsplit là khác nhau
>>> s.str.split[n=2] 0 [this, is, a regular sentence] 1 [//docs.python.org/3/tutorial/index.html] 2 NaN dtype: object
>>> s.str.rsplit[n=2] 0 [this is a, regular, sentence] 1 [//docs.python.org/3/tutorial/index.html] 2 NaN dtype: object
Tham số pat có thể được sử dụng để phân chia theo các ký tự khác
>>> s.str.split[pat="/"] 0 [this is a regular sentence] 1 [, , docs.python.org, 3, tutorial, index... 2 NaN dtype: object
Khi sử dụng
>>> s.str.rsplit[] 0 [this, is, a, regular, sentence] 1 [//docs.python.org/3/tutorial/index.html] 2 NaN dtype: object1, các phần tử phân chia sẽ mở rộng thành các cột riêng biệt. Nếu có NaN, nó sẽ được lan truyền khắp các cột trong quá trình phân tách
>>> s.str.split[expand=True] 0 1 2 3 4 0 this is a regular sentence 1 //docs.python.org/3/tutorial/index.html None None None None 2 NaN NaN NaN NaN NaN
Đối với các trường hợp sử dụng phức tạp hơn một chút như tách tên tài liệu html khỏi url, có thể sử dụng kết hợp các cài đặt tham số
>>> s.str.rsplit["/", n=1, expand=True] 0 1 0 this is a regular sentence None 1 //docs.python.org/3/tutorial index.html 2 NaN NaN
Nhớ thoát các ký tự đặc biệt khi sử dụng biểu thức chính quy một cách rõ ràng
________số 8_______
Biểu thức chính quy có thể được sử dụng để xử lý các url hoặc tên tệp. Khi pat là một chuỗi và
>>> s.str.split[n=2] 0 [this, is, a regular sentence] 1 [//docs.python.org/3/tutorial/index.html] 2 NaN dtype: object0 [mặc định], pat đã cho chỉ được biên dịch dưới dạng biểu thức chính quy nếu
>>> s.str.split[n=2] 0 [this, is, a regular sentence] 1 [//docs.python.org/3/tutorial/index.html] 2 NaN dtype: object1