Skip to content
Home » [NEW] Cheatsheet วิธีใช้ และเทคนิคใน Pandas (Python) ฉบับสมบูรณ์ | การใช้a – NATAVIGUIDES

[NEW] Cheatsheet วิธีใช้ และเทคนิคใน Pandas (Python) ฉบับสมบูรณ์ | การใช้a – NATAVIGUIDES

การใช้a: นี่คือโพสต์ที่เกี่ยวข้องกับหัวข้อนี้

Pandas ถือเป็นเครื่องมือหลักในการทำ Data Wrangling บน Python และสามารถนำไปใช้ประโยชน์คู่กับ Package อื่น เช่น เอาไปเตรียมข้อมูลก่อนทำ Model ใน SKLearn ได้ด้วย

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

และเนื่องจากหน้านี้เป็น Cheatsheet รวมเทคนิคเยอะแยะมากมาย ถ้าไล่อ่านกันอาจจะหายาก ผมเลยเตรียมสารบัญมาให้ด้านล่างนี้ครับ

Table of Contents

Pandas คืออะไร?

Pandas เป็น Library ใน Python ที่ทำให้เราเล่นกับข้อมูลได้ง่ายขึ้น เหมาะมากสำหรับทำ Data Cleaning / Wrangling ครับผม

วิธีการใช้งาน Pandas คือ โหลดไฟล์ข้อมูล เช่น CSV เข้าไป แล้วเราจะได้ข้อมูลในรูปแบบตาราง (DataFrame) ที่แบ่งข้อมูลตามแถวและคอลัมน์ หรือเหมือน Excel ที่เราใช้กันนั่นเอง

Cheatsheet วิธีใช้ และเทคนิคใน Pandas (Python) ฉบับสมบูรณ์ 1ตัวอย่าง DataFrame ของ Pandas เป็นตารางเหมือน Excel เลยครับ

ป.ล. Pandas ไม่เกี่ยวกับหมีแพนด้านะฮะ จริง ๆ แล้วมาจากคำว่า PANel DAta ซึ่งหมายถึงข้อมูลที่มีหลายมิตินั่นเอง

เทคนิคการใช้ Pandas

อย่างที่แอดมินเคยเล่า ว่าการทำ Data Wrangling เป็นงานที่ค่อนข้างถึกครับ วันนี้เลยรวบรวมโค้ดต่าง ๆ ในการใช้ Pandas มาให้ ซึ่งน่าจะครอบคลุมการใช้งานประมาณ 80 – 90% แล้วครับผม

โค้ดบางส่วนมาจากคลาส Data Wrangling ที่แอดมินเรียน และจากเว็บไซต์ MyCheatSheet ครับ

วิธีเช็ค Version Pandas

โค้ดนี้เหมือนไม่สำคัญ แต่จริง ๆ แล้วสำคัญมากเวลาเราอ่าน Documentation ครับ เพราะถ้าเกิดมีอะไรพัง เราจะเทียบได้ว่า Pandas ของเราเป็นเวอร์ชั่นตามใน Documentation มั้ย

print ("Pandas version",pandas.__version__)

วิธีการโหลดไฟล์ CSV (Import)

จุดเริ่มต้นของการทำ Data Exploration & Analysis ใน Pandas ก็คือการโหลดไฟล์ข้อมูลแบบ CSV มาใช้งานนั่นเองครับ

เราสามารถใช้คำสั่ง .head หรือ .tail เพื่อดูข้อมูลแถวบนสุด หรือแถวล่างสุดได้

# Read DF
csvdf = pd.read_csv('data.csv')
# Sometimes reading CSV for Excel need encoding
csvdf = pd.read_csv('data.csv',encoding = "ISO-8859-1")
# Print head and tail
csvdf.head()
csvdf.tail()

วิธีเช็คจำนวนแถว และจำนวนคอลัมน์

ใน Pandas มีฟังชั่นสำหรับนับจำนวนแถว และจำนวนคอลัมน์แบบง่าย ๆ โดยใช้

csvdf.shape

วิธีสุ่มข้อมูลสำหรับเช็ค (Sample)

ปกติเราเช็คข้อมูลว่าถูกต้องมั้ยด้วย head กับ tail ซึ่งเป็นการเช็คจากด้านบนหรือด้านล่าง อีกวิธีที่น่าสนใจ คือ เช็คแบบสุ่มข้อมูลขึ้นมานั่นเองครับ ทำได้ง่าย ๆ โดยใช้

csvdf.sample()

วิธีเช็คข้อมูลหาความผิดปกติใน DataFrame เบื้องต้น

หลังจากโหลดข้อมูลมาแล้ว เราอยากรู้ว่าข้อมูลมีกี่แถว,  Missing value เท่าไหร่, แต่ละคอลัมน์เป็น Data Type อะไรบ้าง ก็รันคำสั่งนี้ได้เลย มีประโยชน์มากครับ

df.info()

นอกจากนั้นยังมีคำสั่ง df.dtypes (ไม่มีวงเล็บ) สำหรับดู Data Type แต่ละคอลัมน์อย่างเดียว

วิธีแปลงประเภทข้อมูล (Data Type) ใน Data Frame

บางครั้งประเภทข้อมูลของคอลัมน์เป็น String แต่เราต้องการ Integer หรือเราต้องการ Date เราสามารถแปลงข้อมูลได้ง่าย ๆ ดังนี้เลยครับ

