私がウェブスクラップ、農業科学、NOAA APIを組み合わせた方法は、環境データに基づいて家畜飼料コストを最適化するツールを作成する方法です。 ランチングは、ブラザーの薄いマージンのビジネスです。一年を作ったり壊したりすることができる最大の変数の2つは、飼料のコストであり、最大の運用コストと天候です。 農業の背景を持つ開発者として、これらの2つのドメインを結びつける機会を見たのですが、実際の環境データに基づいて勧告を調整するための基盤を作り出すだけでなく、最もコスト効率の良いフィードを見つけるツールを構築することができたらどうでしょうか。 したがって、私はプロトタイプを構築しました。これは、ランチャーのデータ駆動アシスタントとして機能するPythonスクリプトのコレクションです。 食糧コストの最適化と、 天気予報データを引っ張るには、これが機能します。 Economic Engine Environmental Monitor モジュール1:経済エンジン - 節約のためのスクラップ 最初の課題は、「私の群れの栄養需要を考慮して、彼らを養う最も安価な方法は何ですか?」という根本的な質問に答えることでした。 これには、科学的な計算機とウェブスクレーパーの2つの部分が必要でした。 Part A: 農業科学をPythonに翻訳する まず、「乾物摂取量(Dry Matter Intake, DMI)」を計算する必要があり、これは牛がどれだけ食べる必要があるかを科学的に測定するものであり、これは単純な数字ではなく、牛の体重、生活段階(授乳、成長、妊娠)、牛乳生産などに依存しています。 cows_2.py - A Glimpse into the DMI Formulas # Formula for lactating cow DMI, based on scientific papers dmi_lac = ((3.7 + int(lac_par) * 5.7) + .305 * 624 + .022 * int(lac_weght) + \ (-.689 - 1.87 * int(lac_par)) * 3) * \ (1 - (2.12 + int(lac_par) * .136)**(-.053*int(lac_day))) # Total feed needed is the DMI multiplied by the number of cows and days all_feed_needed = (dmi_lac_needed + dmi_grow_needed + final_preg) * int(days_of_feed) このスクリプトは、ユーザーに彼らの群の詳細を尋ね、必要な食糧の合計ポンドを計算します。 次に、必要なのは、The . 要求 供給 Part B: The Web Scraper for Real-Time Prices フィード価格が変化します。現在のデータを得る唯一の方法は、ソースに移動することです。私はリクエストとBeautifulSoupを使用してウェブスクレーパーを書き、製品名と価格を地元のフィードストアのウェブサイトから直接引き出す。 cow_save_scrape.py - The Scraper Logic import requests from bs4 import BeautifulSoup as soup from urllib.request import Request, urlopen websiteurl = 'https://shop.berendbros.com/departments/calf-|70|P35|P351.html' req = Request(websiteurl, headers={"User-Agent": 'Mozilla/5.0'}) webpage = urlopen(req).read() soups = soup(webpage,'html.parser') calf_name = [] calf_price = [] for link in soups.find_all('div', class_='card-body'): for product in link.find_all('div', class_='product_link'): calf_name.append(product.text) for price in link.find_all('div', class_='product_price'): # Clean the price string (e.g., "$24.99\n" -> 24.99) price_text = price.text.strip().strip('$') calf_price.append(float(price_text)) スクリプトは、各フィード製品の群のDMIを満たすための合計コストを計算し、リストを整理して、最も安価で最も高価なオプションを見つける。 モジュール2:The Environmental Monitor - Tapping into the NOAA API 飼料のコストは半分に過ぎない。環境ストレス、特に熱は家畜に大きな影響を与える。熱ストレスに苦しむ牛は、食料を減らし、牛乳を減らし、生殖能力を低下させる。 私は、数千の駅からの歴史的および現在の気象データのための素晴らしい、無料のAPIを提供するNational Oceanic and Atmospheric Administration(NOAA)に連絡しました。 My script, weather_1.py, is designed to draw key data points for a list of specific weather stations in my area of interest (College Station, TX). 私のスクリプト、 weather_1.pyは、私の関心の領域(College Station, TX)の特定の気象ステーションのリストのために重要なデータポイントを引くように設計されています。 weather_1.py - Fetching Key Climate Data import requests import json token = 'YOUR_NOAA_API_TOKEN' # Get this from the NOAA website base_url = 'https://www.ncei.noaa.gov/cdo-web/api/v2/data' start_date = '2024-04-01' end_date = '2024-04-03' # List of data types we want to fetch data_types = [ 'TMAX', # Maximum Temperature 'TMIN', # Minimum Temperature 'RH_AVG', # Average Relative Humidity 'WIND_SPEED_AVG', ] for station_id in us1tx_codes: print(f"--- Processing station: {station_id} ---") params = { 'datasetid': 'USCRNS', # A specific, high-quality dataset 'stationid': f'USCRNS:{station_id}', 'startdate': start_date, 'enddate': end_date, 'limit': 1000, 'datatypeid': data_types } # ... make the requests.get() call ... スクリプトは各ステーションのAPIを体系的にクエリし、結果をJSONファイルに保存し、最近の環境条件のローカルデータベースを作成します。 次のステップ:Dotsを接続する 現在、この2つのモジュールは別々に構成されていますが、パワーはそれらを接続することです。このプロジェクトの次なる進化は、DMI計算機のダイナミックな入力として天候データを使用することです。 You can calculate the NOAAのデータ - 牛の熱ストレスを測定するための標準メトリック. THIが一定の値(乳牛のための約72値)を上回るにつれて、DMIは下がり始めます。 Temperature-Humidity Index (THI) DMIの公式の次のバージョンは、こんな感じになります。 adjusted_dmi = calculated_dmi * get_heat_stress_factor(THI) たとえば、予測された熱波の間に、彼らの群れの摂取量は10%減少する可能性があり、彼らが飼料購入を調整し、廃棄を避けることをアドバイスすることができます。 学んだこと Public APIs are Goldmines: NOAAのような政府機関は、信じられないほどの量の高品質で無料のデータを提供しています。 Web Scraping はスーパーパワーです: API を通じて利用できない経済データの場合、シンプルな Python スクリプトはウェブサイトを構造化されたデータソースに変えることができます。 しかし、経済データ(フィード価格)と環境データ(天候)を組み合わせることにより、あなたは、実際の世界がどのように機能するかより強力で近いツールを作成します。 このプロジェクトは出発点ですが、デベロッパーがデータサイエンスと自動化を伝統的な産業に持ち込むツールを開発し、実質的な価値を生み出し、実質的な問題を解決する可能性を示しています。