การเตรียมข้อมูลทางการเกษตรและปศุสัตว์เพื่อนำไปวิเคราะห์
แนะนำวิธีการเตรียมข้อมูล(Data preparation) สำหรับนำไปประยุกต์ใช้เพื่อทำ model ทางการเกษตร พร้อมวิธีใช้งานจริง
การเตรียมข้อมูล(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
การทำความสะอาดข้อมูล (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)
Related Posts