df['hour'] = pd.to_numeric(df['hour']) # แปลงเป็น Numeric
df['hour'] = df['hour'].astype('int') # อีกวิธีในการแปลงค่า สามารถใช้วิธีนี้แปลงเป็น float ได้

วิธีเช็ค Summary ของแต่ละคอลัมน์ (count, min, max, mean)

ถ้าเราอยากรู้ Distribution คร่าว ๆ ของแต่ละคอลัมน์ว่าเป็นอย่างไร สามารถใช้คำสั่ง describe() ได้

df.describe()

วิธีเช็ค Summary (count, min, max, mean) แบบแยกกลุ่ม

บางครั้งเราไม่ได้ต้องการรู้ Summary ของทั้งคอลัมน์ แต่อยากให้แยกตามแต่ละค่าในคอลัมน์นั้น ๆ ครับ ซึ่งมีประโยชน์มากเวลาเราทำ Data Analysis แล้วอยากรู้ว่าบางกลุ่มมีอะไรผิดปกติหรือเปล่า

test = df.groupby(['Gender'])
test.describe()

วิธีสร้าง DataFrame ใหม่

วิธีสร้างแบบง่ายที่สุด ถ้าต้องการข้อมูลหลายรูปแบบ เราสามารถใช้ Dictionary แบบนี้เลยครับ

dataframe = pandas.DataFrame({
    'C1': pandas.date_range('20170101', periods=4),
    'C2' : [10,20,30,40],
    'C3': pandas.Categorical(['A','B','C','D']),
    'C4': 1})

แต่ถ้าเราต้องการแค่เป็นแบบตัวเลขทั่วไป ใช้ Numpy แบบนี้ได้เลย

array = numpy.array([(1,2,3), (4,5,6),(7,8,9)])
dataframe = pandas.DataFrame(array,columns=['C1','C2','C3'])

วิธีเลือกหลายคอลัมน์จาก DataFrame

ปกติถ้าเราต้องการเลือกแค่ 1 Column ก็เขียนแบบนี้ได้เลย

df['C1']

แต่ถ้าต้องการเลือกหลายคอลัมน์ ให้ทำแบบนี้

df[['C1','C2']]

วิธีเลือกคอลัมน์ตามเงื่อนไขที่ต้องการ

บางทีเราอยาก Filter เฉพาะคอลัมน์ที่มีค่าตามที่เราต้องการโดยใช้ .loc ได้ โดยสามารถเลือก Filter แบบ .all() (ทุกค่าในคอลัมน์ต้องตรงตามเงื่อนไข) หรือ .any() (บางค่าในคอลัมน์ต้องตรงตามเงื่อนไข)

dataframe2 = dataframe.loc[:,(dataframe>50).any()]
dataframe3 = dataframe.loc[:,(dataframe>50).all()]

เราสามารถใช้หาคอลัมน์ที่มี Missing Values หรือหาคอลัมน์ที่ไม่มี Missing Values เลยก็ได้

dataframe2 = dataframe.loc[:,dataframe.isnull().any()]
dataframe3 = dataframe.loc[:,dataframe.notnull().all()]

วิธีเลือกแถวตามเงื่อนไขที่ต้องการ

dataframe[dataframe['C1']>50] # เงื่อนไขแบบง่าย ๆ
dataframe2 = dataframe.loc[dataframe.C1.isin([1,2,3])] # เงื่อนไขแบบซับซ้อน

ถ้ามีหลายเงื่อนไขเราสามารถใช้ & (and) หรือ | (or) ได้

dataframe[(dataframe['C1']>50) & ((dataframe['C2']<25) | (dataframe['C2']>75))]

หรือใช้ Query เป็นเงื่อนไขได้ด้วย มีประโยชน์มากเวลาเรามีเงื่อนไขแปลก ๆ ไม่ต้องเขียนลูปขึ้นมาเองเลยครับ

dataframe2 = dataframe.query('C1 > C2')

วิธีเพิ่มคอลัมน์ใหม่

สามารถเพิ่มคอลัมน์ใหม่ได้ 2 แบบ คือ

  1. เพิ่มโดยอิงจากคอลัมน์เดิม (เช่น เอาคอลัมน์เดิม + 10 หรือ เอาคอลัมน์ A – คอลัมน์ B มีประโยชน์มากตอนทำ Feature Engineering)
  2. เพิ่มคอลัมน์โดยตั้งค่า Fix ไปเลยสำหรับทุกแถว ส่วนใหญ่จะใช้วิธีนี้เวลาเราอยากได้ค่าอะไรแปลก ๆ ที่ต้องเขียนลูปเพื่อใส่ค่า ก็สร้างคอลัมน์แบบ Fix ค่าก่อน แล้วต่อด้วยลูป
df['new'] = dataframe['old'] + 10 # use old values
df['new2'] = 5 # apply the same value

การสลับ Row <-> Column (Transpose)

ถ้าเราต้องการ Transpose (อารมณ์เหมือน Vector) เราสามารถใช้คำสั่งนี้ได้เลย

dataframe.T

การต่อ DataFrame

การต่อ Data Frame คือการเอา Data Set 2 ชุดมาต่อกันในแถวตั้งหรือแนวนอน สำหรับการต่อแบบปะติดไปเลย

