Python Pandas - การจัดทำดัชนีและการเลือกข้อมูล
ในบทนี้เราจะพูดถึงวิธีการฝานวันที่และโดยทั่วไปแล้วจะได้รับส่วนย่อยของวัตถุแพนด้า
ตัวดำเนินการจัดทำดัชนี Python และ NumPy "[]" และตัวดำเนินการแอตทริบิวต์ "" ให้การเข้าถึงโครงสร้างข้อมูลของ Pandas อย่างรวดเร็วและง่ายดายในกรณีการใช้งานที่หลากหลาย อย่างไรก็ตามเนื่องจากไม่ทราบประเภทของข้อมูลที่จะเข้าถึงล่วงหน้าการใช้ตัวดำเนินการมาตรฐานโดยตรงจึงมีข้อ จำกัด ในการปรับให้เหมาะสม สำหรับรหัสการผลิตเราขอแนะนำให้คุณใช้ประโยชน์จากวิธีการเข้าถึงข้อมูลแพนด้าที่ได้รับการปรับให้เหมาะสมซึ่งอธิบายไว้ในบทนี้
ตอนนี้ Pandas รองรับการจัดทำดัชนีหลายแกนสามประเภท ทั้งสามประเภทมีการกล่าวถึงในตารางต่อไปนี้ -
ซีเนียร์ No | การจัดทำดัชนีและคำอธิบาย |
---|---|
1 | .loc() ตามฉลาก |
2 | .iloc() ตามจำนวนเต็ม |
3 | .ix() ตามป้ายกำกับและจำนวนเต็ม |
.loc ()
นุ่นให้วิธีการต่างๆอย่างหมดจด label based indexing. เมื่อหั่นจะมีการผูกเริ่มต้นด้วย จำนวนเต็มเป็นป้ายกำกับที่ถูกต้อง แต่หมายถึงป้ายกำกับไม่ใช่ตำแหน่ง
.loc() มีวิธีการเข้าถึงหลายวิธีเช่น -
- ป้ายกำกับสเกลาร์เดียว
- รายการป้ายกำกับ
- วัตถุชิ้นหนึ่ง
- อาร์เรย์บูลีน
locใช้ตัวดำเนินการเดี่ยว / รายการ / ช่วงสองตัวคั่นด้วย "," อันแรกระบุแถวและแถวที่สองระบุคอลัมน์
ตัวอย่าง 1
#import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
#select all rows for a specific column
print df.loc[:,'A']
มัน output มีดังนี้ -
a 0.391548
b -0.070649
c -0.317212
d -2.162406
e 2.202797
f 0.613709
g 1.050559
h 1.122680
Name: A, dtype: float64
ตัวอย่าง 2
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select all rows for multiple columns, say list[]
print df.loc[:,['A','C']]
มัน output มีดังนี้ -
A C
a 0.391548 0.745623
b -0.070649 1.620406
c -0.317212 1.448365
d -2.162406 -0.873557
e 2.202797 0.528067
f 0.613709 0.286414
g 1.050559 0.216526
h 1.122680 -1.621420
ตัวอย่างที่ 3
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select few rows for multiple columns, say list[]
print df.loc[['a','b','f','h'],['A','C']]
มัน output มีดังนี้ -
A C
a 0.391548 0.745623
b -0.070649 1.620406
f 0.613709 0.286414
h 1.122680 -1.621420
ตัวอย่างที่ 4
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# Select range of rows for all columns
print df.loc['a':'h']
มัน output มีดังนี้ -
A B C D
a 0.391548 -0.224297 0.745623 0.054301
b -0.070649 -0.880130 1.620406 1.419743
c -0.317212 -1.929698 1.448365 0.616899
d -2.162406 0.614256 -0.873557 1.093958
e 2.202797 -2.315915 0.528067 0.612482
f 0.613709 -0.157674 0.286414 -0.500517
g 1.050559 -2.272099 0.216526 0.928449
h 1.122680 0.324368 -1.621420 -0.741470
ตัวอย่างที่ 5
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4),
index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D'])
# for getting values with a boolean array
print df.loc['a']>0
มัน output มีดังนี้ -
A False
B True
C False
D False
Name: a, dtype: bool
.iloc ()
หมีแพนด้าจัดเตรียมวิธีการต่างๆเพื่อให้ได้ดัชนีตามจำนวนเต็มล้วนๆ เช่นเดียวกับ python และ numpy สิ่งเหล่านี้คือ0-based การจัดทำดัชนี
วิธีการเข้าถึงต่างๆมีดังนี้ -
- จำนวนเต็ม
- รายการจำนวนเต็ม
- ช่วงของค่า
ตัวอย่าง 1
# import the pandas library and aliasing as pd
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# select all rows for a specific column
print df.iloc[:4]
มัน output มีดังนี้ -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
ตัวอย่าง 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Integer slicing
print df.iloc[:4]
print df.iloc[1:5, 2:4]
มัน output มีดังนี้ -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
C D
1 -0.813012 0.631615
2 0.025070 0.230806
3 0.826977 -0.026251
4 1.423332 1.130568
ตัวอย่างที่ 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Slicing through list of values
print df.iloc[[1, 3, 5], [1, 3]]
print df.iloc[1:3, :]
print df.iloc[:,1:3]
มัน output มีดังนี้ -
B D
1 0.890791 0.631615
3 -1.284314 -0.026251
5 -0.512888 -0.518930
A B C D
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
B C
0 0.256239 -1.270702
1 0.890791 -0.813012
2 -0.531378 0.025070
3 -1.284314 0.826977
4 -0.460729 1.423332
5 -0.512888 0.581409
6 -1.204853 0.098060
7 -0.947857 0.641358
.ix ()
นอกเหนือจากการใช้เลเบลบริสุทธิ์และอิงจากจำนวนเต็มแล้ว Pandas ยังมีวิธีไฮบริดสำหรับการเลือกและการเซ็ตอ็อบเจ็กต์โดยใช้ตัวดำเนินการ. ix ()
ตัวอย่าง 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Integer slicing
print df.ix[:4]
มัน output มีดังนี้ -
A B C D
0 0.699435 0.256239 -1.270702 -0.645195
1 -0.685354 0.890791 -0.813012 0.631615
2 -0.783192 -0.531378 0.025070 0.230806
3 0.539042 -1.284314 0.826977 -0.026251
ตัวอย่าง 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
# Index slicing
print df.ix[:,'A']
มัน output มีดังนี้ -
0 0.699435
1 -0.685354
2 -0.783192
3 0.539042
4 -1.044209
5 -1.415411
6 1.062095
7 0.994204
Name: A, dtype: float64
การใช้สัญกรณ์
การรับค่าจากวัตถุ Pandas ด้วยการทำดัชนีหลายแกนใช้สัญกรณ์ต่อไปนี้ -
วัตถุ | ดัชนี | ประเภทผลตอบแทน |
---|---|---|
ชุด | s.loc [ตัวสร้างดัชนี] | ค่าสเกลาร์ |
DataFrame | df.loc [row_index, col_index] | วัตถุซีรี่ส์ |
แผงหน้าปัด | p.loc [item_index, major_index, minor_index] | p.loc [item_index, major_index, minor_index] |
Note − .iloc() & .ix() ใช้ตัวเลือกการจัดทำดัชนีเดียวกันและค่า Return
ตอนนี้ให้เราดูว่าแต่ละการดำเนินการสามารถดำเนินการกับวัตถุ DataFrame ได้อย่างไร เราจะใช้ตัวดำเนินการจัดทำดัชนีพื้นฐาน '[]' -
ตัวอย่าง 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df['A']
มัน output มีดังนี้ -
0 -0.478893
1 0.391931
2 0.336825
3 -1.055102
4 -0.165218
5 -0.328641
6 0.567721
7 -0.759399
Name: A, dtype: float64
Note - เราสามารถส่งรายการค่าไปยัง [] เพื่อเลือกคอลัมน์เหล่านั้น
ตัวอย่าง 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df[['A','B']]
มัน output มีดังนี้ -
A B
0 -0.478893 -0.606311
1 0.391931 -0.949025
2 0.336825 0.093717
3 -1.055102 -0.012944
4 -0.165218 1.550310
5 -0.328641 -0.226363
6 0.567721 -0.312585
7 -0.759399 -0.372696
ตัวอย่างที่ 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df[2:2]
มัน output มีดังนี้ -
Columns: [A, B, C, D]
Index: []
การเข้าถึงแอตทริบิวต์
คอลัมน์สามารถเลือกได้โดยใช้ตัวดำเนินการแอตทริบิวต์ "."
ตัวอย่าง
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print df.A
มัน output มีดังนี้ -
0 -0.478893
1 0.391931
2 0.336825
3 -1.055102
4 -0.165218
5 -0.328641
6 0.567721
7 -0.759399
Name: A, dtype: float64