DataFrame คืออะไร

อยากเริ่มวิเคราะห์ข้อมูลอย่างมืออาชีพต้องเริ่มยังไง?

⭐ Step แรกต้องรู้จักกับ DataFrame กันก่อน

บทความนี้แอดมาเขียนอธิบายพื้นฐานของ dataframe การเขียนโค้ดสร้าง df และการอ่านไฟล์ประเภทต่างๆเป็น dataframe ด้วยภาษา R แถม pandas ด้วยท้ายบทความ 555+

Table of Contents

What is DataFrame

DataFrame คือตารางข้อมูล (table-like) แบบสองมิติคือมี columns, rows

  • Columns คือ variables หรือตัวแปร
  • Rows คือ unit of observation หรือ data points ที่เราเก็บมาวิเคราะห์

จริงๆ dataframe มันคือตารางข้อมูลที่เปิดด้วยโปรแกรม Excel แค่เวลาเราโหลดตารางพวกนี้เข้าไปใน R, Python มันจะกลายเป็น class พิเศษว่า data.frame <R> หรือ DataFrame <pandas Python>

ตัวอย่าง DataFrame ในภาษา R
Example mtcars dataframe in R

Operations พื้นฐานที่เราใช้จัดการกับ dataframe เช่น การเลือกคอลัมน์ สร้างคอลัมน์ใหม่ ฟิลเตอร์ records ที่ต้องการ เรียงข้อมูล สรุปผลข้อมูล และการ join/ merge มากกว่าหนึ่ง dataframes เข้าด้วยกัน

🌵 Skill ในการจัดการ dataframe เรียกว่า Data Transformation/ Data Wrangling เป็นทักษะสำคัญของ Data Analyst ใครเล่นกับ dataframe ได้เก่งเท่าไหร่ ก็ทำงานเสร็จได้ไวขึ้นเท่านั้น

ข้อดีของภาษา R คือเปิดโปรแกรมขึ้นมาก็ทำงานกับ dataframe ได้เลย ไม่จำเป็นต้องติดตั้ง package อะไรเพิ่มเติม ต่างประเทศเรียก R ว่า “Fast data crunching” R บอกพี่ไม่ได้มาเล่นๆนะครับ ยั๊ง 555+

Create A DataFrame

บทความนี้แอดมาแนะนำวิธีการสร้างและอ่านข้อมูลจากไฟล์ csv excel sql เป็น dataframe ใน R

  • สร้าง dataframe จาก vector
  • สร้าง dataframe จาก list
  • อ่านข้อมูล .csv บน website/ url
  • อ่านข้อมูลจากไฟล์ excel
  • อ่านข้อมูลจากฐานข้อมูล SQL database

Create dataframe from vector

วิธีที่ง่ายที่สุดในการสร้าง dataframe คือการเรียกใช้ฟังก์ชัน data.frame() และโยน vectors ที่เราเตรียมไว้ใส่ไปในฟังก์ชันก็เสร็จเลย โดย vectors ต้องมีขนาดเท่ากันทั้งหมด

🌵 R programmers ส่วนใหญ่นิยมประกาศตัวแปรชื่อว่า df ไว้เรียก dataframe สั้นๆ

# [1] create a dataframe from vector

id <- 1:5
customer_names <- c("Lisa", "Jisoo", "Jenny", "Rose", "Hana")
customer_ages <- c(24, 25, 24, 26, 28)
customer_country <- c("Thailand", "Korea", "Korea", "Korea", "China")

df <- data.frame(id, customer_names, customer_ages, customer_country)
View(df)

ลำดับของ vector ที่ใส่ไปในฟังก์ชัน data.frame() จะสอดคล้องกับตำแหน่งคอลัมน์ใน df ที่เราสร้างขึ้นมา

Rstudio example
Create dataframe in R

Create datafrom from list

วิธีที่สองคือการสร้าง list ของ vectors ไว้ก่อน แล้วค่อยส่ง list เข้าไปใส่ฟังก์ชัน data.frame() ได้ผลลัพธ์เหมือนกับวิธีแรกเลย