มี 2 คำสั่งที่เหมือนกัน คือ concat กับ append แต่ให้ใช้ concat ไปเลย เพราะ append เป็นคำสั่งที่ไม่ Memory Efficient

pd.concat([df1,df2], axis=1) # รวมกัน 2 คอลัมน์ (axis = 0 คือแถว, axis = 1 คือคอลัมน์)
pd.concat([df1,df2,df3)] # รวมมากกว่า 2 คอลัมน์ก็ได้
pd.concat(…, ignore_index=True) # รวมเสร็จแล้ว reset index ให้ด้วย ควรใช้ ไม่งั้นจะเจอ row ID ซ้ำกันตอนรวมร่าง
pd.concat(…, join='inner') # รวมร่างเฉพาะคอลัมน์ที่ df1 กับ df2 มีทั้งคู่
pd.concat(…, keys=['source1', 'source2']) # เพิ่มคอลัมน์เข้าไปด้วยเพื่อระบุว่า Row แต่ละอันมาจาก Data Frame อันไหน
pd.concat(…, join_axes=[df2.index]) # เลือกรวมร่างเฉพาะ row index ที่เรากำหนดได้

การต่อ DataFrame แบบ Join

ถ้าต้องการต่อ DataFrame แบบ Advance หน่อย เราก็สามารถ Join DataFrame ได้เหมือน Join Table ใครเขียน SQL มาก่อนน่าจะถนัดเลย

pd.merge(df1, df2, left_on="col1", right_on="col2", how="inner")

เราสามารถเปลี่ยนตรง how=”inner” เป็น “outer”, “left”, “right” เพื่อเปลี่ยนเป็น Outer Join, Left Join, Right Join ได้อีกด้วย

การหาค่า Mean, Sum, Max (Aggregate) แบบทั้ง DataFrame

Pandas สามารถสั่ง Aggregate เพื่อหาค่า Mean, Sum, และ Max ได้เลย เหมาะมากเวลาเราต้องการรวบข้อมูลก่อนเอาไป Visualize หรือต้องการทำ Feature Engineering ก็ได้

newdf = df.agg(['sum', 'max','mean'])

การ Aggregate แบบตามกลุ่มที่ต้องการ

บางทีเราอยาก Aggregate ข้อมูลตามการจัดกลุ่มในคอลัมน์อื่น เช่น เราอยากได้รายจ่ายทั้งหมดของแต่ละคน (ต้อง aggregate sum ของคอลัมน์รายจ่าย โดยแบ่งกลุ่มตามคอลัมน์ User ID) ใช้แบบนี้

aggregate = dataframe.groupby('C1').sum()

การรัน Function เดียวกันทุกแถว หรือทุกคอลัมน์

เวลาเราอยากรันคำสั่งอะไรสักอย่างสำหรับทุกแถว หรือทุกคอลัมน์ เราสามารถเขียนได้แบบนี้

# sum for columns
sum_columns = dataframe[['C1','C2']].apply(sum,axis=0)
# sum for rows
sum_rows = dataframe[['C1','C2']].apply(sum,axis=1)

เหมือนกับฟังก์ชั่น apply() ใน R นั่นเอง

รันคำสั่งที่เขียนเองกับทุกแถวใน 1 คอลัมน์

ถ้าต้องการรันคำสั่ง (Function) ที่เขียนเอง สำหรับทุกแถวในคอลัมน์อันใดอันหนึ่ง ใช้แบบนี้ได้

dataframe['C1'] = dataframe['C1'].map(lambda x: x-100)

รันคำสั่งที่เขียนเองกับทุกค่า

ถ้าต้องการรันคำสั่งที่เขียนเองกับทุกค่าใน DataFrame ใช้โค้ดนี้

function_result = dataframe.applymap(lambda x: x*10)

หรือใช้ transform ก็ได้

new_dataframe = dataframe.transform(lambda x: x*100)

คำนวณ Correlation & Covariance

เวลาเราอยากรู้ว่าค่าต่าง ๆ ใน Data Set เรา Correlate กันมั้ย

dataframe.corr() # Correlation
dataframe.cov() # Covariance

แต่ค่าที่ออกมาเป็นตัวเลขอาจจะดูยากนิดนึง เราสามารถพลอตสวย ๆ ด้วย Seaborn ได้ครับ สามารถใช้โค้ดด้านล่างนี้ได้เลย

import seaborn as sns

corr = modeldf.corr()

# Set up the matplotlib figure
f, ax = plt.subplots(figsize=(15, 8))

# Generate a custom diverging colormap
cmap = sns.diverging_palette(10, 10, as_cmap=True)

# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap(corr, annot=True)

Cheatsheet วิธีใช้ และเทคนิคใน Pandas (Python) ฉบับสมบูรณ์ 3Correlation Plot สวย ๆ ด้วย Seaborn

คำนวณ Cross Tabulation

Cross Tabulation มีประโยชน์มากเวลาเราอยากรู้ว่ามี Data ที่ตรงกับกรุ๊ป A ของคอลัมน์ 1 และกรุ๊ป B ของคอลัมน์ 2 เท่าไหร่ เช่น มีนักเรียนผู้ชาย (คอลัมน์ gender) กี่คนในมัธยมปลาย (คอลัมน์ education) แบบนี้เป็นต้น

หรือถ้าใครใช้ PivotTable ใน Excel มาก่อน ก็เหมือนกันเลยครับ

