Python Pandas - DataFrame
กรอบข้อมูลเป็นโครงสร้างข้อมูลสองมิติกล่าวคือข้อมูลจะถูกจัดวางในรูปแบบตารางในแถวและคอลัมน์
คุณสมบัติของ DataFrame
- คอลัมน์อาจมีหลายประเภท
- ขนาด - เปลี่ยนแปลงได้
- แกนที่มีป้ายกำกับ (แถวและคอลัมน์)
- สามารถดำเนินการทางคณิตศาสตร์ในแถวและคอลัมน์
โครงสร้าง
สมมติว่าเรากำลังสร้าง data frame ที่มีข้อมูลของนักเรียน
คุณสามารถคิดว่ามันเป็นตาราง SQL หรือการแสดงข้อมูลสเปรดชีต
แพนด้า. ดาต้าเฟรม
แพนด้า DataFrame สามารถสร้างได้โดยใช้ตัวสร้างต่อไปนี้ -
pandas.DataFrame( data, index, columns, dtype, copy)
พารามิเตอร์ของตัวสร้างมีดังนี้ -
ซีเนียร์ No | พารามิเตอร์และคำอธิบาย |
---|---|
1 |
data ข้อมูลอยู่ในรูปแบบต่างๆเช่น ndarray, series, map, list, dict, ค่าคงที่และ DataFrame อื่น |
2 |
index สำหรับเลเบลแถวดัชนีที่จะใช้สำหรับเฟรมผลลัพธ์คือ Optional Default np.arange (n) หากไม่มีการส่งดัชนี |
3 |
columns สำหรับป้ายชื่อคอลัมน์ไวยากรณ์เริ่มต้นที่เป็นทางเลือกคือ - np.arange (n) นี่จะเป็นจริงหากไม่มีการส่งผ่านดัชนี |
4 |
dtype ชนิดข้อมูลของแต่ละคอลัมน์ |
5 |
copy คำสั่งนี้ (หรืออะไรก็ได้) ใช้สำหรับการคัดลอกข้อมูลหากค่าดีฟอลต์คือ False |
สร้าง DataFrame
แพนด้า DataFrame สามารถสร้างได้โดยใช้อินพุตต่างๆเช่น -
- Lists
- dict
- Series
- Numpy ndarrays
- DataFrame อื่น
ในส่วนต่อไปของบทนี้เราจะดูวิธีสร้าง DataFrame โดยใช้อินพุตเหล่านี้
สร้าง DataFrame ที่ว่างเปล่า
DataFrame พื้นฐานซึ่งสามารถสร้างได้คือ Dataframe ที่ว่างเปล่า
ตัวอย่าง
#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df
มัน output มีดังนี้ -
Empty DataFrame
Columns: []
Index: []
สร้าง DataFrame จาก Lists
DataFrame สามารถสร้างได้โดยใช้รายการเดียวหรือรายการของรายการ
ตัวอย่าง 1
import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df
มัน output มีดังนี้ -
0
0 1
1 2
2 3
3 4
4 5
ตัวอย่าง 2
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df
มัน output มีดังนี้ -
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
ตัวอย่างที่ 3
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df
มัน output มีดังนี้ -
Name Age
0 Alex 10.0
1 Bob 12.0
2 Clarke 13.0
Note - สังเกต dtype พารามิเตอร์เปลี่ยนประเภทของคอลัมน์อายุเป็นทศนิยม
สร้าง DataFrame จาก Dict of ndarrays / Lists
ทั้งหมด ndarraysต้องมีความยาวเท่ากัน หากดัชนีถูกส่งผ่านความยาวของดัชนีควรเท่ากับความยาวของอาร์เรย์
หากไม่มีการส่งดัชนีโดยค่าเริ่มต้นดัชนีจะเป็นช่วง (n) โดยที่ n คือความยาวอาร์เรย์
ตัวอย่าง 1
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df
มัน output มีดังนี้ -
Age Name
0 28 Tom
1 34 Jack
2 29 Steve
3 42 Ricky
Note- สังเกตค่า 0,1,2,3 เป็นดัชนีเริ่มต้นที่กำหนดให้กับแต่ละรายการโดยใช้ช่วงฟังก์ชัน (n)
ตัวอย่าง 2
ตอนนี้ให้เราสร้าง DataFrame ที่จัดทำดัชนีโดยใช้อาร์เรย์
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df
มัน output มีดังนี้ -
Age Name
rank1 28 Tom
rank2 34 Jack
rank3 29 Steve
rank4 42 Ricky
Note - สังเกต index พารามิเตอร์กำหนดดัชนีให้กับแต่ละแถว
สร้าง DataFrame จาก List of Dicts
รายการพจนานุกรมสามารถส่งผ่านเป็นข้อมูลอินพุตเพื่อสร้าง DataFrame โดยค่าเริ่มต้นคีย์พจนานุกรมจะใช้เป็นชื่อคอลัมน์
ตัวอย่าง 1
ตัวอย่างต่อไปนี้แสดงวิธีสร้าง DataFrame โดยส่งผ่านรายการพจนานุกรม
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df
มัน output มีดังนี้ -
a b c
0 1 2 NaN
1 5 10 20.0
Note - สังเกต NaN (ไม่ใช่ตัวเลข) จะถูกต่อท้ายในพื้นที่ที่ขาดหายไป
ตัวอย่าง 2
ตัวอย่างต่อไปนี้แสดงวิธีสร้าง DataFrame โดยส่งผ่านรายการพจนานุกรมและดัชนีแถว
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df
มัน output มีดังนี้ -
a b c
first 1 2 NaN
second 5 10 20.0
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้แสดงวิธีสร้าง DataFrame ที่มีรายการพจนานุกรมดัชนีแถวและดัชนีคอลัมน์
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2
มัน output มีดังนี้ -
#df1 output
a b
first 1 2
second 5 10
#df2 output
a b1
first 1 NaN
second 5 NaN
Note- สังเกต df2 DataFrame ถูกสร้างขึ้นด้วยดัชนีคอลัมน์อื่นที่ไม่ใช่คีย์พจนานุกรม ดังนั้นจึงต่อท้าย NaN เข้าที่ ในขณะที่ df1 ถูกสร้างขึ้นด้วยดัชนีคอลัมน์เหมือนกับคีย์พจนานุกรมดังนั้นจึงมีการต่อท้ายของ NaN
สร้าง DataFrame จาก Dict of Series
สามารถส่งผ่าน Dictionary of Series เพื่อสร้าง DataFrame ได้ ดัชนีผลลัพธ์คือการรวมกันของดัชนีชุดข้อมูลทั้งหมดที่ส่งผ่าน
ตัวอย่าง
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df
มัน output มีดังนี้ -
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
Note - สังเกตสำหรับซีรีส์ที่หนึ่งไม่มีป้ายกำกับ ‘d’ ผ่านไป แต่ในผลลัพธ์สำหรับ d ป้ายกำกับ NaN ต่อท้ายด้วย NaN
ตอนนี้ให้เราเข้าใจ column selection, additionและ deletion ผ่านตัวอย่าง
การเลือกคอลัมน์
เราจะเข้าใจสิ่งนี้โดยการเลือกคอลัมน์จาก DataFrame
ตัวอย่าง
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df ['one']
มัน output มีดังนี้ -
a 1.0
b 2.0
c 3.0
d NaN
Name: one, dtype: float64
การเพิ่มคอลัมน์
เราจะเข้าใจสิ่งนี้โดยการเพิ่มคอลัมน์ใหม่ในกรอบข้อมูลที่มีอยู่
ตัวอย่าง
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
# Adding a new column to an existing DataFrame object with column label by passing new series
print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df
print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']
print df
มัน output มีดังนี้ -
Adding a new column by passing as Series:
one two three
a 1.0 1 10.0
b 2.0 2 20.0
c 3.0 3 30.0
d NaN 4 NaN
Adding a new column using the existing columns in DataFrame:
one two three four
a 1.0 1 10.0 11.0
b 2.0 2 20.0 22.0
c 3.0 3 30.0 33.0
d NaN 4 NaN NaN
การลบคอลัมน์
คอลัมน์สามารถลบหรือโผล่ได้ ให้เราเป็นตัวอย่างเพื่อทำความเข้าใจว่า
ตัวอย่าง
# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),
'three' : pd.Series([10,20,30], index=['a','b','c'])}
df = pd.DataFrame(d)
print ("Our dataframe is:")
print df
# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df
# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df
มัน output มีดังนี้ -
Our dataframe is:
one three two
a 1.0 10.0 1
b 2.0 20.0 2
c 3.0 30.0 3
d NaN NaN 4
Deleting the first column using DEL function:
three two
a 10.0 1
b 20.0 2
c 30.0 3
d NaN 4
Deleting another column using POP function:
three
a 10.0
b 20.0
c 30.0
d NaN
การเลือกแถวการเพิ่มและการลบ
ตอนนี้เราจะเข้าใจการเลือกแถวการเพิ่มและการลบผ่านตัวอย่าง ให้เราเริ่มต้นด้วยแนวคิดของการเลือก
เลือกตามฉลาก
สามารถเลือกแถวได้โดยส่งป้ายชื่อแถวไปยังไฟล์ loc ฟังก์ชัน
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.loc['b']
มัน output มีดังนี้ -
one 2.0
two 2.0
Name: b, dtype: float64
ผลลัพธ์คือชุดที่มีป้ายกำกับเป็นชื่อคอลัมน์ของ DataFrame และชื่อซีรีส์คือป้ายกำกับที่ดึงข้อมูลมา
การเลือกตามตำแหน่งจำนวนเต็ม
สามารถเลือกแถวได้โดยส่งตำแหน่งจำนวนเต็มไปยังไฟล์ iloc ฟังก์ชัน
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.iloc[2]
มัน output มีดังนี้ -
one 3.0
two 3.0
Name: c, dtype: float64
Slice Rows
สามารถเลือกหลายแถวได้โดยใช้โอเปอเรเตอร์ ":"
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df[2:4]
มัน output มีดังนี้ -
one two
c 3.0 3
d NaN 4
การเพิ่มแถว
เพิ่มแถวใหม่ใน DataFrame โดยใช้ไฟล์ appendฟังก์ชัน ฟังก์ชันนี้จะต่อท้ายแถวที่ท้าย
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
print df
มัน output มีดังนี้ -
a b
0 1 2
1 3 4
0 5 6
1 7 8
การลบแถว
ใช้ป้ายกำกับดัชนีเพื่อลบหรือวางแถวจาก DataFrame หากป้ายกำกับซ้ำกันหลายแถวจะถูกทิ้ง
หากคุณสังเกตในตัวอย่างข้างต้นป้ายกำกับจะซ้ำกัน ให้เราวางป้ายและดูว่าจะมีกี่แถว
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
# Drop rows with label 0
df = df.drop(0)
print df
มัน output มีดังนี้ -
a b
1 3 4
1 7 8
ในตัวอย่างข้างต้นแถวสองแถวถูกทิ้งเนื่องจากทั้งสองแถวมีป้ายกำกับ 0 เหมือนกัน