# [2] create a dataframe from list
list_data <- list(id, customer_names, customer_ages, customer_country)

df <- data.frame(list_data)
View(df)

Load csv data from internet

ถ้าเรามีข้อมูล csv file ที่อยู่ในเว็บไซต์ และต้องการโหลดเข้าสู่ R แค่ copy url มาใส่ฟังก์ชัน read.csv() กดรัน เสร็จเลย ง่ายจนงง 555+ อันนี้แอดเก็บ csv อยู่บน GitHub (Gist) ไว้แชร์โค้ดใส่บทความสะดวกมาก

id customer_names customer_ages customer_country
1 Lisa 24 Thailand
2 Jisoo 25 Korea
3 Jenny 24 Korea
4 Rose 26 Korea
5 Hana 28 China
# [3] load csv data from web
url <- "https://gist.githubusercontent.com/toyeiei/77576fc3b016ea073cb4a2b331cb9584/raw/13f65efcbf230e595fd46f17c791a2d090eb57b1/r_example_dataframe.csv"

df <- read.csv(url)
View(df)

Load data from Excel

สำหรับการอ่านข้อมูลจากไฟล์ Excel ต้องติดตั้ง package readxl เสร็จแล้วเรียกใช้ฟังก์ชัน read_excel() ใส่ sheet index หรือ sheet name ที่เราต้องการ

# install.packages("readxl")
library(readxl)

# read data from first and second sheets
sheet1 <- read_excel("data.xlsx", sheet=1)
sheet2 <- read_excel("data.xlsx", sheet=2)

Load data from SQL database

อันนี้เป็น a-must-know-skill สำหรับ data analyst ที่ต้องทำงานกับฐานข้อมูล

ตัวอย่างนี้แอดใช้ package RSQLite เพื่อต่อไปที่ SQLite .db file ถ้าเราทำงานกับ databases อื่นๆ สามารถดาวน์โหลด packages ที่ต้องการใช้มาเพิ่ม เช่น DBI, RMySQL, RPostgres, bigrquery เป็นต้น

ใน R เราแบ่งเป็น 3 ขั้นตอนง่ายๆในการทำงานกับ database

  • สร้าง connection ไปที่ database
  • เขียน SQL query ดึงข้อมูลมาเก็บเป็น dataframe
  • ปิด connection
# install.packages("RSQLite")
library(RSQLite)

# create connection
conn <- dbConnect(SQLite(), "company.db")

# get data from tables
emp <- dbGetQuery(conn, "select * from employee")

# disconnect from database
dbDisconnect(conn)

Summarize DataFrame

มาลองดู functions พื้นฐานใน base R ที่ใช้ทำงานกับ dataframe ตัวอย่างนี้แอดใช้ built-in dataframe ชื่อว่า mtcars (เรียกใช้งานได้เลย ไม่ต้องติดตั้งอะไรเพิ่ม)

How to wrangle a dataframe?

ตัวอย่าง code ในวีดีโอนี้ แค่เรารู้จัก functions เยอะขึ้น ก็จะสามารถทำงานกับ dataframe ได้หลายอย่างมากขึ้น ส่วนตัวแอดใช้ R ไม่ต่างกับ Google Sheets หรือ Excel เลย (R เป็นภาษาที่เน้นการใช้งาน functions)

# built in dataframe
df <- mtcars

# basic R functions that work with dataframe
head(df)
tail(df)
str(df)
summary(df)
  • head() preview 6 แถวบนสุด
  • tail() preview 6 แถวล่างสุด
  • str() ดูข้อมูล structure ของ dataframe
  • summary() ใช้สรุปผลสถิติของ dataframe นั้นๆ

🌵 ถ้าใครอยากใช้งาน dataframe เก่งๆ สามารถปรับหน้าตา ทำ data transformation แบบมืออาชีพ ใน R ต้องฝึกใช้ package dplyr ให้คล่อง ส่วน Python ต้องเรียน pandas เพิ่มเติมนะครับ

Leave a Reply