Pandas & NumPy Academy · บทเรียน

การสร้าง DataFrames

สร้าง DataFrames จากพจนานุกรมของรายการ รายการของพจนานุกรม และอาร์เรย์ NumPy จากนั้นตรวจสอบ shape, columns และ dtypes

บทเรียน 1 จาก 413 ขั้นตอน

การสร้าง DataFrames เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

DataFrame คืออะไร

DataFrame คือโครงสร้างข้อมูลแบบสองมิติที่ปรับขนาดได้และมีป้ายกำกับ หรือกล่าวง่าย ๆ คือ ตารางที่ประกอบด้วยแถวและคอลัมน์ คล้ายสเปรดชีตหรือตาราง SQL แต่ละคอลัมน์คือ Pandas Series ที่ใช้ดัชนีแถวร่วมกัน DataFrames สามารถเก็บคอลัมน์ที่มี dtypes ต่างกันได้ จึงเหมาะอย่างยิ่งกับชุดข้อมูลจริงที่มีทั้งตัวเลข ข้อความ และวันที่ปะปนกัน

import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol'],
                   'age': [30, 25, 35],
                   'score': [88.5, 72.0, 95.3]})
print(df)

สร้างจากพจนานุกรมของรายการ

วิธีสร้าง DataFrame ที่ใช้กันมากที่สุดคือสร้างจาก พจนานุกรมของรายการ โดยคีย์จะกลายเป็นชื่อคอลัมน์ และรายการจะกลายเป็นค่าของคอลัมน์ รายการทั้งหมดต้องมีความยาวเท่ากัน ดัชนีแถวจะเริ่มต้นเป็น 0, 1, 2, ... เว้นแต่คุณจะระบุด้วย index= รูปแบบนี้สอดคล้องกับวิธีที่มักใช้แทนข้อมูล CSV ใน Python

import pandas as pd

df = pd.DataFrame({
    'city': ['Berlin', 'Paris', 'Rome'],
    'pop': [3.6, 2.2, 2.8],
    'country': ['DE', 'FR', 'IT']
})
print(df.shape)    # (3, 3)
print(df.dtypes)

สร้างจากรายการของพจนานุกรม

คุณยังสามารถส่ง รายการของพจนานุกรม ได้ โดยพจนานุกรมแต่ละรายการแทนหนึ่งแถว หากพจนานุกรมใดไม่มีคีย์บางรายการ คอลัมน์นั้นจะมีค่า NaN รูปแบบนี้พบได้บ่อยเมื่อรับข้อมูลจาก API แบบ JSON ที่ส่งคืนรายการของออบเจกต์ระเบียน Pandas จะจัดคีย์ทั้งหมดในพจนานุกรมให้สอดคล้องกันโดยอัตโนมัติ เพื่อสร้างชุดคอลัมน์

import pandas as pd

rows = [
    {'name': 'Alice', 'age': 30, 'dept': 'Eng'},
    {'name': 'Bob',   'age': 25},              # 'dept' missing -> NaN
    {'name': 'Carol', 'age': 35, 'dept': 'HR'}
]
df = pd.DataFrame(rows)
print(df)

สร้างจากอาร์เรย์ NumPy

การส่งอาร์เรย์ NumPy แบบ 2 มิติจะสร้าง DataFrame ที่มีชื่อคอลัมน์เป็นจำนวนเต็ม (0, 1, 2, ...) และมี RangeIndex เป็นค่าเริ่มต้น ให้ระบุ columns= และ index= เพื่อเพิ่มป้ายกำกับที่สื่อความหมาย วิธีนี้เป็นสะพานเชื่อมระหว่างการคำนวณเชิงตัวเลขด้วย NumPy กับการวิเคราะห์ข้อมูลที่มีป้ายกำกับด้วย Pandas

import pandas as pd
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
df = pd.DataFrame(arr,
                  columns=['x', 'y', 'z'],
                  index=['r1', 'r2', 'r3'])
print(df)

