Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -162,18 +162,57 @@ def update_oni_data():
|
|
162 |
os.remove(temp_file)
|
163 |
|
164 |
def load_data(oni_path, typhoon_path):
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
logging.error(f"Typhoon data file not found: {typhoon_path}")
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
|
|
|
|
|
|
177 |
|
178 |
def process_oni_data(oni_data):
|
179 |
oni_long = oni_data.melt(id_vars=['Year'], var_name='Month', value_name='ONI')
|
|
|
162 |
os.remove(temp_file)
|
163 |
|
164 |
def load_data(oni_path, typhoon_path):
|
165 |
+
# Create default empty DataFrames
|
166 |
+
oni_data = pd.DataFrame({'Year': [], 'Jan': [], 'Feb': [], 'Mar': [], 'Apr': [],
|
167 |
+
'May': [], 'Jun': [], 'Jul': [], 'Aug': [], 'Sep': [],
|
168 |
+
'Oct': [], 'Nov': [], 'Dec': []})
|
169 |
+
typhoon_data = pd.DataFrame()
|
170 |
+
|
171 |
+
# Try to load ONI data
|
172 |
+
if os.path.exists(oni_path):
|
173 |
+
try:
|
174 |
+
oni_data = pd.read_csv(oni_path)
|
175 |
+
except Exception as e:
|
176 |
+
logging.error(f"Error loading ONI data: {e}")
|
177 |
+
# Update ONI data if loading fails
|
178 |
+
update_oni_data()
|
179 |
+
try:
|
180 |
+
oni_data = pd.read_csv(oni_path)
|
181 |
+
except Exception as e:
|
182 |
+
logging.error(f"Still can't load ONI data: {e}")
|
183 |
+
else:
|
184 |
+
logging.warning(f"ONI data file not found: {oni_path}")
|
185 |
+
# Try to download ONI data
|
186 |
+
update_oni_data()
|
187 |
+
try:
|
188 |
+
oni_data = pd.read_csv(oni_path)
|
189 |
+
except Exception as e:
|
190 |
+
logging.error(f"Failed to create ONI data: {e}")
|
191 |
+
|
192 |
+
# Try to load typhoon data
|
193 |
+
if os.path.exists(typhoon_path):
|
194 |
+
try:
|
195 |
+
typhoon_data = pd.read_csv(typhoon_path, low_memory=False)
|
196 |
+
typhoon_data['ISO_TIME'] = pd.to_datetime(typhoon_data['ISO_TIME'], errors='coerce')
|
197 |
+
typhoon_data = typhoon_data.dropna(subset=['ISO_TIME'])
|
198 |
+
except Exception as e:
|
199 |
+
logging.error(f"Error loading typhoon data: {e}")
|
200 |
+
else:
|
201 |
logging.error(f"Typhoon data file not found: {typhoon_path}")
|
202 |
+
# Create minimal sample data to prevent crashes
|
203 |
+
typhoon_data = pd.DataFrame({
|
204 |
+
'SID': ['WP012000'],
|
205 |
+
'ISO_TIME': [pd.Timestamp('2000-01-01')],
|
206 |
+
'NAME': ['SAMPLE'],
|
207 |
+
'SEASON': [2000],
|
208 |
+
'LAT': [20.0],
|
209 |
+
'LON': [140.0],
|
210 |
+
'USA_WIND': [50.0],
|
211 |
+
'USA_PRES': [990.0]
|
212 |
+
})
|
213 |
+
logging.warning("Created minimal sample typhoon data to prevent crashes")
|
214 |
+
|
215 |
+
return oni_data, typhoon_data
|
216 |
|
217 |
def process_oni_data(oni_data):
|
218 |
oni_long = oni_data.melt(id_vars=['Year'], var_name='Month', value_name='ONI')
|