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, DataFramePanel 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)