การเตรียมข้อมูลทางการเกษตรและปศุสัตว์เพื่อนำไปวิเคราะห์

แนะนำวิธีการเตรียมข้อมูล(Data preparation) สำหรับนำไปประยุกต์ใช้เพื่อทำ model ทางการเกษตร พร้อมวิธีใช้งานจริง

ระบบนิเวศของการเก็บข้อมูล เพื่อการนำไปใช้งาน
Share
Share
Share
Email

     การเตรียมข้อมูล(Data preparation) ทางการเกษตรและปศุสัตว์ เป็นขั้นตอนที่สำคัญและใช้เวลานานมากที่สุดในขบวนการวิเคราะห์ข้อมูลเลยก็ว่าได้ ซึ่งการเตรียมข้อมูลที่ดี ก็จะทำให้ขั้นตอนวิเคราะห์สามารถทำได้ง่าย และ สะดวกมากยิ่งขึ้น ตัวอย่างการวิเคราะห์ข้อมูลเพื่อคาดการคาดการณ์ราคาหมูหน้าฟาร์ม จากราคาสินค้าเกษตรอื่นๆ

เลือกเนื้อหาที่ต้องการอ่าน

อนาคตของเกษตรและปศุสัตว์ กับการประยุกต์ใช้ข้อมูล (Big data)

ผู้ใหญ่กำลังยืนท่ามกลาง ข้อมูลทางอินเตอร์เน็ตที่มากมาย และกำลังวิเคราะห์

     เรามีความมั่นใจว่าการผลักดันให้ภาคการเกษตร และปศุสัตว์ ให้มีการเก็บข้อมูลที่มีคุณภาพจนไปถึงนำข้อมูลไปวิเคราะห์ ก็สามารถจะทำให้สามารถวางแผนความเสี่ยง วางแผนเรื่องปริมาณการผลิต และวางแผนอื่นๆ ได้อย่างแม่นยำมากขึ้นกว่าอดีต บนหลักการที่มีข้อมูลทางสถิติรองรับ เพื่อรองรับสภาวะคาดแคลนแรงงาน และช่วยเพิ่มความสามารถด้านเศรษฐกิจของประเทศในอนาคตอันใกล้ นอกจากนี้ประโยชน์ของการนำข้อมูล big data ไปวิเคราะห์ข้อมูลก็จะช่วยให้ได้ผลที่แม่นยำมากยิ่งขึ้น เช่น วิเคราะห์วันที่จะได้ผลผลิตจำหน่าย เฉพาะสายพันธุ์ที่เราเป็นผู้ผลิตโดยเฉพาะ (ข้อมูลทั่วไปอาจจะเป็นสายพันธุ์ไม่ตรงกับเรา 100%)

ประโยชน์ของการวิเคราะห์ข้อมูลการเกษตรคืออะไร?

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

ประโยชน์ของการวิเคราะห์ข้อมูลปศุสัตว์คืออะไร?

  • คาดการณ์ราคาสินค้าปศุสัตว์ เช่น การคาดการณ์ราคาเนื้อไก่ล่วงหน้า จากปัจจัยราคาวัตถุดิบที่เพิ่มขึ้น
  • หาความสัมพันธ์สินค้าปศุสัตว์ เช่น การใช้ผลิตภัณฑ์ช่วยให้มีผลผลิตที่ดีขึ้น
  • ใช้ข้อมูลเพื่อตรวจหาความผิดปกติของผลผลิต เช่น การที่ทราบว่าผลผลิตที่ไม่ดีวันนี้ อาจจะส่งผลกระทบทำให้ได้ผลผลิตที่ช้าหรือลดลงมาก จากการคำนวณข้อมูล
  • ใช้ข้อมูลเพื่อทำนายคุณภาพของการเลี้ยงสัตว์ เช่น ให้เพื่อทำนายเวลาในขบวนการผลิตที่เป็นข้อมูลเฉพาะของฟาร์มตัวเอง

ขั้นตอนเตรียมข้อมูลสำหรับสินค้าการเกษตร

