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)