aggregate = pandas.crosstab(dataframe.C1, dataframe.C2)

วิธีหาค่า Unique ในแต่ละคอลัมน์

คำสั่งนี้มีประโยชน์มาก เอาไว้ใช้เช็คว่าแต่ละคอลัมน์มีค่าแปลก ๆ มั้ย

ตัวอย่างการใช้งานก็คือ เราอยากรู้ว่า มีบ้านไหนที่มีจำนวนห้องนอนแปลก ๆ มั้ย (เช่น 50 ห้องนอน หรือ -5 ห้องนอน) ก็หาค่า unique จากคอลัมน์ “bedrooms”

dataframe['C1'].unique()

วิธีเช็คว่ามีแถวไหนข้อมูลซ้ำมั้ย (Duplicated)

อันนี้มีประโยชน์มาก เอาไว้ใช้เช็คว่ามีข้อมูลแปลก ๆ มั้ย เช่น ทุกคอลัมน์ซ้ำกันหมด (อันนี้มีโอกาสว่าเป็นข้อมูลซ้ำ อาจจะต้องลบออก) หรือซ้ำกันบางคอลัมน์ (อันนี้ต้องเช็คอีกทีว่าคืออะไร)

dataframe.duplicated() # หาอันที่เหมือนกันทุกคอลัมน์
dataframe.duplicated('C1') # หาอันที่ซ้ำกันเฉพาะคอลัมน์ C1
dataframe.duplicated(['C1', 'C2']) # หาอันที่ซ้ำกันเฉพาะคอลัมน์ C1 และ C2

ปกติแล้วถ้ามีไอเทมซ้ำ คำสั่งนี้จะไม่แสดงไอเทมแรกในกลุ่มที่ซ้ำ (เช่น ถ้า C1=5 มี 2 แถว มันจะแสดงเฉพาะแถวที่ 2) เราสามารถใส่ Argument keep=False เข้าไปเพื่อบังคับให้มันแสดงทุกแถวได้

นอกจากนั้นเรายังสามารถนับจำนวนแถวที่ Duplicate และลบทิ้งได้ด้วย

วิธีการนับจำนวน Duplicate

len(df[ df.duplicated(['A', 'B', 'C'], keep = False) ])

วิธีการลบ Duplicate

เอาไว้ใช้ตอนเราเจอว่าทุกคอลัมน์ซ้ำกันหมดเลย ซึ่งเป็นเคสที่บอกว่าข้อมูลน่าจะซ้ำ ลบออกได้ (ขึ้นอยู่กับข้อมูลด้วยนะครับ บางข้อมูลอาจจะไม่ได้แปลว่าซ้ำแล้วลบได้):

# Remove the duplicates
df.drop_duplicates(['A', 'B', 'C'], inplace=True)

# Reset dataframe index after drop_duplicates.
df.reset_index(drop=True, inplace=True)

len(df)

สำหรับโค้ดข้างบน จะเห็นว่าเราต้อง reset index หลังลบ duplicate ด้วยนะครับ

วิธีการลบแถว และลบคอลัมน์

ลบคอลัมน์สามารถทำได้แบบนี้

dataframe = dataframe.drop('C1', axis=1)
df.drop(['C1'], axis=1, inplace=True) # แบบนี้ก็ได้
df.drop(['C1', 'C2', 'C3'], 1, inplace=True) # ลบทีละหลายคอลัมน์ก็ได้

ส่วนการลบแถวจะลำบากหน่อย เพราะต้องใส่ Row Index (เลขที่อยู่ซ้ายสุดเวลาเราปรินท์ DataFrame)

dataframe = dataframe.drop(5, axis=0)
dataframe.reset_index(drop=True) # Reset index

ลบแถวแล้วอย่าลืมเช็คด้วยว่าที่ลบไปถูกต้องมั้ย และหลังจากลบแถวต้อง Reset Index ด้วย

วิธีการลบแถวที่มี Missing Value

ข้อควรระวัง: การที่อยู่ ๆ เราลบแถวที่มี Missing Value ทิ้งไปเลยอาจจะไม่ใช่วิธีที่ดีที่สุดในการทำ Data Analysis เสมอไปนะครับ บางเคสการ Impute (คำนวณหาค่าไปใส่) จะดีกว่าครับ

dataframe2 = dataframe.dropna(axis=0)

วิธีแทนค่า Missing Value ด้วยค่าเฉลี่ย (Mean Imputation)

วิธีหนึ่งในการแทนค่าที่หายไป คือการทำสิ่งที่เรียกว่า Mean Imputation หรือหาค่าเฉลี่ยของคอลัมน์นั้น แล้วเอามาแทนค่าที่หายไปนั่นเองครับ

ข้อดีของการทำ Mean Imputation คือ สามารถทำได้ง่าย แต่ก็ต้องระวังเรื่องข้อเสีย เช่น ทำแบบนี้จะเป็นการไม่สนใจความสัมพันธ์ระหว่างตัวแปร ทำให้เกิด Bias สูง ควรใช้เฉพาะเวลา Missing Value ไม่เยอะเท่านั้นครับ

สามารถรันโค้ดด้านล่างเพื่อทำ Mean Imputation ได้ง่าย ๆ เลย

import numpy as np
meanAge = np.mean(df.Age) # Get mean value
df.Age = df.Age.fillna(meanAge) # Fill missing values with mean

