การสร้าง Series
สร้าง Series ของ Pandas จากรายการ Python พจนานุกรม และอาร์เรย์ NumPy แล้วตรวจสอบแอตทริบิวต์ index และ values
การสร้าง Series เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
Pandas Series คืออะไร
Pandas Series คืออาร์เรย์แบบมีป้ายกำกับหนึ่งมิติที่เก็บข้อมูลได้ทุกชนิด ทั้งจำนวนเต็ม จำนวนทศนิยม สตริง วัตถุ Python หรือแม้แต่ Series อื่น ลองนึกภาพว่าเป็นอาร์เรย์ NumPy ที่มี index แบบกำหนดเอง ซึ่งเป็นป้ายกำกับของสมาชิกแต่ละตัว index นี่เองที่ทำให้ Series มีประสิทธิภาพมากกว่าอาร์เรย์ทั่วไปสำหรับงานวิเคราะห์ข้อมูลที่ค่าต่าง ๆ ต้องมีชื่อสื่อความหมาย
import pandas as pd
import numpy as np
s = pd.Series([10, 20, 30, 40])
print(s)
# 0 10
# 1 20
# 2 30
# 3 40
# dtype: int64การสร้าง Series จากรายการ Python
การส่งรายการ Python ให้กับ pd.Series() จะสร้าง Series ที่มี RangeIndex จำนวนเต็มเริ่มต้น (0, 1, 2, ...) คุณสามารถกำหนดป้ายกำกับ index เองผ่านพารามิเตอร์ index= ความยาวของรายการ index ต้องเท่ากับความยาวของข้อมูล ป้ายกำกับอาจเป็นสตริง จำนวนเต็ม วันที่ หรือวัตถุ Python ใด ๆ ที่ใช้เป็นคีย์ได้
import pandas as pd
temps = pd.Series([22.5, 19.0, 25.3, 17.8],
index=['Mon', 'Tue', 'Wed', 'Thu'])
print(temps)
# Mon 22.5
# Tue 19.0
# Wed 25.3
# Thu 17.8
# dtype: float64การสร้าง Series จากพจนานุกรม
สามารถส่งพจนานุกรม Python ให้กับ pd.Series() ได้โดยตรง คีย์ของพจนานุกรมจะกลายเป็นป้ายกำกับ index และ ค่าจะกลายเป็นข้อมูล วิธีนี้เป็นหนึ่งในวิธีที่เป็นธรรมชาติที่สุดในการสร้าง Series เมื่อข้อมูลมีป้ายกำกับที่สื่อความหมายอยู่แล้ว Series ที่ได้จะเรียงตามลำดับการเพิ่มคีย์ในพจนานุกรม (Python 3.7 ขึ้นไป)
import pandas as pd
stock = {'AAPL': 182.5, 'GOOG': 141.3, 'MSFT': 378.9}
s = pd.Series(stock)
print(s)
# AAPL 182.5
# GOOG 141.3
# MSFT 378.9
# dtype: float64การสร้าง Series จากอาร์เรย์ NumPy
สามารถส่ง ndarray ของ NumPy เป็นอาร์กิวเมนต์ข้อมูลได้ dtype ของ Series จะตรงกับ dtype ของ ndarray ข้อมูลเบื้องหลังถูกจัดเก็บเป็นอาร์เรย์ NumPy ดังนั้น ufunc ของ NumPy ทั้งหมดจึงทำงานกับ Series ได้โดยตรง ทำให้ย้ายโค้ด NumPy ที่มีอยู่ไปใช้กับ Pandas ได้ง่ายโดยไม่ต้องเขียนตรรกะการเตรียมข้อมูลใหม่
import pandas as pd
import numpy as np
arr = np.linspace(0, 1, 5)
s = pd.Series(arr, index=['a', 'b', 'c', 'd', 'e'])
print(s)
# a 0.00
# b 0.25
# c 0.50
# d 0.75
# e 1.00แอตทริบิวต์ .index และ .values
s.index จะคืนออบเจ็กต์ Index ที่มีป้ายกำกับอยู่ s.values จะคืนอาร์เรย์ NumPy เบื้องหลังซึ่งเก็บค่าข้อมูล ทั้งสองอย่างจำเป็นต่อการทำงานร่วมกับระบบอื่น คุณสามารถส่ง s.values ให้ฟังก์ชัน NumPy ใด ๆ และแปลงผลลัพธ์กลับเป็น Series พร้อม index เดิมได้ s.dtype ให้ชนิดข้อมูลของค่าเหล่านั้น
import pandas as pd
s = pd.Series([3, 1, 4], index=['x', 'y', 'z'])
print(s.index) # Index(['x', 'y', 'z'], dtype='object')
print(s.values) # [3 1 4]
print(s.dtype) # int64ชื่อ Series และชื่อ Index
Series สามารถมีแอตทริบิวต์ .name เพื่ออธิบายว่าค่าต่าง ๆ แทนสิ่งใด และ index ก็สามารถมีแอตทริบิวต์ .name เพื่ออธิบายว่าป้ายกำกับแทนสิ่งใด ชื่อเหล่านี้จะแสดงใน DataFrames เมื่อกำหนด Series ให้กับคอลัมน์ และจะแสดงในป้ายกำกับกราฟ กำหนดชื่อด้วย s.name = 'price' หรือกำหนดขณะสร้างด้วย name=
import pandas as pd
s = pd.Series([1.2, 3.4, 5.6],
index=['a', 'b', 'c'],
name='measurement')
s.index.name = 'label'
print(s)
# label
# a 1.2
# b 3.4
# c 5.6
# Name: measurement, dtype: float64การสร้าง Scalar Series
การส่งค่าสเกลาร์ค่าเดียวให้กับ pd.Series() พร้อม index ที่ระบุไว้อย่างชัดเจน จะสร้าง Series ที่สมาชิกทุกตัวมีค่าเท่ากับค่าสเกลาร์นั้น วิธีนี้คล้ายกับ np.full() ของ NumPy และมีประโยชน์สำหรับสร้าง Series ค่าคงที่เพื่อใช้ลบออกจากหรือเปรียบเทียบกับ Series ที่มีข้อมูลจริง
import pandas as pd
s = pd.Series(5, index=['a', 'b', 'c', 'd'])
print(s)
# a 5
# b 5
# c 5
# d 5
# dtype: int64การจัดแนว Index อัตโนมัติ
หนึ่งในความสามารถที่ทรงพลังที่สุดของ Pandas Series คือ การจัดแนว index อัตโนมัติ เมื่อคุณบวก Series สองตัว Pandas จะจัดแนวทั้งสองตามป้ายกำกับก่อนคำนวณผลลัพธ์ หากมีป้ายกำกับอยู่ใน Series หนึ่งแต่ไม่มีในอีก Series ผลลัพธ์ที่ป้ายกำกับนั้นจะเป็น NaN วิธีนี้ช่วยป้องกันข้อผิดพลาดคลาดเคลื่อนทีละตำแหน่งที่เกิดขึ้นโดยไม่รู้ตัวในการดำเนินการกับอาร์เรย์ NumPy
import pandas as pd
a = pd.Series([1, 2], index=['x', 'y'])
b = pd.Series([10, 20], index=['y', 'z'])
print(a + b)
# x NaN
# y 12.0
# z NaNการตรวจสอบความยาวและรูปทรงของ Series
len(s) จะคืนจำนวนสมาชิก s.shape จะคืนทูเพิล (n,) ซึ่งสอดคล้องกับรูปแบบของ NumPy s.size มีค่าเดียวกับ len(s) ใช้การตรวจสอบเหล่านี้ในช่วงเริ่มต้นของกระบวนการทำงานเพื่อยืนยันว่าการโหลดข้อมูลได้จำนวนแถวตามที่คาดไว้ ก่อนดำเนินการวิเคราะห์ต่อ
import pandas as pd
s = pd.Series(range(10))
print(len(s)) # 10
print(s.shape) # (10,)
print(s.size) # 10
print(s.ndim) # 1การแปลง Series เป็นชนิดอื่น
คุณสามารถแปลง Series กลับเป็นรายการ Python ด้วย s.tolist() แปลงเป็นอาร์เรย์ NumPy ด้วย s.to_numpy() หรือ s.values และแปลงเป็นพจนานุกรมด้วย s.to_dict() การแปลงเหล่านี้มีประโยชน์เมื่อต้องทำงานร่วมกับไลบรารีที่ไม่รองรับออบเจ็กต์ Pandas และเมื่อต้องจัดลำดับผลลัพธ์เป็น JSON หรือ CSV
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.tolist()) # [10, 20, 30]
print(s.to_numpy()) # [10 20 30]
print(s.to_dict()) # {'a': 10, 'b': 20, 'c': 30}Series เทียบกับคอลัมน์ DataFrame
คอลัมน์เดียวของ DataFrame คือ Series เมื่อคุณเข้าถึง df['col'] Pandas จะคืนค่า Series ที่มี index เดียวกับ DataFrame ในทางกลับกัน Series ที่มี name สามารถแทรกลงใน DataFrame เป็นคอลัมน์ได้โดยตรง การเข้าใจความสัมพันธ์นี้ช่วยให้คุณสลับไปมาระหว่างการดำเนินการกับ Series และ DataFrame ได้อย่างคล่องตัว
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
col = df['a'] # Series
print(type(col)) # <class 'pandas.core.series.Series'>
print(col.values) # [1 2 3]ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการสร้าง Pandas Series จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า Series คืออาร์เรย์ 1 มิติที่มีป้ายกำกับและสร้างบน ndarray ของ NumPy สามารถสร้างได้จากรายการ พจนานุกรม อาร์เรย์ NumPy หรือค่าสเกลาร์ และ การจัดแนว index จะจัดการการคำนวณระหว่าง Series สองตัวโดยอิงป้ายกำกับให้อัตโนมัติ บทถัดไป เราจะเรียนรู้การเข้าถึงสมาชิกของ Series ด้วยป้ายกำกับผ่าน .loc และด้วยตำแหน่งผ่าน .iloc
คำถามที่พบบ่อย
บทเรียน “การสร้าง Series” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้าง Series” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้าง Series”
สร้าง Series ของ Pandas จากรายการ Python พจนานุกรม และอาร์เรย์ NumPy แล้วตรวจสอบแอตทริบิวต์ index และ values คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้าง Series” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง Series
- การเข้าถึงตามป้ายกำกับและตามตำแหน่ง
- การดำเนินการแบบเวกเตอร์บน Series
- เมธอด Series ที่มีประโยชน์