Python Pandas - Kết nối
Pandas cung cấp nhiều tiện ích khác nhau để dễ dàng kết hợp với nhau Series, DataFramevà Panel các đối tượng.
pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
objs - Đây là một chuỗi hoặc ánh xạ của các đối tượng Series, DataFrame hoặc Panel.
axis - {0, 1, ...}, mặc định là 0. Đây là trục để nối với nhau.
join- {'bên trong', 'bên ngoài'}, mặc định là 'bên ngoài'. Cách xử lý các chỉ mục trên (các) trục khác. Bên ngoài cho liên hiệp và bên trong cho giao lộ.
ignore_index- boolean, mặc định là Sai. Nếu Đúng, không sử dụng các giá trị chỉ mục trên trục nối. Trục kết quả sẽ được gắn nhãn 0, ..., n - 1.
join_axes- Đây là danh sách các đối tượng Index. Các chỉ mục cụ thể để sử dụng cho (n-1) trục khác thay vì thực hiện logic tập hợp bên trong / bên ngoài.
Nối các đối tượng
Các concatchức năng thực hiện tất cả các công việc nặng nhọc của việc thực hiện các phép toán nối dọc theo một trục. Hãy để chúng tôi tạo các đối tượng khác nhau và thực hiện nối.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two])
Nó là output như sau -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Giả sử chúng ta muốn liên kết các khóa cụ thể với từng phần của DataFrame đã được cắt nhỏ. Chúng ta có thể làm điều này bằng cách sử dụngkeys đối số -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'])
Nó là output như sau -
x 1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
y 1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Chỉ mục của kết quả được sao chép; mỗi chỉ mục được lặp lại.
Nếu đối tượng kết quả phải tuân theo lập chỉ mục của chính nó, hãy đặt ignore_index đến True.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],keys=['x','y'],ignore_index=True)
Nó là output như sau -
Marks_scored Name subject_id
0 98 Alex sub1
1 90 Amy sub2
2 87 Allen sub4
3 69 Alice sub6
4 78 Ayoung sub5
5 89 Billy sub2
6 80 Brian sub4
7 79 Bran sub3
8 97 Bryce sub6
9 88 Betty sub5
Quan sát, chỉ số thay đổi hoàn toàn và các Phím cũng bị ghi đè.
Nếu hai đối tượng cần được thêm vào axis=1, sau đó các cột mới sẽ được thêm vào.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two],axis=1)
Nó là output như sau -
Marks_scored Name subject_id Marks_scored Name subject_id
1 98 Alex sub1 89 Billy sub2
2 90 Amy sub2 80 Brian sub4
3 87 Allen sub4 79 Bran sub3
4 69 Alice sub6 97 Bryce sub6
5 78 Ayoung sub5 88 Betty sub5
Kết nối bằng cách sử dụng append
Một phím tắt hữu ích để nối là các phương thức nối thêm phiên bản trên Series và DataFrame. Các phương thức này thực sự có trước concat. Chúng nối với nhauaxis=0, cụ thể là chỉ số -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print one.append(two)
Nó là output như sau -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Các append hàm cũng có thể lấy nhiều đối tượng -
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print one.append([two,one,two])
Nó là output như sau -
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5
Chuỗi thời gian
Gấu trúc cung cấp một công cụ mạnh mẽ cho thời gian làm việc với dữ liệu Chuỗi thời gian, đặc biệt là trong lĩnh vực tài chính. Trong khi làm việc với dữ liệu chuỗi thời gian, chúng tôi thường gặp những điều sau:
- Tạo chuỗi thời gian
- Chuyển đổi chuỗi thời gian thành các tần số khác nhau
Pandas cung cấp một bộ công cụ tương đối nhỏ gọn và khép kín để thực hiện các tác vụ trên.
Nhận thời gian hiện tại
datetime.now() cung cấp cho bạn ngày và giờ hiện tại.
import pandas as pd
print pd.datetime.now()
Nó là output như sau -
2017-05-11 06:10:13.393147
Tạo TimeStamp
Dữ liệu có dấu thời gian là loại dữ liệu thời gian cơ bản nhất liên kết các giá trị với các điểm trong thời gian. Đối với các đối tượng gấu trúc, nó có nghĩa là sử dụng các điểm đúng lúc. Hãy lấy một ví dụ -
import pandas as pd
print pd.Timestamp('2017-03-01')
Nó là output như sau -
2017-03-01 00:00:00
Nó cũng có thể chuyển đổi số nguyên hoặc thời gian thực. Đơn vị mặc định cho những thứ này là nano giây (vì đây là cách Dấu thời gian được lưu trữ). Tuy nhiên, các kỷ nguyên thường được lưu trữ trong một đơn vị khác có thể được chỉ định. Hãy lấy một ví dụ khác
import pandas as pd
print pd.Timestamp(1587687255,unit='s')
Nó là output như sau -
2020-04-24 00:14:15
Tạo một khoảng thời gian
import pandas as pd
print pd.date_range("11:00", "13:30", freq="30min").time
Nó là output như sau -
[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]
Thay đổi tần suất thời gian
import pandas as pd
print pd.date_range("11:00", "13:30", freq="H").time
Nó là output như sau -
[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]
Chuyển đổi sang Dấu thời gian
Để chuyển đổi một Chuỗi hoặc đối tượng dạng danh sách của các đối tượng giống ngày, ví dụ: chuỗi, kỷ nguyên hoặc hỗn hợp, bạn có thể sử dụng to_datetimechức năng. Khi được thông qua, nó trả về một Chuỗi (có cùng chỉ mục), trong khilist-like được chuyển đổi thành một DatetimeIndex. Hãy xem ví dụ sau:
import pandas as pd
print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))
Nó là output như sau -
0 2009-07-31
1 2010-01-10
2 NaT
dtype: datetime64[ns]
NaT có nghĩa Not a Time (tương đương với NaN)
Hãy lấy một ví dụ khác.
import pandas as pd
print pd.to_datetime(['2005/11/23', '2010.12.31', None])
Nó là output như sau -
DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)