การลูปข้อมูลแต่ละคอลัมน์ และแต่ละแถว

การลูปมีประโยชน์มากถ้าเราต้องการเขียนฟังก์ชั่นแปลก ๆ ใช้เองที่ Pandas ไม่รองรับ (หรืออาจจะรองรับแต่เราหาไม่เจอ เขียนเองง่ายกว่า) สามารถลูปได้ทั้งแต่ละคอลัมน์ และแต่ละแถว

for col_idx,data in dataframe.iteritems():
    print ("column:",col_idx)
    print ("column data:")
    print (data,"\n")

การลูปข้อมูลแต่ละแถว

for col_idx,data in dataframe.iterrows():
    print ("row:",col_idx)
    print ("row data:")
    print (data,"\n")

วิธีเปลี่ยน DataFrame จากแบบ Wide เป็น Long (Melt)

การ Melt Data มีประโยชน์มากเวลาเราต้องการเอาข้อมูลไปพลอต Data Visualization หรือเราต้องการ Aggregate ครับ

dataframe2 = dataframe.melt()

วิธีการเปลี่ยนชื่อคอลัมน์ (Rename)

บางทีเราต้องการเปลี่ยนชื่อเพื่อให้สั้นลง ให้พิมพ์สะดวกขึ้น สามารถทำได้ดังนี้

dataframe.rename(columns={'old':'new'},inplace=True)

วิธีการใส่คำนำหน้าคอลัมน์ (Prefix)

อันนี้มีประโยชน์มากตอนเรามีข้อมูลหลาย ๆ ชุด และต้องการ Merge โดยอยากให้ชื่อคอลัมน์ไม่ซ้ำกัน

thisdata = thisdata.add_prefix('data_')

วิธีการแทนค่าใน DataFrame

เหมาะมากเวลาต้องการแก้ Typo Error เช่น เราอยากได้ค่า Bangkok แต่เรารู้ว่ามีคนเขียนเป็น BKK อะไรแบบนี้ (รันคำสั่ง .unique เพื่อดูก่อน)

เราสามารถ Replace ทั้ง DataFrame ได้เลยแบบนี้

dataframe2 = dataframe.replace(1, -100)

เราสามารถ Replace หลายค่าพร้อมกันได้ด้วยครับ และสามารถกำหนด Column ที่ต้องการให้แทนค่าได้ด้วย

df['city'].replace({
        'BKK':'Bangkok',
        'BNK':'Bangkok'
    }, inplace=True)

วิธีการ Export DataFrame เป็นไฟล์ CSV

หลังจากที่เราจัดการ Data เรียบร้อยแล้ว ก็สามารถ Export เป็น CSV เอาไปใช้ต่อกับโปรแกรมอื่น หรืองานส่วนอื่น ๆ ได้ (แอดทำบ่อยเพราะบางทีต้องสลับ Python <-> R รัว ๆ)

dataframe.to_csv('dataframe.csv')

สรุปการใช้งาน Pandas

จากเทคนิคต่าง ๆ ด้านบน จะเห็นว่า Pandas มีฟังก์ชั่นให้เราทำงานได้ง่ายขึ้นมาก ๆ ครับ หวังว่าบทความนี้จะมีประโยชน์กับท่านที่กำลังหัดใช้งาน Pandas กันอยู่นะครับ 🙂

[Update] หลักการใช้ article (a, an, the) และตัวอย่างประโยค | การใช้a – NATAVIGUIDES

เรื่อง article ในภาษาอังกฤษเป็นอีกหนึ่งเรื่องที่สร้างความสับสนให้กับหลายๆคนเป็นอย่างมาก ที่เป็นเช่นนี้ก็เพราะการใช้ article นั้นมีกฏหลายข้อ อีกทั้งยังมีข้อยกเว้นในบางกรณีอีกด้วย

สำหรับใครที่ยังไม่ค่อยเข้าใจเรื่อง article ในบทความนี้ ชิววี่ก็ได้เรียบเรียงเนื้อหาที่เกี่ยวข้อง ทั้งความหมาย หลักการใช้ ข้อยกเว้น และรายละเอียดอื่นๆที่จำเป็น มาให้ทุกคนได้เรียนรู้กันแบบง่ายๆ ถ้าเพื่อนๆพร้อมแล้ว เราไปดูกันเลย

Article คืออะไร

Article คือคำที่ใช้บอกถึงความชี้เฉพาะหรือไม่ชี้เฉพาะของคำนาม มีอยู่ด้วยกัน 3 ตัว คือ a, an, the

Article ที่ชี้เฉพาะ (definite article) ก็คือ the ใช้กับสิ่งที่ถูกระบุชี้ชัดว่าเป็นคนไหนหรือสิ่งไหน

The woman with pink shoes is very pretty.
ผู้หญิงคนที่ใส่รองเท้าสีชมพูนั้นสวยมาก
(คำว่า woman ในที่นี้ เราระบุชี้ชัดว่าเป็นคนที่ใส่รองเท้าสีชมพู เราจึงใช้ the)

Article ที่ไม่ชี้เฉพาะ (indefinite article) ก็คือ a และ an ใช้เมื่อเรากล่าวถึงสิ่งใดโดยทั่วไป ไม่ได้ระบุชี้ชัดว่าเป็นคนไหนหรือสิ่งไหน

