Spaces:
Build error
Build error
Add application file
Browse files- app.py +273 -0
- content/44444.csv +55 -0
- content/Tomato.csv +51 -0
- content/retail_prices.csv +141 -0
- content/turmeric_price_6_months_with_dates.csv +27 -0
- requirements.txt +0 -0
app.py
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
from PIL import Image
|
| 3 |
+
import google.generativeai as genai
|
| 4 |
+
from geopy.geocoders import Nominatim
|
| 5 |
+
from deep_translator import GoogleTranslator
|
| 6 |
+
import requests
|
| 7 |
+
import io
|
| 8 |
+
import datetime
|
| 9 |
+
import pandas as pd
|
| 10 |
+
import matplotlib.pyplot as plt
|
| 11 |
+
|
| 12 |
+
# Get the current date
|
| 13 |
+
current_date = datetime.datetime.now()
|
| 14 |
+
cur_date = f"{current_date.day}/{current_date.month}/{current_date.year}"
|
| 15 |
+
|
| 16 |
+
# Configure Google Generative AI
|
| 17 |
+
genai.configure(api_key="AIzaSyAXCVMFirOACW80v3w4lNEruWBAskWbeiw") # Replace with your API key
|
| 18 |
+
weather_model = genai.GenerativeModel('gemini-1.5-flash')
|
| 19 |
+
farming_model = genai.GenerativeModel('gemini-pro')
|
| 20 |
+
|
| 21 |
+
# Initialize session state
|
| 22 |
+
if 'location' not in st.session_state:
|
| 23 |
+
st.session_state['location'] = ""
|
| 24 |
+
if 'crops' not in st.session_state:
|
| 25 |
+
st.session_state['crops'] = ""
|
| 26 |
+
if 'section' not in st.session_state:
|
| 27 |
+
st.session_state['section'] = "Weather Update"
|
| 28 |
+
if 'weather_data' not in st.session_state:
|
| 29 |
+
st.session_state['weather_data'] = None
|
| 30 |
+
if 'farming_plan' not in st.session_state:
|
| 31 |
+
st.session_state['farming_plan'] = None
|
| 32 |
+
if 'url' not in st.session_state:
|
| 33 |
+
st.session_state['url'] = None
|
| 34 |
+
|
| 35 |
+
# Sidebar navigation
|
| 36 |
+
st.sidebar.title("Menu")
|
| 37 |
+
st.sidebar.radio(
|
| 38 |
+
"Choose a section:",
|
| 39 |
+
["Edit Information", "Weather Update", "Disease Prediction", "Price Plots"],
|
| 40 |
+
key='section'
|
| 41 |
+
)
|
| 42 |
+
|
| 43 |
+
# Function to get location coordinates
|
| 44 |
+
def get_location_coordinates(location_name):
|
| 45 |
+
loc = Nominatim(user_agent="GetLoc")
|
| 46 |
+
getLoc = loc.geocode(location_name)
|
| 47 |
+
if getLoc:
|
| 48 |
+
return getLoc.latitude, getLoc.longitude
|
| 49 |
+
else:
|
| 50 |
+
return None, None
|
| 51 |
+
|
| 52 |
+
# Function to fetch HTML content from a weather website
|
| 53 |
+
def get_html(url):
|
| 54 |
+
try:
|
| 55 |
+
headers = {"User-Agent": "Mozilla/5.0"}
|
| 56 |
+
response = requests.get(url, headers=headers)
|
| 57 |
+
if response.status_code == 200:
|
| 58 |
+
return response.text
|
| 59 |
+
else:
|
| 60 |
+
st.error(f"Failed to fetch the page. Status code: {response.status_code}")
|
| 61 |
+
return None
|
| 62 |
+
except Exception as e:
|
| 63 |
+
st.error(f"An error occurred: {e}")
|
| 64 |
+
return None
|
| 65 |
+
|
| 66 |
+
# Function to analyze weather data using AI
|
| 67 |
+
def analyze_weather_data(raw_data):
|
| 68 |
+
st.info("🔍 Crunching the weather data... Hang tight, farmer!")
|
| 69 |
+
prompt = f"""
|
| 70 |
+
I have the following text,
|
| 71 |
+
{raw_data}
|
| 72 |
+
This is a 15-day weather forecast. Today's date is `{cur_date}` in DD/MM/YYYY format.
|
| 73 |
+
|
| 74 |
+
Please analyze the data and format it correctly in this structure:
|
| 75 |
+
|
| 76 |
+
Date: {{date}}
|
| 77 |
+
Highest Temperature: {{highest_temperature}}
|
| 78 |
+
Lowest Temperature: {{lowest_temperature}}
|
| 79 |
+
Humidity: {{humidity}}
|
| 80 |
+
Percentage of Rain: {{rain_percentage}}
|
| 81 |
+
Wind Speed: {{wind_speed}}
|
| 82 |
+
Climate: {{climate}}
|
| 83 |
+
"""
|
| 84 |
+
response = weather_model.generate_content(prompt)
|
| 85 |
+
return response.text
|
| 86 |
+
|
| 87 |
+
# Function to generate a farming plan
|
| 88 |
+
def generate_farming_plan(analyzed_data, crops):
|
| 89 |
+
st.info("🌾 Mapping out a smart farming plan for you... Stay tuned!")
|
| 90 |
+
prompt = f"""
|
| 91 |
+
Here is the text from a weather report of next 15 days:
|
| 92 |
+
|
| 93 |
+
{analyzed_data}
|
| 94 |
+
|
| 95 |
+
The user is actually a farmer and has these crops: {crops}.
|
| 96 |
+
|
| 97 |
+
Analyse the data completely and give me a concise farming plan for the next 15 days.
|
| 98 |
+
Focus on the varying weather reports, highlight if the farmer wants to undergo any precautions before anything unexpected happens.
|
| 99 |
+
Provide it with the actual date.
|
| 100 |
+
"""
|
| 101 |
+
response = farming_model.generate_content(prompt)
|
| 102 |
+
return response.text
|
| 103 |
+
|
| 104 |
+
# Function to analyze plant disease using AI
|
| 105 |
+
def analyze_plant_disease(image_description, image):
|
| 106 |
+
st.info("🧐 Investigating plant health... This will just take a moment!")
|
| 107 |
+
prompt = """
|
| 108 |
+
Analyze the provided image of a plant and determine the type of disease it is affected by.
|
| 109 |
+
Follow the structure outlined below:
|
| 110 |
+
|
| 111 |
+
Template for Response:
|
| 112 |
+
```
|
| 113 |
+
Plant Name: {plant_name}
|
| 114 |
+
Disease Name: {disease_name}
|
| 115 |
+
Disease Severity: {severity_level}
|
| 116 |
+
Suggestions to Overcome: {suggestions}
|
| 117 |
+
```
|
| 118 |
+
|
| 119 |
+
Guidelines:
|
| 120 |
+
- Identify the type of disease in the image of the plant.
|
| 121 |
+
- If unclear, provide an approximate answer.
|
| 122 |
+
- Ensure the response is concise, accurate, and aligned with the template.
|
| 123 |
+
"""
|
| 124 |
+
if image_description:
|
| 125 |
+
prompt += f"""
|
| 126 |
+
Here is a description of the image from the user:
|
| 127 |
+
```
|
| 128 |
+
{image_description}
|
| 129 |
+
```
|
| 130 |
+
Consider this information carefully in your response.
|
| 131 |
+
"""
|
| 132 |
+
|
| 133 |
+
img_buffer = io.BytesIO()
|
| 134 |
+
image.save(img_buffer, format="PNG")
|
| 135 |
+
img_buffer.seek(0)
|
| 136 |
+
|
| 137 |
+
response = weather_model.generate_content([prompt, Image.open(img_buffer)])
|
| 138 |
+
return response.text.strip("```")
|
| 139 |
+
|
| 140 |
+
# Function to translate text to Tamil
|
| 141 |
+
def translate_to_tamil(text):
|
| 142 |
+
translator = GoogleTranslator(source='auto', target='ta')
|
| 143 |
+
return translator.translate(text)
|
| 144 |
+
|
| 145 |
+
def bold_text_before_colon(text):
|
| 146 |
+
# Split the input text into lines
|
| 147 |
+
lines = text.split('\n')
|
| 148 |
+
|
| 149 |
+
# Process each line to add bold formatting before the colon
|
| 150 |
+
formatted_lines = []
|
| 151 |
+
for line in lines:
|
| 152 |
+
if ':' in line:
|
| 153 |
+
# Split the line at the first colon
|
| 154 |
+
before_colon, after_colon = line.split(':', 1)
|
| 155 |
+
# Add bold formatting to the part before the colon
|
| 156 |
+
formatted_line = f"**{before_colon.strip()}**: {after_colon.strip()}"
|
| 157 |
+
else:
|
| 158 |
+
# If no colon is present, keep the line unchanged
|
| 159 |
+
formatted_line = line.strip()
|
| 160 |
+
formatted_lines.append(formatted_line)
|
| 161 |
+
|
| 162 |
+
# Join all the formatted lines back together
|
| 163 |
+
return '\n'.join(formatted_lines)
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
def clear_weather_data():
|
| 167 |
+
st.session_state['weather_data'] = None
|
| 168 |
+
st.session_state['farming_plan'] = None
|
| 169 |
+
|
| 170 |
+
# Function to plot individual datasets
|
| 171 |
+
def plot_data(data, x_col, y_col, xlabel, ylabel, title):
|
| 172 |
+
fig, ax = plt.subplots()
|
| 173 |
+
ax.plot(data[x_col], data[y_col])
|
| 174 |
+
ax.set_xlabel(xlabel)
|
| 175 |
+
ax.set_ylabel(ylabel)
|
| 176 |
+
ax.set_title(title)
|
| 177 |
+
st.pyplot(fig)
|
| 178 |
+
|
| 179 |
+
# Main application logic
|
| 180 |
+
if st.session_state['section'] == "Edit Information":
|
| 181 |
+
st.title("Edit Information")
|
| 182 |
+
|
| 183 |
+
location = st.text_input("Enter the location:", st.session_state['location'])
|
| 184 |
+
crops = st.text_input("Enter your crops (comma-separated):", st.session_state['crops'])
|
| 185 |
+
|
| 186 |
+
if st.button("Save"):
|
| 187 |
+
st.session_state['location'] = location
|
| 188 |
+
st.session_state['crops'] = crops
|
| 189 |
+
st.success("Information saved! 🎉")
|
| 190 |
+
clear_weather_data()
|
| 191 |
+
|
| 192 |
+
elif st.session_state['section'] == "Weather Update":
|
| 193 |
+
st.title("15-Day Weather Forecast")
|
| 194 |
+
|
| 195 |
+
if not st.session_state['location'] or not st.session_state['crops']:
|
| 196 |
+
st.error("Please enter your location and crops in the 'Edit Information' section.")
|
| 197 |
+
else:
|
| 198 |
+
if not st.session_state['weather_data']:
|
| 199 |
+
lat, long = get_location_coordinates(st.session_state['location'])
|
| 200 |
+
if lat and long:
|
| 201 |
+
st.session_state['url'] = f"https://weather.com/en-IN/weather/tenday/l/{lat},{long}?par=google"
|
| 202 |
+
html_content = get_html(st.session_state['url'])
|
| 203 |
+
|
| 204 |
+
if html_content:
|
| 205 |
+
st.markdown("⚡ **Analyzing weather trends with cutting-edge AI...**")
|
| 206 |
+
weather_data = analyze_weather_data(html_content)
|
| 207 |
+
farming_plan = generate_farming_plan(weather_data, st.session_state['crops'])
|
| 208 |
+
|
| 209 |
+
st.session_state['weather_data'] = weather_data
|
| 210 |
+
st.session_state['farming_plan'] = farming_plan
|
| 211 |
+
else:
|
| 212 |
+
st.error("Location not found. Please enter a valid location.")
|
| 213 |
+
st.markdown(st.session_state['farming_plan'])
|
| 214 |
+
st.markdown(f"[For more weather updates, click here]({st.session_state['url']})")
|
| 215 |
+
|
| 216 |
+
elif st.session_state['section'] == "Disease Prediction":
|
| 217 |
+
st.title("Plant Disease Detection System")
|
| 218 |
+
uploaded_image = st.file_uploader("Upload a plant image", type=["jpg", "jpeg", "png"])
|
| 219 |
+
|
| 220 |
+
if uploaded_image:
|
| 221 |
+
image = Image.open(uploaded_image)
|
| 222 |
+
st.image(image, caption="Uploaded Image", use_column_width=True)
|
| 223 |
+
image_description = st.text_area("Enter a brief description of the plant and symptoms (optional):", "")
|
| 224 |
+
|
| 225 |
+
if st.button("Analyze"):
|
| 226 |
+
with st.spinner("Analyzing the plant disease..."):
|
| 227 |
+
original_response = bold_text_before_colon(analyze_plant_disease(image_description, image))
|
| 228 |
+
st.success("Analysis Complete! 🎯")
|
| 229 |
+
st.subheader("**Analysis Report (English):**")
|
| 230 |
+
original_response = original_response.replace("\n"," \n").replace("\n\n"," \n")
|
| 231 |
+
st.markdown(original_response)
|
| 232 |
+
|
| 233 |
+
tamil_translation = translate_to_tamil(original_response)
|
| 234 |
+
st.subheader("**Analysis Report (Tamil):**")
|
| 235 |
+
tamil_translation = tamil_translation.replace("\n"," \n").replace("\n\n"," \n")
|
| 236 |
+
st.markdown(tamil_translation)
|
| 237 |
+
|
| 238 |
+
elif st.session_state['section'] == "Price Plots":
|
| 239 |
+
st.title("Crop Price Trends")
|
| 240 |
+
|
| 241 |
+
col1, col2 = st.columns(2)
|
| 242 |
+
with col1:
|
| 243 |
+
df = pd.read_csv("content/retail_prices.csv")
|
| 244 |
+
st.subheader("Rice Prices")
|
| 245 |
+
if not df.empty:
|
| 246 |
+
plot_data(df, 'date', 'pricw', 'Date', 'Price of Rice', 'Date vs Price of Rice')
|
| 247 |
+
else:
|
| 248 |
+
st.write("No data available for Rice.")
|
| 249 |
+
|
| 250 |
+
with col2:
|
| 251 |
+
df1 = pd.read_csv("content/Tomato.csv")
|
| 252 |
+
st.subheader("Tomato Prices")
|
| 253 |
+
if not df1.empty:
|
| 254 |
+
plot_data(df1, 'Date', 'Price', 'Date', 'Price of Tomato', 'Date vs Price of Tomato')
|
| 255 |
+
else:
|
| 256 |
+
st.write("No data available for Tomato.")
|
| 257 |
+
|
| 258 |
+
col3, col4 = st.columns(2)
|
| 259 |
+
with col3:
|
| 260 |
+
df3 = pd.read_csv("content/turmeric_price_6_months_with_dates.csv")
|
| 261 |
+
st.subheader("Turmeric Prices")
|
| 262 |
+
if not df3.empty:
|
| 263 |
+
plot_data(df3, 'Date', 'Price', 'Date', 'Price of Turmeric', 'Date vs Price of Turmeric')
|
| 264 |
+
else:
|
| 265 |
+
st.write("No data available for Turmeric.")
|
| 266 |
+
|
| 267 |
+
with col4:
|
| 268 |
+
df4 = pd.read_csv("content/44444.csv")
|
| 269 |
+
st.subheader("Wheat Prices")
|
| 270 |
+
if not df4.empty:
|
| 271 |
+
plot_data(df4, 'date', 'pricw', 'Date', 'Price of Wheat', 'Date vs Price of Wheat')
|
| 272 |
+
else:
|
| 273 |
+
st.write("No data available for Wheat.")
|
content/44444.csv
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
date,pricw
|
| 2 |
+
01-03-2018,34.49
|
| 3 |
+
01-04-2018,36.13
|
| 4 |
+
01-05-2018,40.09
|
| 5 |
+
01-06-2018,37.27
|
| 6 |
+
01-07-2018,34.48
|
| 7 |
+
01-08-2018,32.09
|
| 8 |
+
01-09-2018,31.46
|
| 9 |
+
01-10-2018,31.97
|
| 10 |
+
01-11-2018,29.27
|
| 11 |
+
01-12-2018,29.9
|
| 12 |
+
01-01-2019,33
|
| 13 |
+
01-02-2019,31.33
|
| 14 |
+
01-03-2019,31.36
|
| 15 |
+
01-04-2019,28.48
|
| 16 |
+
01-05-2019,30.15
|
| 17 |
+
01-06-2019,28.56
|
| 18 |
+
01-07-2019,27.99
|
| 19 |
+
01-08-2019,29.06
|
| 20 |
+
01-09-2019,32.08
|
| 21 |
+
01-10-2019,36.74
|
| 22 |
+
01-11-2019,39.21
|
| 23 |
+
01-12-2019,43.29
|
| 24 |
+
01-01-2020,34.66
|
| 25 |
+
01-02-2020,38
|
| 26 |
+
01-03-2020,38
|
| 27 |
+
01-05-2020,36
|
| 28 |
+
01-06-2020,40.19
|
| 29 |
+
01-07-2020,38.97
|
| 30 |
+
01-08-2020,39.16
|
| 31 |
+
01-09-2020,39.85
|
| 32 |
+
01-01-2021,50.93
|
| 33 |
+
01-02-2021,47.15
|
| 34 |
+
01-03-2021,48.65
|
| 35 |
+
01-04-2021,53.84
|
| 36 |
+
01-05-2021,57.56
|
| 37 |
+
01-06-2021,67.5
|
| 38 |
+
01-07-2021,61.77
|
| 39 |
+
01-08-2021,59.95
|
| 40 |
+
01-09-2021,50.22
|
| 41 |
+
01-10-2021,64.68
|
| 42 |
+
01-11-2021,60.03
|
| 43 |
+
01-12-2021,62.5
|
| 44 |
+
01-01-2022,68.14
|
| 45 |
+
01-02-2022,71.16
|
| 46 |
+
01-03-2022,63.79
|
| 47 |
+
01-04-2022,51.24
|
| 48 |
+
01-05-2022,57.29
|
| 49 |
+
01-06-2022,54.14
|
| 50 |
+
01-07-2022,50.07
|
| 51 |
+
01-08-2022,49.24
|
| 52 |
+
01-09-2022,48.44
|
| 53 |
+
01-10-2022,34.78
|
| 54 |
+
01-11-2022,32.28
|
| 55 |
+
01-12-2022,32.2
|
content/Tomato.csv
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Date,Price
|
| 2 |
+
25-03-2021,35
|
| 3 |
+
26-03-2021,35
|
| 4 |
+
27-03-2021,45
|
| 5 |
+
28-03-2021,45
|
| 6 |
+
29-03-2021,47.5
|
| 7 |
+
30-03-2021,47.5
|
| 8 |
+
31-03-2021,47.5
|
| 9 |
+
01-04-2021,35
|
| 10 |
+
02-04-2021,35
|
| 11 |
+
03-04-2021,40
|
| 12 |
+
04-04-2021,47.5
|
| 13 |
+
05-04-2021,35
|
| 14 |
+
06-04-2021,32.5
|
| 15 |
+
07-04-2021,35
|
| 16 |
+
08-04-2021,35
|
| 17 |
+
09-04-2021,35
|
| 18 |
+
10-04-2021,35
|
| 19 |
+
11-04-2021,30
|
| 20 |
+
12-04-2021,30
|
| 21 |
+
13-04-2021,22.5
|
| 22 |
+
14-04-2021,22.5
|
| 23 |
+
15-04-2021,17.5
|
| 24 |
+
16-04-2021,17.5
|
| 25 |
+
17-04-2021,14
|
| 26 |
+
18-04-2021,17.5
|
| 27 |
+
19-04-2021,12.5
|
| 28 |
+
20-04-2021,12.5
|
| 29 |
+
21-04-2021,17.5
|
| 30 |
+
22-04-2021,12.5
|
| 31 |
+
23-04-2021,16
|
| 32 |
+
24-04-2021,12.5
|
| 33 |
+
25-04-2021,17.5
|
| 34 |
+
26-04-2021,12.5
|
| 35 |
+
27-04-2021,12.5
|
| 36 |
+
28-04-2021,17.5
|
| 37 |
+
29-04-2021,35
|
| 38 |
+
30-04-2021,22.5
|
| 39 |
+
01-05-2021,22.5
|
| 40 |
+
02-05-2021,27.5
|
| 41 |
+
03-05-2021,17.5
|
| 42 |
+
04-05-2021,12.5
|
| 43 |
+
05-05-2021,12.5
|
| 44 |
+
06-05-2021,12.5
|
| 45 |
+
07-05-2021,17.5
|
| 46 |
+
08-05-2021,12.5
|
| 47 |
+
09-05-2021,12.5
|
| 48 |
+
10-05-2021,12.5
|
| 49 |
+
11-05-2021,12.5
|
| 50 |
+
12-05-2021,32.5
|
| 51 |
+
13-05-2021,37.5
|
content/retail_prices.csv
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
date,pricw
|
| 2 |
+
01-01-2011,60.95
|
| 3 |
+
01-02-2011,63.03
|
| 4 |
+
01-03-2011,62.6
|
| 5 |
+
01-04-2011,62.35
|
| 6 |
+
01-05-2011,62.33
|
| 7 |
+
01-06-2011,62.26
|
| 8 |
+
01-07-2011,61.88
|
| 9 |
+
01-08-2011,60.83
|
| 10 |
+
01-09-2011,58.39
|
| 11 |
+
01-10-2011,58.78
|
| 12 |
+
01-11-2011,60.51
|
| 13 |
+
01-12-2011,62.54
|
| 14 |
+
01-01-2012,61.54
|
| 15 |
+
01-02-2012,59.53
|
| 16 |
+
01-03-2012,58.66
|
| 17 |
+
01-04-2012,57.64
|
| 18 |
+
01-05-2012,57.07
|
| 19 |
+
01-06-2012,58.04
|
| 20 |
+
01-07-2012,59.48
|
| 21 |
+
01-08-2012,58.91
|
| 22 |
+
01-09-2012,61.44
|
| 23 |
+
01-10-2012,61.98
|
| 24 |
+
01-11-2012,62.72
|
| 25 |
+
01-12-2012,63.58
|
| 26 |
+
01-01-2013,63.81
|
| 27 |
+
01-02-2013,63.15
|
| 28 |
+
01-03-2013,62.88
|
| 29 |
+
01-04-2013,63.3
|
| 30 |
+
01-05-2013,63.64
|
| 31 |
+
01-06-2013,63.01
|
| 32 |
+
01-07-2013,62.92
|
| 33 |
+
01-08-2013,62.61
|
| 34 |
+
01-09-2013,62.69
|
| 35 |
+
01-10-2013,63.29
|
| 36 |
+
01-11-2013,64.65
|
| 37 |
+
01-12-2013,66.34
|
| 38 |
+
01-01-2014,68.09
|
| 39 |
+
01-02-2014,69.91
|
| 40 |
+
01-03-2014,70.27
|
| 41 |
+
01-04-2014,72.99
|
| 42 |
+
01-05-2014,74.74
|
| 43 |
+
01-06-2014,75.8
|
| 44 |
+
01-07-2014,77.74
|
| 45 |
+
01-08-2014,79.79
|
| 46 |
+
01-09-2014,85.46
|
| 47 |
+
01-10-2014,86.74
|
| 48 |
+
01-11-2014,88.83
|
| 49 |
+
01-12-2014,88.31
|
| 50 |
+
01-01-2015,88.05
|
| 51 |
+
01-02-2015,85.41
|
| 52 |
+
01-03-2015,81.34
|
| 53 |
+
01-04-2015,79.12
|
| 54 |
+
01-05-2015,78.49
|
| 55 |
+
01-06-2015,76.38
|
| 56 |
+
01-07-2015,75.01
|
| 57 |
+
01-08-2015,72.59
|
| 58 |
+
01-09-2015,73.31
|
| 59 |
+
01-10-2015,73.89
|
| 60 |
+
01-11-2015,77.35
|
| 61 |
+
01-12-2015,78.5
|
| 62 |
+
01-01-2016,77.95
|
| 63 |
+
01-02-2016,76.67
|
| 64 |
+
01-03-2016,75.75
|
| 65 |
+
01-04-2016,76.16
|
| 66 |
+
01-05-2016,77.85
|
| 67 |
+
01-06-2016,77.9
|
| 68 |
+
01-07-2016,77.43
|
| 69 |
+
01-08-2016,76.19
|
| 70 |
+
01-09-2016,76.49
|
| 71 |
+
01-10-2016,79.15
|
| 72 |
+
01-11-2016,83.92
|
| 73 |
+
01-12-2016,91.29
|
| 74 |
+
01-01-2017,96.09
|
| 75 |
+
01-02-2017,95.8
|
| 76 |
+
01-03-2017,85.58
|
| 77 |
+
01-04-2017,87.81
|
| 78 |
+
01-05-2017,90.29
|
| 79 |
+
01-06-2017,95.48
|
| 80 |
+
01-07-2017,96.01
|
| 81 |
+
01-08-2017,95.76
|
| 82 |
+
01-09-2017,98.19
|
| 83 |
+
01-10-2017,101.84
|
| 84 |
+
01-11-2017,104.78
|
| 85 |
+
01-12-2017,103.61
|
| 86 |
+
01-01-2018,101.72
|
| 87 |
+
01-02-2018,96.29
|
| 88 |
+
01-03-2018,94.49
|
| 89 |
+
01-04-2018,96.13
|
| 90 |
+
01-05-2018,100.09
|
| 91 |
+
01-06-2018,97.27
|
| 92 |
+
01-07-2018,94.48
|
| 93 |
+
01-08-2018,92.09
|
| 94 |
+
01-09-2018,91.46
|
| 95 |
+
01-10-2018,91.97
|
| 96 |
+
01-11-2018,89.27
|
| 97 |
+
01-12-2018,89.9
|
| 98 |
+
01-01-2019,93
|
| 99 |
+
01-02-2019,91.33
|
| 100 |
+
01-03-2019,91.36
|
| 101 |
+
01-04-2019,88.48
|
| 102 |
+
01-05-2019,90.15
|
| 103 |
+
01-06-2019,88.56
|
| 104 |
+
01-07-2019,87.99
|
| 105 |
+
01-08-2019,89.06
|
| 106 |
+
01-09-2019,92.08
|
| 107 |
+
01-10-2019,96.74
|
| 108 |
+
01-11-2019,99.21
|
| 109 |
+
01-12-2019,103.29
|
| 110 |
+
01-01-2020,94.66
|
| 111 |
+
01-02-2020,98
|
| 112 |
+
01-03-2020,98
|
| 113 |
+
01-05-2020,96
|
| 114 |
+
01-06-2020,100.19
|
| 115 |
+
01-07-2020,98.97
|
| 116 |
+
01-08-2020,99.16
|
| 117 |
+
01-09-2020,99.85
|
| 118 |
+
01-01-2021,110.93
|
| 119 |
+
01-02-2021,107.15
|
| 120 |
+
01-03-2021,108.65
|
| 121 |
+
01-04-2021,113.84
|
| 122 |
+
01-05-2021,117.56
|
| 123 |
+
01-06-2021,127.5
|
| 124 |
+
01-07-2021,121.77
|
| 125 |
+
01-08-2021,119.95
|
| 126 |
+
01-09-2021,110.22
|
| 127 |
+
01-10-2021,124.68
|
| 128 |
+
01-11-2021,139.03
|
| 129 |
+
01-12-2021,138.5
|
| 130 |
+
01-01-2022,158.14
|
| 131 |
+
01-02-2022,161.16
|
| 132 |
+
01-03-2022,173.79
|
| 133 |
+
01-04-2022,211.24
|
| 134 |
+
01-05-2022,217.29
|
| 135 |
+
01-06-2022,247.14
|
| 136 |
+
01-07-2022,250.07
|
| 137 |
+
01-08-2022,239.24
|
| 138 |
+
01-09-2022,228.44
|
| 139 |
+
01-10-2022,224.78
|
| 140 |
+
01-11-2022,222.28
|
| 141 |
+
01-12-2022,218.2
|
content/turmeric_price_6_months_with_dates.csv
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Date,Week,Price
|
| 2 |
+
07-04-2024,Week 1,100
|
| 3 |
+
14-04-2024,Week 2,105
|
| 4 |
+
21-04-2024,Week 3,110
|
| 5 |
+
28-04-2024,Week 4,115
|
| 6 |
+
05-05-2024,Week 5,120
|
| 7 |
+
12-05-2024,Week 6,115
|
| 8 |
+
19-05-2024,Week 7,125
|
| 9 |
+
26-05-2024,Week 8,130
|
| 10 |
+
02-06-2024,Week 9,135
|
| 11 |
+
09-06-2024,Week 10,130
|
| 12 |
+
16-06-2024,Week 11,140
|
| 13 |
+
23-06-2024,Week 12,145
|
| 14 |
+
30-06-2024,Week 13,150
|
| 15 |
+
07-07-2024,Week 14,145
|
| 16 |
+
14-07-2024,Week 15,140
|
| 17 |
+
21-07-2024,Week 16,135
|
| 18 |
+
28-07-2024,Week 17,130
|
| 19 |
+
04-08-2024,Week 18,125
|
| 20 |
+
11-08-2024,Week 19,120
|
| 21 |
+
18-08-2024,Week 20,115
|
| 22 |
+
25-08-2024,Week 21,110
|
| 23 |
+
01-09-2024,Week 22,105
|
| 24 |
+
08-09-2024,Week 23,100
|
| 25 |
+
15-09-2024,Week 24,110
|
| 26 |
+
22-09-2024,Week 25,120
|
| 27 |
+
29-09-2024,Week 26,130
|
requirements.txt
ADDED
|
Binary file (168 Bytes). View file
|
|
|