กำหนดดัชนีแบบกำหนดเองขณะสร้าง

พารามิเตอร์ index= ใช้กำหนดป้ายกำกับแถวในขณะที่สร้างข้อมูล ตัวเลือกที่ใช้กันทั่วไป ได้แก่ สตริงวันที่ รหัสระบุ หรือชื่อหมวดหมู่ ซึ่งช่วยให้การค้นหาแถวมีความหมาย ดัชนีที่เลือกใช้อย่างเหมาะสมทำให้การเข้าถึงด้วย .loc เข้าใจได้ง่าย และเปิดให้ใช้การดำเนินการกับอนุกรมเวลาได้อย่างมีประสิทธิภาพเมื่อดัชนีเป็น DatetimeIndex

import pandas as pd

df = pd.DataFrame(
    {'revenue': [100, 200, 150], 'costs': [80, 160, 90]},
    index=['Jan', 'Feb', 'Mar']
)
print(df)
print(df.loc['Feb'])  # select row 'Feb'

ตรวจสอบคอลัมน์ dtypes และดัชนี

แอตทริบิวต์สามรายการช่วยบอกโครงสร้างของ DataFrame ได้ทันที: df.columns ให้ Index ของชื่อคอลัมน์ df.dtypes คืนค่า Series ที่จับคู่แต่ละคอลัมน์กับ dtype ของคอลัมน์นั้น และ df.index อธิบายป้ายกำกับแถว สิ่งเหล่านี้คือการตรวจสอบแรก ๆ ที่ควรทำกับ DataFrame ใหม่ เพื่อทำความเข้าใจว่ามีข้อมูลอะไรอยู่ก่อนเริ่มแปลงข้อมูล

import pandas as pd

df = pd.DataFrame({'a': [1, 2], 'b': [3.0, 4.0], 'c': ['x', 'y']})
print(df.columns)  # Index(['a', 'b', 'c'], dtype='object')
print(df.dtypes)
# a      int64
# b    float64
# c     object
print(df.index)    # RangeIndex(start=0, stop=2, step=1)

ระบุลำดับคอลัมน์

เมื่อสร้างจากพจนานุกรม ลำดับคอลัมน์จะเป็นไปตามลำดับการแทรกคีย์ในพจนานุกรม (Python 3.7 ขึ้นไป) หากต้องการลำดับเฉพาะ ให้ส่งพารามิเตอร์ columns= พร้อมรายการชื่อคอลัมน์ ชื่อใดที่ไม่มีอยู่ในข้อมูลจะสร้างคอลัมน์ที่มีค่า NaN ส่วนชื่อใดที่มีอยู่ในข้อมูลแต่ไม่อยู่ในรายการจะถูกตัดออก วิธีนี้ช่วยให้คุณเลือกและจัดลำดับคอลัมน์ได้ตั้งแต่ตอนสร้าง

import pandas as pd

data = {'c': [3, 6], 'a': [1, 4], 'b': [2, 5]}
df = pd.DataFrame(data, columns=['a', 'b', 'c'])
print(df.columns.tolist())  # ['a', 'b', 'c']

สร้างจากพจนานุกรมของ Series

การส่งพจนานุกรมของ Pandas Series จะจัดแนวข้อมูลตามสหภาพของดัชนีทั้งหมด หาก Series ใดไม่มีป้ายกำกับที่มีอยู่ในอีก Series เซลล์ผลลัพธ์ตรงนั้นจะมีค่า NaN วิธีนี้คำนึงถึงดัชนีมากที่สุด และใช้เมื่อรวมคอลัมน์ที่คำนวณแยกกัน ซึ่งอาจมีจำนวนแถวหรือป้ายกำกับต่างกัน

import pandas as pd

s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([10, 20], index=['b', 'c'])
df = pd.DataFrame({'col1': s1, 'col2': s2})
print(df)
#    col1  col2
# a   1.0   NaN
# b   2.0  10.0
# c   3.0  20.0

shape, len และ size

