Python Pandas - การเชื่อมต่อ

Pandas มีสิ่งอำนวยความสะดวกต่างๆสำหรับการรวมเข้าด้วยกันอย่างง่ายดาย Series, DataFrameและ Panel วัตถุ

pd.concat(objs,axis=0,join='outer',join_axes=None,
ignore_index=False)
  • objs - นี่คือลำดับหรือการแมปของออบเจ็กต์ Series, DataFrame หรือ Panel

  • axis - {0, 1, ... }, ค่าเริ่มต้น 0 นี่คือแกนที่จะเชื่อมต่อเข้าด้วยกัน

  • join- {'inner', 'outer'}, default 'outer' วิธีจัดการดัชนีบนแกนอื่น ๆ ด้านนอกสำหรับสหภาพและด้านในสำหรับจุดตัด

  • ignore_index- บูลีนเริ่มต้น False ถ้าเป็นจริงอย่าใช้ค่าดัชนีบนแกนการเรียงต่อกัน แกนผลลัพธ์จะมีข้อความเป็น 0, ... , n - 1

  • join_axes- นี่คือรายการดัชนีวัตถุ ดัชนีเฉพาะที่จะใช้สำหรับแกนอื่น (n-1) แทนการใช้ตรรกะชุดภายใน / ภายนอก

การเชื่อมต่อวัตถุ

concatฟังก์ชั่นทำหน้าที่ยกของหนักทั้งหมดในการดำเนินการเชื่อมต่อตามแกน ให้เราสร้างวัตถุที่แตกต่างกันและทำการต่อกัน

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])

มัน output มีดังนี้ -

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

สมมติว่าเราต้องการเชื่อมโยงคีย์เฉพาะกับแต่ละส่วนของ DataFrame ที่สับแล้ว เราสามารถทำได้โดยใช้keys อาร์กิวเมนต์ -

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'])

มัน output มีดังนี้ -

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

ดัชนีของผลลัพธ์ซ้ำกัน ดัชนีแต่ละรายการซ้ำกัน

หากอ็อบเจ็กต์ผลลัพธ์ต้องเป็นไปตามการจัดทำดัชนีของตัวเองให้ตั้งค่า ignore_index ถึง 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)

มัน output มีดังนี้ -

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

สังเกตดัชนีจะเปลี่ยนไปอย่างสมบูรณ์และคีย์จะถูกแทนที่ด้วย

หากต้องเพิ่มวัตถุสองชิ้นพร้อมกัน axis=1จากนั้นคอลัมน์ใหม่จะถูกต่อท้าย

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)

มัน output มีดังนี้ -

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

การเชื่อมต่อโดยใช้ผนวก

ทางลัดที่มีประโยชน์ในการเชื่อมต่อคือวิธีการผนวกอินสแตนซ์บน Series และ DataFrame วิธีการเหล่านี้จริง ๆ แล้ว concat พวกเขาเชื่อมต่อกันaxis=0คือดัชนี -

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)

มัน output มีดังนี้ -

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

append ฟังก์ชั่นสามารถใช้หลายวัตถุได้เช่นกัน -

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])

มัน output มีดังนี้ -

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

อนุกรมเวลา

Pandas เป็นเครื่องมือที่มีประสิทธิภาพสำหรับเวลาทำงานกับข้อมูลอนุกรมเวลาโดยเฉพาะในภาคการเงิน ในขณะที่ทำงานกับข้อมูลอนุกรมเวลาเรามักพบสิ่งต่อไปนี้ -

  • การสร้างลำดับเวลา
  • แปลงอนุกรมเวลาเป็นความถี่ต่างๆ

Pandas มีชุดเครื่องมือที่ค่อนข้างกะทัดรัดและมีอยู่ในตัวสำหรับทำงานข้างต้น

รับเวลาปัจจุบัน

datetime.now() ให้วันที่และเวลาปัจจุบันแก่คุณ

import pandas as pd

print pd.datetime.now()

มัน output มีดังนี้ -

2017-05-11 06:10:13.393147

สร้าง TimeStamp

ข้อมูลที่ประทับเวลาเป็นข้อมูลชุดเวลาพื้นฐานที่สุดที่เชื่อมโยงค่ากับจุดในเวลา สำหรับวัตถุแพนด้านั้นหมายถึงการใช้แต้มให้ทันเวลา ลองดูตัวอย่าง -

import pandas as pd

print pd.Timestamp('2017-03-01')

มัน output มีดังนี้ -

2017-03-01 00:00:00

นอกจากนี้ยังสามารถแปลงเวลาจำนวนเต็มหรือจำนวนทศนิยมได้อีกด้วย หน่วยเริ่มต้นสำหรับสิ่งเหล่านี้คือนาโนวินาที (เนื่องจากเป็นวิธีการจัดเก็บการประทับเวลา) อย่างไรก็ตามมักจะถูกเก็บไว้ในหน่วยอื่นซึ่งสามารถระบุได้ ลองมาอีกตัวอย่างหนึ่ง

import pandas as pd

print pd.Timestamp(1587687255,unit='s')

มัน output มีดังนี้ -

2020-04-24 00:14:15

สร้างช่วงเวลา

import pandas as pd

print pd.date_range("11:00", "13:30", freq="30min").time

มัน output มีดังนี้ -

[datetime.time(11, 0) datetime.time(11, 30) datetime.time(12, 0)
datetime.time(12, 30) datetime.time(13, 0) datetime.time(13, 30)]

เปลี่ยนความถี่ของเวลา

import pandas as pd

print pd.date_range("11:00", "13:30", freq="H").time

มัน output มีดังนี้ -

[datetime.time(11, 0) datetime.time(12, 0) datetime.time(13, 0)]

การแปลงเป็นการประทับเวลา

ในการแปลงซีรีส์หรือวัตถุคล้ายรายการของออบเจ็กต์ที่มีลักษณะคล้ายวันที่ตัวอย่างเช่นสตริงยุคสมัยหรือส่วนผสมคุณสามารถใช้ to_datetimeฟังก์ชัน เมื่อผ่านไปสิ่งนี้จะส่งกลับ Series (ที่มีดัชนีเดียวกัน) ในขณะที่ alist-like ถูกแปลงเป็นไฟล์ DatetimeIndex. ดูตัวอย่างต่อไปนี้ -

import pandas as pd

print pd.to_datetime(pd.Series(['Jul 31, 2009','2010-01-10', None]))

มัน output มีดังนี้ -

0  2009-07-31
1  2010-01-10
2         NaT
dtype: datetime64[ns]

NaT หมายถึง Not a Time (เทียบเท่ากับ NaN)

ลองมาอีกตัวอย่างหนึ่ง

import pandas as pd

print pd.to_datetime(['2005/11/23', '2010.12.31', None])

มัน output มีดังนี้ -

DatetimeIndex(['2005-11-23', '2010-12-31', 'NaT'], dtype='datetime64[ns]', freq=None)