เมธอด Series ที่มีประโยชน์
ใช้ describe(), value_counts(), unique() และ map() เพื่อสรุปและแปลง Series ได้อย่างรวดเร็ว
เมธอด Series ที่มีประโยชน์ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
สรุปอย่างรวดเร็วด้วย describe()
s.describe() สร้างสรุปทางสถิติด้วยการเรียกใช้เพียงครั้งเดียว ได้แก่ จำนวนข้อมูล ค่าเฉลี่ย ส่วนเบี่ยงเบนมาตรฐาน ค่าต่ำสุด เปอร์เซ็นไทล์ที่ 25 (Q1) มัธยฐาน (Q2) เปอร์เซ็นไทล์ที่ 75 (Q3) และค่าสูงสุด สำหรับ Series ที่เป็นข้อความ จะส่งคืนจำนวนข้อมูล จำนวนค่าที่ไม่ซ้ำ ค่าที่พบบ่อยที่สุด และความถี่แทน นี่เป็นวิธีที่รวดเร็วที่สุดในการทำความเข้าใจการกระจายของคอลัมน์เมื่อเริ่มสำรวจชุดข้อมูล
import pandas as pd
ages = pd.Series([25, 32, 19, 45, 28, 31, 22, 40])
print(ages.describe())
# count 8.000000
# mean 30.250000
# std 8.406...
# min 19.000000
# 25% 24.250000
# 50% 29.500000
# 75% 34.750000
# max 45.000000value_counts() สำหรับตารางความถี่
s.value_counts() ส่งคืน Series ใหม่ที่ใช้ค่าที่ไม่ซ้ำเป็นดัชนี และใช้จำนวนครั้งที่พบค่าเหล่านั้นเป็นข้อมูล โดยเรียงจากจำนวนมากไปน้อย ส่ง normalize=True เพื่อรับสัดส่วนแทนจำนวนดิบ นี่เป็นสิ่งแรกที่ควรเรียกใช้กับคอลัมน์เชิงหมวดหมู่เพื่อทำความเข้าใจการกระจายของข้อมูล
import pandas as pd
colors = pd.Series(['red', 'blue', 'red', 'green', 'blue', 'red'])
print(colors.value_counts())
# red 3
# blue 2
# green 1
print(colors.value_counts(normalize=True).round(2))
# red 0.50 blue 0.33 green 0.17unique() และ nunique()
s.unique() ส่งคืนอาร์เรย์ NumPy ของค่าที่แตกต่างกัน โดยเรียงตามลำดับที่พบครั้งแรก (ต่างจาก value_counts ที่เรียงตามความถี่) s.nunique() ส่งคืนจำนวนค่าที่แตกต่างกันเป็นจำนวนเต็ม หรือก็คือ จำนวนสมาชิกของคอลัมน์ ทั้งสองแบบจะข้าม NaN โดยค่าเริ่มต้น ใช้ nunique(dropna=False) หากต้องการนับ NaN เป็นค่าที่แตกต่างกันหนึ่งค่า
import pandas as pd
s = pd.Series(['apple', 'banana', 'apple', 'cherry', 'banana'])
print(s.unique()) # ['apple' 'banana' 'cherry']
print(s.nunique()) # 3map() สำหรับการแปลงทีละองค์ประกอบ
s.map() ใช้ฟังก์ชัน พจนานุกรม หรือ Series อื่นกับทุกองค์ประกอบ เมื่อส่งพจนานุกรมเข้าไป แต่ละค่าจะถูกแทนที่ด้วยค่าที่สอดคล้องกันในพจนานุกรม ส่วนค่าที่ไม่มีอยู่ในพจนานุกรมจะกลายเป็น NaN เมื่อส่งฟังก์ชันเข้าไป ฟังก์ชันนั้นจะถูกใช้กับแต่ละองค์ประกอบ map เหมาะอย่างยิ่งสำหรับการเข้ารหัสป้ายกำกับเชิงหมวดหมู่ใหม่ หรือใช้ตารางค้นหา
import pandas as pd
grades = pd.Series(['A', 'B', 'C', 'A', 'B'])
gpa = {'A': 4.0, 'B': 3.0, 'C': 2.0}
print(grades.map(gpa))
# 0 4.0
# 1 3.0
# 2 2.0
# 3 4.0
# 4 3.0apply() สำหรับฟังก์ชันกำหนดเอง
s.apply(func) ใช้ฟังก์ชันที่เรียกใช้งานได้ของ Python กับแต่ละองค์ประกอบ แล้วรวบรวมผลลัพธ์ ต่างจาก map() ตรงที่ออกแบบมาสำหรับฟังก์ชันที่ซับซ้อนกว่า ซึ่งอาจส่งคืนออบเจกต์ที่ไม่ใช่ค่าเดี่ยว สำหรับการแปลงทีละองค์ประกอบอย่างง่าย ควรเลือกใช้ map() หรือนิพจน์แบบเวกเตอร์ และใช้ apply() เมื่อตรรกะซับซ้อนเกินกว่าจะแปลงเป็นการดำเนินการแบบเวกเตอร์ได้โดยตรง
import pandas as pd
sentences = pd.Series(['Hello world', 'Pandas is great', 'Data science'])
word_counts = sentences.apply(lambda x: len(x.split()))
print(word_counts)
# 0 2
# 1 3
# 2 2sort_values() และ sort_index()
s.sort_values() ส่งคืน Series ที่เรียงตามค่าข้อมูลจากน้อยไปมาก (ส่ง ascending=False หากต้องการเรียงจากมากไปน้อย) ส่วน s.sort_index() จะเรียงตามป้ายกำกับดัชนี โดยค่าเริ่มต้น ทั้งสองแบบจะไม่แก้ไข Series เดิม ส่ง inplace=True เพื่อแก้ไขข้อมูลโดยตรง (แต่ไม่ค่อยแนะนำในโค้ด Pandas สมัยใหม่ที่เชื่อมการดำเนินการหลายขั้น)
import pandas as pd
s = pd.Series([30, 10, 50, 20], index=['d', 'a', 'c', 'b'])
print(s.sort_values())
# a 10
# b 20
# d 30
# c 50
print(s.sort_index())
# a 10
# b 20
# c 50
# d 30isin() สำหรับตรวจสอบการเป็นสมาชิก
s.isin(values) คืนค่า boolean Series ที่เป็น True ในตำแหน่งที่สมาชิกอยู่ในรายการหรือเซตที่ระบุ วิธีนี้อ่านเข้าใจง่ายกว่าการใช้เงื่อนไข | หลายรายการ และทำงานได้เร็วกว่าอย่างเห็นได้ชัดเมื่อใช้กับเซตขนาดใหญ่ โดยมักใช้เพื่อกรองแถวที่อยู่ในกลุ่มใดกลุ่มหนึ่งโดยเฉพาะ หรือทำเครื่องหมายระเบียนที่ตรงกับรายการสำหรับค้นหา
import pandas as pd
countries = pd.Series(['DE', 'US', 'FR', 'UK', 'US', 'DE'])
nordics = ['DE', 'FR']
print(countries.isin(nordics))
# 0 True 1 False 2 True 3 False 4 False 5 True
print(countries[countries.isin(nordics)])between() สำหรับกรองตามช่วง
s.between(left, right, inclusive='both') คืนค่า boolean Series ที่เป็น True เมื่อค่าอยู่ภายในช่วง [left, right] โดยค่าเริ่มต้นจะรวมปลายทั้งสองด้านไว้ด้วย วิธีนี้กระชับกว่าการเขียน (s >= left) & (s <= right) และสื่อเจตนาได้อย่างชัดเจน เหมาะสำหรับกรองช่วงตัวเลข เช่น กลุ่มอายุหรือช่วงราคา
import pandas as pd
scores = pd.Series([45, 72, 83, 91, 55, 68])
pass_mask = scores.between(60, 100)
print(pass_mask)
# 0 False 1 True 2 True 3 True 4 False 5 True
print(scores[pass_mask].values) # [72 83 91 68]head() และ tail() สำหรับตรวจสอบข้อมูลอย่างรวดเร็ว
s.head(n) คืนค่าองค์ประกอบ n รายการแรก (ค่าเริ่มต้นคือ 5) และ s.tail(n) คืนค่า n รายการสุดท้าย ทั้งสองเมธอดนี้ใช้เป็นประจำเมื่อสำรวจข้อมูล เพื่อดูตัวอย่างช่วงต้นและช่วงท้ายของ Series ขนาดยาวโดยไม่ต้องพิมพ์ข้อมูลหลายพันแถว เมธอดเหล่านี้คืนค่า Series ใหม่ (ส่วนย่อยของข้อมูล) จึงไม่แก้ไขข้อมูลต้นฉบับ
import pandas as pd
s = pd.Series(range(100))
print(s.head(3))
# 0 0
# 1 1
# 2 2
print(s.tail(3))
# 97 97
# 98 98
# 99 99rename() สำหรับเปลี่ยนชื่อ
s.rename('new_name') คืนค่า Series ใหม่ที่มีแอตทริบิวต์ name ต่างจากเดิม หากต้องการเปลี่ยนชื่อป้ายกำกับดัชนี ให้ส่งพจนานุกรมหรือฟังก์ชัน เช่น s.rename(index={'old': 'new'}) การเปลี่ยนชื่อมีความสำคัญก่อนรวม Series หลายรายการเป็น DataFrame เพราะค่า name ของ Series จะกลายเป็นหัวคอลัมน์ ควรใช้การเปลี่ยนชื่อแทนการกำหนดค่าดิบใหม่เสมอ
import pandas as pd
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'], name='original')
renamed = s.rename('updated').rename(index={'a': 'x', 'b': 'y', 'c': 'z'})
print(renamed)
# x 1
# y 2
# z 3
# Name: updatedidxmin() และ idxmax()
s.idxmin() คืนค่า ป้ายกำกับดัชนีของค่าต่ำสุด และ s.idxmax() คืนค่าป้ายกำกับของค่าสูงสุด วิธีนี้มีประโยชน์กว่า argmin/argmax เมื่อดัชนีมีป้ายกำกับที่สื่อความหมาย เช่น วันที่หรือชื่อผลิตภัณฑ์ เพราะคุณจะได้รับตัวระบุจริง ไม่ใช่เพียงหมายเลขตำแหน่ง
import pandas as pd
scores = pd.Series({'Alice': 88, 'Bob': 73, 'Carol': 95, 'Dan': 60})
print('Best:', scores.idxmax(), scores.max()) # Carol 95
print('Worst:', scores.idxmin(), scores.min()) # Dan 60ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับเมธอดที่มีประโยชน์ของ Series จากบทเรียนนี้
ทบทวนบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า describe() ให้สรุปข้อมูลทางสถิติได้ด้วยการเรียกใช้เพียงครั้งเดียว value_counts() สร้างตารางความถี่ของค่าที่ไม่ซ้ำกัน และ map() แปลงค่าด้วยพจนานุกรม ส่วน apply() เรียกใช้ฟังก์ชันที่กำหนดเองกับแต่ละองค์ประกอบ บทถัดไปเราจะเริ่มทำงานกับ DataFrame ซึ่งเป็นโครงสร้างหลักแบบสองมิติสำหรับการวิเคราะห์ข้อมูลด้วย Pandas
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “เมธอด Series ที่มีประโยชน์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เมธอด Series ที่มีประโยชน์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เมธอด Series ที่มีประโยชน์”
ใช้ describe(), value_counts(), unique() และ map() เพื่อสรุปและแปลง Series ได้อย่างรวดเร็ว คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “เมธอด Series ที่มีประโยชน์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง Series
- การเข้าถึงตามป้ายกำกับและตามตำแหน่ง
- การดำเนินการแบบเวกเตอร์บน Series
- เมธอด Series ที่มีประโยชน์