df.shape คืนค่าทูเพิล (nrows, ncols) len(df) คืนค่าจำนวนแถว และ df.size คืนค่าจำนวนเซลล์ทั้งหมด (แถว × คอลัมน์) สิ่งเหล่านี้เป็นการตรวจสอบความถูกต้องอย่างรวดเร็วหลังโหลดข้อมูล เพื่อยืนยันว่าได้รับจำนวนระเบียนตามที่คาดไว้และไม่มีคอลัมน์ใดถูกตัดออกโดยไม่แจ้งให้ทราบ

import pandas as pd

df = pd.DataFrame({'a': range(5), 'b': range(5), 'c': range(5)})
print(df.shape)  # (5, 3)
print(len(df))   # 5
print(df.size)   # 15  (5 rows x 3 cols)

สร้าง DataFrame ว่าง

คุณสามารถสร้าง DataFrame ว่างพร้อมชื่อคอลัมน์และ dtypes ที่กำหนดไว้ เพื่อใช้เป็นแม่แบบหรือตัวสะสมข้อมูลได้ เพิ่มแถวด้วย pd.concat([df, new_row])m การระบุ dtypes ตั้งแต่ตอนสร้างช่วยหลีกเลี่ยงการอนุมานชนิดข้อมูลที่ใช้เวลามากเมื่อเพิ่มแถวภายหลัง DataFrame ว่างยังมีประโยชน์สำหรับใช้เป็นจุดเริ่มต้นในลูปรวบรวมข้อมูลแบบวนซ้ำ

import pandas as pd

df = pd.DataFrame(columns=['name', 'score'])
new_row = pd.DataFrame([{'name': 'Alice', 'score': 90}])
df = pd.concat([df, new_row], ignore_index=True)
print(df)

คัดลอก DataFrame

การกำหนด DataFrame ให้กับตัวแปรใหม่จะสร้าง การอ้างอิง ไม่ใช่สำเนา ดังนั้นการแก้ไขตัวหนึ่งจะทำให้อีกตัวถูกแก้ไขด้วย ใช้ df.copy() เพื่อสร้างสำเนาที่เป็นอิสระ วิธีนี้สำคัญก่อนทำการแปลงข้อมูลที่ไม่ต้องการให้มีผลกับต้นฉบับ หรือเมื่อต้องการเก็บข้อมูลสำรองก่อนทำความสะอาดไว้ขณะสร้างข้อมูลฉบับที่ทำความสะอาดแล้ว

import pandas as pd

original = pd.DataFrame({'a': [1, 2, 3]})
ref = original          # same object!
copy = original.copy()  # independent copy

ref['a'] = 99
print(original['a'].tolist())  # [99 99 99] -- ref modified original
print(copy['a'].tolist())      # [1, 2, 3]  -- copy unchanged

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจเกี่ยวกับการสร้าง DataFrame จากบทเรียนนี้

ทบทวนบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า DataFrames สร้างได้จากพจนานุกรมของรายการ รายการของพจนานุกรม หรืออาร์เรย์ NumPy แอตทริบิวต์ columns, dtypes และ index อธิบายโครงสร้างของตาราง และ ต้องใช้ df.copy() หากต้องการสำเนาที่เป็นอิสระแทนการอ้างอิง บทถัดไปเราจะเลือกคอลัมน์และแถวที่ต้องการโดยใช้สัญกรณ์วงเล็บ .loc และ .iloc

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การสร้าง DataFrames” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้าง DataFrames” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้าง DataFrames”

สร้าง DataFrames จากพจนานุกรมของรายการ รายการของพจนานุกรม และอาร์เรย์ NumPy จากนั้นตรวจสอบ shape, columns และ dtypes คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้าง DataFrames” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม

ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้าง DataFrames
  2. การเลือกคอลัมน์และแถว
  3. การเพิ่มและลบคอลัมน์
  4. การตรวจสอบ DataFrame เบื้องต้น
← กลับไปที่ Pandas & NumPy Academy