ฟาร์มเกษตรยุคใหม่
  • รวบรวมข้อมูล (Data collection): รวบรวมข้อมูลจากแหล่งข้อมูลต่างๆที่เชื่อถือได้ เช่น สำนักงานเศรษฐกิจการเกษตร หรือสามารถเชื่อมต่อ API กับข้อมูลสาธารณะของกระทรวงพาณิชย์ และข้อมูลจากกรมการค้าภายใน
  • ทำความสะอาดข้อมูล และแปลงข้อมูล (Clean and transformation): การเตรียมข้อมูลเพื่อการวิเคราะห์เป็นกระบวนการในการทำให้ข้อมูลพร้อมสำหรับการวิเคราะห์ทางสถิติ กระบวนการนี้อาจรวมถึงขั้นตอนต่างๆ เช่น การจัดกลุ่มข้อมูล การสร้างแผนภูมิ และการสร้างแบบจำลองทางสถิติ เป็นต้น ขั้นตอนนี้เป็นขั้นตอนที่ใช้เวลานานที่สุด
  • วิเคราะห์ข้อมูล (Analyse and visualization): การวิเคราะห์ข้อมูลการเกษตรเป็นกระบวนการในการประยุกต์ใช้เทคนิคทางสถิติกับข้อมูลเกี่ยวกับการผลิตทางการเกษตรเพื่อหาความสัมพันธ์และแนวโน้ม การวิเคราะห์ข้อมูลการเกษตรสามารถช่วยเกษตรกรในการตัดสินใจเกี่ยวกับการผลิตพืชและสัตว์ได้อย่างมีประสิทธิภาพ
  • โดยขั้นตอนการเตรียมข้อมูลคือขั้นตอน การทำความสะอาดข้อมูล และแปลงข้อมูลเป็นหลัก

ตัวอย่างการประยุกต์ใช้ การเตรียมข้อมูลทางปศุสัตว์

หมูออกทำงานตอนเช้า เพื่อวิเคราะห์ผลผลิตของตัวเอง

การเตรียมข้อมูลเพื่อใช้คาดการณ์ราคาหมูหน้าฟาร์ม
วัตถุประสงค์
1. เพื่อคาดการณ์ราคาหมูหน้าฟาร์ม จากราคาสินค้าเกษตรหรือปศุสัตว์อื่นๆ
2. เพื่อหาผลกระทบของราคาสินค้าอื่นๆว่าสอดคล้องกับราคาหมูแค่ไหน
3. เพื่อช่วยประเมินความเสี่ยงจากราคาสินค้าอื่นๆต่อราคาหมู
4. เพื่อช่วยประเมินความคุ้มค่าในการลงทุนของกิจการจากการประเมินราคา

มีขั้นตอนดังนี้
1.  รวบรวมข้อมูล(Data collection)
2.  ทำความสะอาดข้อมูล(Clean and transformation data)
3.  วิเคราะห์ข้อมูล(Analyzing) ส่วนนี้ขอยกไปเป็นอีกหนึ่งบทความ
4.  การแสดงผลและสรุป(Visualization and summaries) สามารถตามไปอ่านผลการคาดการณ์ราคาหมูหน้าฟาร์มในอีกบทความ

การรวบรวมข้อมูล (Data collection)

     รวมรวมข้อมูลราคาสินค้าที่สนใจจากกรมการค้าภายใน แล้วโหลดไฟล์ csv เก็บไว้ในทุกสินค้าที่สนใจ โดยเราได้เลือกราคาของ ราคาหมูหน้าฟาร์ม(finished pig), ราคาลูกหมู 16 กิโลกรัม, ราคาโครงกระดูกไก่(bone poultry), ราคาสามชั้น(pork belly), ราคาชิ้นส่วนไหล่(pork shoulder) และราคาไข่คละหน้าฟาร์ม(egg) โดยข้อมูลที่นำมาจะเป็นตั้งแต่ ปี 2017 จนถึง เดือน 6 ปี 2023

กรมการค้าภายในการค้นหา
กรมการค้าภายในผลการค้นหา
ข้อมูลจาก https://pricelist.dit.go.th/

การทำความสะอาดข้อมูล (Clean and transformation data)

สามารถทำโดยใช้หลายๆ tools ด้วยกันเช่น google sheet, excel, R, Python ขึ้นอยู่กับความถนัดของแต่ละคนเลย โดยเราจะแจกตัวอย่าง code ของ python และ R เพื่อให้ทุกคนนำไปประยุกต์ใช้ได้แบบฟรีๆ ไม่คิดเงินเลย สามารถนำ function ของเราไปใช้เพื่อนำไปวิเคราะห์ต่อได้เลย ในกรณีที่ต้องการทำสินค้าเกษตรอื่นๆที่สนใจ

Python code ทำความสะอาดข้อมูล คาดการณ์ราคาหมูหน้าฟาร์ม

				
					# Import necessary libraries
import pandas as pd
import os
from functools import reduce
from datetime import datetime

# Set the working directory to the location of your CSV files
path = '/data/workspace_files/'
os.chdir(path)

# List of files to process
files = ["bone_poultry.csv", "egg.csv", "finished_pig.csv", "piglet.csv",
         "pork_belly.csv", "pork_shoulder.csv"]

