0Pricing
Python Academy · บทเรียน

การผสาน การเชื่อม และการทำความสะอาดข้อมูล

รวม DataFrames และจัดการค่าที่หายไปอย่างเป็นมืออาชีพ

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

pd.merge

pd.merge(left, right, on="key") เชื่อม DataFrames สองชุดด้วยคอลัมน์ร่วม ซึ่งคล้ายกับ SQL JOIN

import pandas as pd

users = pd.DataFrame({"id":[1,2,3],"name":["A","B","C"]})
orders = pd.DataFrame({"user_id":[1,1,2],"amount":[100,50,200]})
result = pd.merge(users, orders, left_on="id", right_on="user_id")
print(result)

ประเภทการเชื่อม

ระบุ how="inner" (ค่าเริ่มต้น), "left", "right" หรือ "outer" เพื่อควบคุมว่าจะเก็บแถวใดไว้

import pandas as pd

A = pd.DataFrame({"key":["a","b","c"],"val":[1,2,3]})
B = pd.DataFrame({"key":["b","c","d"],"x":[10,20,30]})

print(pd.merge(A, B, on="key", how="left"))   # all of A
print(pd.merge(A, B, on="key", how="outer"))  # all rows

df.join

df.join(other) เชื่อมข้อมูลด้วยดัชนี เร็วและเรียบง่ายกว่าเมื่อเชื่อมด้วยดัชนีแทนคอลัมน์

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]}, index=["x","y"])
df2 = pd.DataFrame({"b":[3,4]}, index=["x","y"])
print(df1.join(df2))
# x: a=1 b=3
# y: a=2 b=4

concat

pd.concat([df1, df2]) นำ DataFrames มาต่อกันในแนวตั้ง (axis=0) หรือแนวนอน (axis=1)

import pandas as pd

df1 = pd.DataFrame({"a":[1,2]})
df2 = pd.DataFrame({"a":[3,4]})
print(pd.concat([df1,df2], ignore_index=True))
# a: 1 2 3 4

# Horizontal:
df3 = pd.DataFrame({"b":[5,6]})
print(pd.concat([df1,df3], axis=1))

การจัดการค่าที่หายไป

ตรวจหาค่า NaN ด้วย isna()/notna() เติมค่าด้วย fillna() และนำออกด้วย dropna()

import pandas as pd, numpy as np

df = pd.DataFrame({"a":[1,np.nan,3],"b":[np.nan,2,3]})
print(df.isna().sum())      # count nulls per column
df["a"] = df["a"].fillna(0)
df = df.dropna()            # drop rows with any null

กลยุทธ์ fillna

เติมค่าที่หายไปด้วยค่าคงที่ เติมค่าจากแถวก่อนหน้า (ffill) เติมค่าจากแถวถัดไป (bfill) หรือใช้ค่าเฉลี่ยของคอลัมน์

import pandas as pd, numpy as np

df = pd.DataFrame({"val":[1, np.nan, np.nan, 4]})
print(df["val"].ffill())   # forward fill: 1 1 1 4
print(df["val"].bfill())   # back fill:    1 4 4 4
print(df["val"].fillna(df["val"].mean()))   # fill with mean

การเปลี่ยนชนิดข้อมูล

ใช้ astype() เพื่อแปลงชนิดข้อมูลของคอลัมน์ ใช้ pd.to_datetime() เพื่อแปลงวันที่ และใช้ pd.to_numeric พร้อม errors="coerce" เพื่อแปลงเป็นตัวเลขอย่างปลอดภัย

import pandas as pd

df = pd.DataFrame({"age":["25","30","35"],"date":["2024-01-01","2024-06-15","2024-12-31"]})
df["age"] = df["age"].astype(int)
df["date"] = pd.to_datetime(df["date"])
print(df.dtypes)

การทำความสะอาดสตริง

ตัวเข้าถึง .str ของ Pandas มีการดำเนินการกับสตริงแบบเวกเตอร์ ได้แก่ strip(), lower(), replace(), extract()

import pandas as pd

df = pd.DataFrame({"name":["  Alice  "," bob","CAROL"]})
df["clean"] = df["name"].str.strip().str.title()
print(df["clean"])   # Alice / Bob / Carol

การเปลี่ยนชื่อและจัดลำดับคอลัมน์

เปลี่ยนชื่อด้วย df.rename(columns={"old":"new"}) จัดลำดับใหม่โดยใช้ดัชนีด้วยรายการ

import pandas as pd

df = pd.DataFrame({"a":[1],"b":[2],"c":[3]})
df = df.rename(columns={"a":"alpha","b":"beta"})
df = df[["c","beta","alpha"]]   # reorder
print(df.columns.tolist())      # ['c', 'beta', 'alpha']

การตรวจหาค่าซ้ำ

ค้นหาค่าซ้ำด้วย duplicated() และนำออกด้วย drop_duplicates()

import pandas as pd

df = pd.DataFrame({"id":[1,2,1,3],"val":["a","b","a","c"]})
print(df.duplicated())           # [F F T F]
print(df[df.duplicated()])       # show duplicates
clean = df.drop_duplicates(subset=["id"])

apply สำหรับการแปลงแถว/คอลัมน์

df.apply(func, axis=1) ใช้ฟังก์ชันกับแต่ละแถว ส่วน axis=0 ใช้กับแต่ละคอลัมน์

import pandas as pd

df = pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})
# New column = row sum:
df["total"] = df.apply(lambda row: row["a"] + row["b"], axis=1)
print(df)

ตรวจสอบด่วน

df.fillna(method="ffill") ทำอะไร

ทบทวน

ใช้ pd.merge สำหรับการเชื่อมแบบ SQL และใช้ pd.concat สำหรับการนำข้อมูลมาต่อกัน จัดการ NaN ด้วย isna(), fillna() และ dropna() ทำความสะอาดสตริงด้วยตัวเข้าถึง .str แปลงชนิดข้อมูลด้วย astype() และ pd.to_datetime()

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

บทเรียน “การผสาน การเชื่อม และการทำความสะอาดข้อมูล” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การผสาน การเชื่อม และการทำความสะอาดข้อมูล”

รวม DataFrames และจัดการค่าที่หายไปอย่างเป็นมืออาชีพ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

บทเรียน “การผสาน การเชื่อม และการทำความสะอาดข้อมูล” ใช้เวลานานแค่ไหน

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

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

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

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

  1. พื้นฐาน Series และ DataFrame
  2. การใช้ดัชนี การกรอง และมาสก์บูลีน
  3. GroupBy การรวมข้อมูล และตารางไพวอต
  4. การผสาน การเชื่อม และการทำความสะอาดข้อมูล
← กลับไปที่ Python Academy