A woman can be anything she wants to be.
ผู้หญิงสามารถเป็นได้ในสิ่งที่เธออยากเป็น
(คำว่า woman ในที่นี้ เราไม่ได้ระบุชี้ชัดว่าเป็นคนไหน เราจึงใช้ a)

หลักการใช้ article

นอกเหนือจากประเด็นในด้านคำนามชี้เฉพาะและไม่ชี้เฉพาะแล้ว คำว่า a, an, the ยังมีเงื่อนไขการใช้อย่างอื่นอีก

หลักการใช้ a และ an

เราจะใช้ a และ an เมื่อคำนามนั้นตรงกับเงื่อนไขทั้งหมดนี้

  • เป็นคำนามไม่ชี้เฉพาะ
  • เป็นคำนามเอกพจน์ (มีจำนวนหนึ่งหน่วย)
  • เป็นคำนามนับได้

ความต่างของ a และ an

เราจะใช้ a เมื่อคำตามหลังไม่ได้ขึ้นต้นหรืออ่านออกเสียงเหมือนขึ้นต้นด้วย a, e, i, o, u มิเช่นนั้น เราจะต้องใช้ an แทน

ยกตัวอย่างเช่น เราจะใช้ a banana (banana ขึ้นต้นด้วย b ไม่ใช่ a, e, i, o, u) แต่จะใช้ an apple (apple ขึ้นต้นด้วย a) แต่คำบางคำอย่างเช่นคำว่า hour เราจะใช้ an hour เพราะเป็นคำพิเศษที่ออกเสียงเหมือนขึ้นต้นด้วย a, e, i, o, u

ถ้ามีคำคุณศัพท์ (adjective) เข้ามาขยายคำนาม อย่างเช่น red apple ซึ่งแปลว่าแอปเปิลแดง การเลือกใช้ a หรือ an เราจะยึดคำที่อยู่ตามหลังติดกับ a/an เป็นหลัก ซึ่งในที่นี้เราจะใช้ a red apple เพราะคำว่า red ไม่ได้ขึ้นต้นด้วย a, e, i, o, u

เป็นคำนามไม่ชี้เฉพาะ

คำนามที่ใช้ a และ an ได้ จะต้องเป็นคำนามที่ไม่ชี้เฉพาะ คือเป็นการกล่าวถึงสิ่งใดๆโดยทั่วไป ไม่ได้ระบุชี้ชัดว่าเป็นอันไหน

He is a teacher.
เขาเป็นครู
(คำว่า teacher ในที่นี้ เป็นการกล่าวถึงอาชีพครูโดยทั่วไป ไม่ได้ระบุชี้ชัดว่าเป็นครูคนไหน)

He is an engineer.
เขาเป็นวิศวกร
(คำว่า engineer ในที่นี้ เป็นการกล่าวถึงอาชีพวิศวกรโดยทั่วไป ไม่ได้ระบุชี้ชัดว่าเป็นวิศวกรคนไหน)

เป็นคำนามเอกพจน์

คำว่า a และ an นอกจากจะเป็นตัวบอกถึงความไม่ชี้เฉพาะแล้ว ยังทำหน้าที่บอกปริมาณของคำนามอีกด้วย โดยจะมีความหมายว่า “หนึ่งหน่วย” เช่น

A cat – แมวหนึ่งตัว
A person – คนหนึ่งคน
An apple – แอปเปิลหนึ่งลูก

I have a pen.
ฉันมีปากกาหนึ่งด้าม

I bought an orange.
ฉันซื้อส้มมาหนึ่งลูก

เราไม่สามารถใช้ a และ an กับคำนามที่เป็นพหูพจน์ได้ อย่างเช่น เราจะไม่ใช้ a carrots

เป็นคำนามนับได้

เราสามารถใช้ a และ an โดยตรงได้กับคำนามนับได้เท่านั้น ถ้าเป็นคำนามนับไม่ได้ เราจะต้องใช้หน่วยเฉพาะเข้ามากำกับโดยใช้โครงสร้าง “a/an + หน่วยเฉพาะ + of + คำนามนับไม่ได้” อย่างเช่น

A glass of water – น้ำหนึ่งแก้ว
A bag of flour – แป้งหนึ่งถุง
An inch of hair – ผมหนึ่งนิ้ว

หลักการใช้ the

เราจะใช้ the เมื่อคำนามนั้นตรงกับเงื่อนไขทั้งหมดนี้

  • เป็นคำนามชี้เฉพาะ
  • เป็นคำนามเอกพจน์ (มีจำนวนหนึ่งหน่วย) หรือพหูพจน์ (มีจำนวนตั้งแต่ 2 หน่วยขึ้นไป)
  • เป็นคำนามนับได้หรือนับไม่ได้

เป็นคำนามชี้เฉพาะ

เราจะใช้ the กับคำนามที่ชี้เฉพาะ ซึ่งก็คือสิ่งที่เราระบุชี้ชัดว่าเป็นอันไหน

The sun rises in the east.
พระอาทิตย์ขึ้นทางทิศตะวันออก
(ทั้งพระอาทิตย์และทิศตะวันออกเป็นสิ่งที่มีเพียงหนึ่งเดียว เรารู้กันอยู่แล้วว่าหมายถึงอันไหน)

Where did you park the car?
คุณจอดรถไว้ที่ไหน
(คำว่า car ในที่นี้ ทั้งผู้พูดและผู้ฟังรู้ว่าหมายถึงคันไหน)