# Define a function to clean and join data from multiple CSV files
def clean_join_df(files):
    # Initialize an empty list to store processed data
    data = []

    # Loop through each file in the files list
    for file in files:
        # Read the CSV file
        csv_file = pd.read_csv(file)

        # Extract the nametag from the CSV file
        nametag = csv_file.iloc[0, 2]

        # Rename the columns using f-strings to include the nametag
        csv_file.columns = ["date", "type", "item", "unit",
                            f"min_price_{nametag}",
                            f"max_price_{nametag}",
                            f"avg_{nametag}"]

        # Process the date and create a new_date column
        csv_file[['day', 'month', 'year']] = csv_file['date'].str.split(' ', expand=True)
        csv_file['month_new'] = csv_file['month'].replace({
            "ม.ค.": 1, "ก.พ.": 2, "มี.ค.": 3, "เม.ย.": 4,
            "พ.ค.": 5, "มิ.ย.": 6, "ก.ค.": 7, "ส.ค.": 8,
            "ก.ย.": 9, "ต.ค.": 10, "พ.ย.": 11, "ธ.ค.": 12
        })
        csv_file['year_new'] = csv_file['year'].astype(int) - 543
        csv_file['new_date'] = pd.to_datetime(
            csv_file['year_new'].astype(str) + '-' +
            csv_file['month_new'].astype(str) + '-' +
            csv_file['day'].astype(str)
        )

        # Select necessary columns
        full_df = csv_file[['new_date', f"min_price_{nametag}", f"max_price_{nametag}", f"avg_{nametag}"]]

        # Append the processed data to the data list
        data.append(full_df)

    # Reduce the list of DataFrames to a single DataFrame by performing an inner join
    data = reduce(lambda left, right: pd.merge(left, right, on='new_date', how='inner'), data)

    # Return the final joined and cleaned data
    return data

# Call the clean_join_df function to process the files and join the data
processed_data = clean_join_df(files)

# Write CSV
processed_data.to_csv("livestockprice.csv", index=False)
				
			

R code ทำความสะอาดข้อมูล คาดการณ์ราคาหมูหน้าฟาร์ม

				
					# Load necessary libraries
library(tidyverse)
library(glue)

# Set the working directory to the location of your CSV files
path = '/data/workspace_files/'
setwd(path)

# List of files to process
files <- c("bone_poultry.csv", "egg.csv","finished_pig.csv", "piglet.csv"
           , "pork_belly.csv", "pork_shoulder.csv")

# Define a function to clean and join data from multiple CSV files
clean_join_df <- function(files) {
  # Initialize an empty list to store processed data
  data <- list()
  
  # Loop through each file in the files vector
  for (file in files) {
    # Read the CSV file
    csv_file <- read_csv(file)
    
    # Extract the nametag from the CSV file
    nametag <- csv_file[1, 3]
    
    # Rename the columns using glue to include the nametag
    colnames(csv_file) <- c("date", "type", "item", "unit",
                            glue("min_price_{nametag}"),
                            glue("max_price_{nametag}"),
                            glue("avg_{nametag}"))
    
    # Process the date and create a new_date column
    full_df <- csv_file %>%
      separate(col = date, into = c("day", "month", "year"), sep = " ") %>%
      mutate(month_new = case_when(
        month == "ม.ค." ~ 1,
        month == "ก.พ." ~ 2,
        month == "มี.ค." ~ 3,
        month == "เม.ย." ~ 4,
        month == "พ.ค." ~ 5, 
        month == "มิ.ย." ~ 6,
        month == "ก.ค." ~ 7,
        month == "ส.ค." ~ 8,
        month == "ก.ย." ~ 9,
        month == "ต.ค." ~ 10,
        month == "พ.ย." ~ 11,
        month == "ธ.ค." ~ 12
      ),
      year_new = as.numeric(year) - 543) %>%
      unite(new_date_chr, year_new, month_new, day, sep = "-", remove = FALSE) %>%
      mutate(new_date = ymd(new_date_chr)) %>%
      select(13, 6, 8, 9, 10) 
    
    # Append the processed data to the data list
    data <- append(data, list(full_df))
  }
  
  # Reduce the list of data frames to a single data frame by performing inner join
  data <- data %>% reduce(inner_join, by = "new_date")
  
  # Return the final joined and cleaned data
  return(data)
}

# Call the clean_join_df function to process the files and join the data
processed_data <- clean_join_df(files)

#Write CSV
write_csv(processed_data, "livestockprice.csv", col_names = T)
				
			
ติดต่อสอบถาม
Writer:teenalytic
Share
Share
Share
Share
Print
Writer:teenalytic
Share
Share
Share
Share
Print