เป็นคำนามเอกพจน์หรือพหูพจน์

เราสามารถใช้ the กับคำนามที่เป็นเอกพจน์หรือพหูพจน์ก็ได้ คำว่า the ไม่ได้เป็นตัวบอกปริมาณ

เป็นคำนามนับได้หรือนับไม่ได้

เราสามารถใช้ the ได้ทั้งกับคำนามนับได้และนับไม่ได้

ข้อยกเว้น

เรามักจะใช้ the กับคำนามบางชนิด แม้ไม่ได้เป็นคำนามที่ชี้เฉพาะ อย่างเช่น สิ่งที่เป็นส่วนหนึ่งของชีวิตประจำวัน สิ่งประดิษฐ์ เครื่องดนตรี

I use the internet every day.
ฉันใช้อินเตอร์เน็ตทุกวัน
(ใช้ the แม้จะเป็นการกล่าวถึงอินเตอร์เน็ตโดยทั่วไป)

The computer has changed the world in many different ways.
คอมพิวเตอร์ได้เปลี่ยนแปลงโลกในหลายๆทาง
(ใช้ the แม้จะเป็นการกล่าวถึงคอมพิวเตอร์โดยทั่วไป)

The violin is probably the world’s most popular instrument.
ไวโอลินอาจเป็นเครื่องดนตรีที่เป็นที่นิยมมากที่สุดในโลก
(ใช้ the แม้จะเป็นการกล่าวถึงไวโอลินโดยทั่วไป)

Determiners คำอื่น

Determiners คือคำนำหน้าคำนาม ทำหน้าที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับคำนาม เช่น บอกปริมาณ บอกความเป็นเจ้าของ ตัวอย่าง determiners ก็อย่างเช่น a, an, the, this, that, some, any, much, many, my, your, his, her, ตัวเลข (one, two, three, …)

เราจะเห็นได้ว่า คำว่า a, an, the ก็ถือเป็น determiners เช่นกัน ทั้งนี้ เราจะไม่ใช้ a, an, the เมื่อมีการใช้ determiners คำอื่น อย่างเช่น

This dog is cute.
หมาตัวนี้น่ารัก
(เราจะไม่ใช้ The this dog is cute.)

My umbrella is black.
ร่มของฉันสีดำ
(เราจะไม่ใช้ My the umbrella is black.)

เป็นยังไงบ้างครับกับการใช้ article a, an, the ในภาษาอังกฤษ ทีนี้เพื่อนๆก็คงจะเข้าใจและสามารถนำไปใช้ได้ถูกต้องมากขึ้นแล้วนะครับ

อย่าลืมนะครับ ภาษาอังกฤษยิ่งเรียนรู้ ยิ่งฝึก ก็ยิ่งเก่ง สำหรับบทความนี้ ชิววี่ต้องขอตัวลาไปก่อน See you next time


วิธีการใช้ Rapid Antigen Test Kit (ชุดตรวจเชื้อโควิด-19 แบบเร่งด่วน) | Thairath Online


ชุดตรวจโควิด19 เบื้องต้น Rapid Antigen Test Kit คืออะไร มีวิธีการใช้แบบไหน และมีวิธีการปฎิบัติตัวอย่างไรหลังทราบผลเชื้อ ติดตามได้ใน Infographic ชิ้นนี้ วิดีโอนี้จะอธิบายการตรวจเชื้อโควิด19 แบบเร่งด่วน ด้วยวิธีการกวาดโพรงจมูก โดยจะรู้ผลได้ภายในเวลาประมาณ 1030 นาที
\”ปฏิบัติการไทยรัฐ ฝ่าวิกฤติโควิด19\” ขอเป็นส่วนหนึ่งที่พาคนไทยฝ่าวิกฤตินี้ไปด้วยกัน ตั้งเป้าจัดหาชุดตรวจเชื้อโควิด19 เบื้องต้น ให้ได้มากที่สุด เพื่อกระจายชุดตรวจนี้ให้ไปถึงมือประชาชนโดยเร็ว เพราะเราเชื่อว่า ยิ่งตรวจเชื้อได้มากและเร็วเท่าไร ยิ่งลดการเสี่ยงแพร่กระจายของเชื้อได้มากขึ้นเท่านั้น
ไทยรัฐกรุ๊ปขอเชิญชวนประชาชนที่มีกำลังทรัพย์ร่วมฝ่าวิกฤตินี้ไปด้วยกัน คุณสามารถเป็นส่วนหนึ่งในการร่วมสนับสนุนเงินผ่านโครงการนี้ เงินทั้งหมดที่ได้จะนำไปจัดซื้อชุดตรวจโควิด19 (Rapid Antigen Test Kit) เพื่อแจกจ่ายผ่านหน่วยงานและสถานพยาบาลโดยเร็วที่สุด
ผู้สนใจสามารถร่วมสนับสนุนมาได้ที่
บัญชีเงินฝาก: ธนาคารกรุงเทพ จำกัด (มหาชน) สาขาถนนวิภาวดีรังสิต
บัญชีกระแสรายวัน
เลขที่: 1963066566
ชื่อบัญชี : ไทยรัฐร่วมฝ่าวิกฤติโควิด19
ชุดตรวจโควิด
วิธีการใช้ชุดตรวจโควิด
วิธีใช้RapidTest
ไทยรัฐฝ่าวิกฤติโควิดตรวจหาเชื้อ
ข่าวโควิดล่าสุด
กดติดตาม \u0026 กดกระดิ่ง : http://bit.ly/Subscribe_Thairath
ติดตามข่าวสำคัญไปกับเรา
Website : https://www.thairath.co.th
Website : https://www.thairath.co.th/tv
Facebook : https://www.facebook.com/thairath
Facebook : https://www.facebook.com/thairathtv
Twitter : https://twitter.com/Thairath_News
Twitter : https://twitter.com/Thairath_TV
Instagram : https://www.instagram.com/thairath
Instagram : https://www.instagram.com/thairathtv
Line : http://line.me/ti/p/@Thairath
Youtube : https://www.youtube.com/thairathonline
ติดต่อโฆษณา ออนไลน์
โทร. 021271111 ต่อ 2144

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

วิธีการใช้ Rapid Antigen Test Kit  (ชุดตรวจเชื้อโควิด-19 แบบเร่งด่วน) | Thairath Online

การใช้ A,An


การใช้ A,An

เรื่อง A An The ที่เข้าใจกันแบบผิดๆ กระจ่างได้ใน 10 นาที!!!


เคยเรียน A An The กันมาตั้งแต่สมัยประถม
แต่หารู้ไม่..ที่เรียนกันมาทั้งหมด หลักการนั่นมันใช้ไม่ได้ 100%!!!
วันนี้ครูพี่แอน จะมาปลดล็อคข้อสงสัยให้กับทุกคน
เปลี่ยนความเข้าใจ A An The ที่เคยร่ำเรียนมากันตั้งแต่สมัยเด็ก
ด้วยหลักสูตรการสอนแบบ Speed Up โดย ครูพี่แอน
ที่จะทำให้นักเรียนเข้าใจ A An The แบบกระจ่างใน 10 นาที!!!
ติดตามครูพี่แอนได้ที่ช่องทาง
Perfect English : https://www.facebook.com/englishforfu…
IG : https://www.instagram.com/krupann.eng…
twitter : https://twitter.com/englishbykruann
Tiktok : https://www.tiktok.com/@krupann.english
ครูพี่แอน KruPAnn ภาษาอังกฤษ OnlineEnglish คอร์สเรียนออนไลน์ เรียนภาษาอังกฤษออนไลน์

เรื่อง A An The ที่เข้าใจกันแบบผิดๆ กระจ่างได้ใน 10 นาที!!!

a an ใช้ยังไง? เริ่มต้นเรียนภาษาอังกฤษ ต้องรู้เรื่องนี้


a an ใช้ยังไง? เริ่มต้นเรียนภาษาอังกฤษ ต้องรู้เรื่องนี้
ใครยังใช้ผิดต้องฝึกไว้ และใข้ให้ถูกนะเธ๊อ‼️
ดูเป็นเรื่องง่ายที่ใครๆ ก็ทำได้ แต่!! หลายคนใช้กันผิดบ่อยมาก
ถ้าจำธรรมดามันยังลืม มาจำแบบเพลงสิจำได้ชัวร์!✅
‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍
ทั้งสนุก ทั้งจำได้ ทั้งเข้าใจหาไม่ได้จากคอร์สไหนแล้วนอกจากคอร์สครูดิว!
‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍
สอนสนุกทุกบท เปลี่ยทุกเรื่องยากให้ง๊ายง่ายย✨ ถ้าได้ลองเรียนกับครูดิวแล้ว จากคนที่เกลียดภาษาอังกฤษจะกลับมารักแน่นอน!!✅✅
.
💌 สนใจสมัครคอร์ส 💬
📍 สอบถามรายละเอียดได้ทาง m.me/krudewenglishofficial
📍 ทดลองเรียนฟรี : www.opendurian.com/toeic_krudew
📍 Add Line : @krudewtoeic (มี @ด้านหน้าด้วยน้า)
📍 IG \u0026 TikTok : @krudewtoeic
‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍ ‍‍‍‍‍‍ ‍‍ ‍‍‍‍
aanthe article krudew toeic krudewtoeic ครูดิว โทอิค krudewenglish

a an ใช้ยังไง? เริ่มต้นเรียนภาษาอังกฤษ ต้องรู้เรื่องนี้

The กับ A ใช้ต่างกันอย่างไร


สอบถามเรื่องคอร์ส Line: Aj.Adam, Info.Hollywood, KhunBaiTuey
โทร 02 612 9300, 081 353 7810, 089 422 4546
สนใน sponsor คลิปอาจารย์อดัมติดต่ออีเมล [email protected] หรือโทร 02 612 9300
เรียนกับอดัม: http://www.facebook.com/hollywoodlearning
เรียนออนไลน์กับอดัม: http://www.ajarnadam.tv
FBของอดัม: http://www.facebook.com/AjarnAdamBradshaw
Twitter: http://twitter.com/AjarnAdam
FBของซู่ชิง: http://www.facebook.com/jitsupachin
YouTube ของซู่ชิง: http://www.youtube.com/user/jitsupachin
Twitter ซูชิง: http://twitter.com/Sue_Ching

The กับ A ใช้ต่างกันอย่างไร

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูวิธีอื่นๆMAKE MONEY ONLINE

ขอบคุณมากสำหรับการดูหัวข้อโพสต์ การใช้a

Leave a Reply

Your email address will not be published. Required fields are marked *