Esmaeilkianii commited on
Commit
a3ab3e3
·
verified ·
1 Parent(s): 1523e45

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -5
app.py CHANGED
@@ -244,6 +244,15 @@ def display_metric_card(title, value, icon="📊"):
244
  </div>
245
  """, unsafe_allow_html=True)
246
 
 
 
 
 
 
 
 
 
 
247
  # تابع برای بارگذاری داده‌های مزارع نیشکر
248
  def load_farm_data():
249
  try:
@@ -253,6 +262,19 @@ def load_farm_data():
253
  # بارگذاری فایل پایگاه داده مزارع
254
  farm_database = pd.read_csv('پایگاه داده (1).csv')
255
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
  # ادغام داده‌ها بر اساس ستون مزرعه
257
  merged_data = pd.merge(farm_database, farm_coordinates, on='مزرعه', how='inner')
258
 
@@ -518,13 +540,35 @@ with tabs[0]:
518
  display_metric_card("تعداد واریته‌ها", unique_varieties, "🌿")
519
 
520
  with col3:
521
- avg_age = merged_data['سن_x'].mean() if 'سن_x' in merged_data.columns else merged_data['سن'].mean()
522
- display_metric_card("میانگین سن", f"{avg_age:.1f} سال", "📅")
 
 
 
 
 
 
 
 
 
 
 
 
523
 
524
  with col4:
525
  if 'مساحت' in merged_data.columns:
526
- total_area = merged_data['مساحت'].sum()
527
- display_metric_card("مساحت کل", f"{total_area:.1f} هکتار", "📏")
 
 
 
 
 
 
 
 
 
 
528
  else:
529
  display_metric_card("تعداد کانال‌ها", len(merged_data['کانال'].unique()) if 'کانال' in merged_data.columns else "نامشخص", "🚿")
530
 
@@ -2019,7 +2063,7 @@ with tabs[5]:
2019
  'user_id': list(range(1, 6)),
2020
  'username': ['admin', 'user1', 'user2', 'user3', 'user4'],
2021
  'name': ['مدیر سیستم', 'کاربر یک', 'کاربر دو', 'کاربر سه', 'کاربر چهار'],
2022
- 'role': ['مدیر', 'کارشناس', 'کارشناس', 'کاربر', 'کاربر'],
2023
  'last_login': [
2024
  (datetime.now() - timedelta(hours=2)).strftime('%Y-%m-%d %H:%M'),
2025
  (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M'),
 
244
  </div>
245
  """, unsafe_allow_html=True)
246
 
247
+ # تابع برای تبدیل ستون به مقادیر عددی با مدیریت خطا
248
+ def convert_to_numeric(df, column_name):
249
+ try:
250
+ # تلاش برای تبدیل ستون به عدد و جایگزینی خطاها با NaN
251
+ return pd.to_numeric(df[column_name], errors='coerce')
252
+ except Exception as e:
253
+ st.warning(f"خطا در تبدیل ستون {column_name} به عدد: {e}")
254
+ return pd.Series([np.nan] * len(df))
255
+
256
  # تابع برای بارگذاری داده‌های مزارع نیشکر
257
  def load_farm_data():
258
  try:
 
262
  # بارگذاری فایل پایگاه داده مزارع
263
  farm_database = pd.read_csv('پایگاه داده (1).csv')
264
 
265
+ # تبدیل ستون‌های عددی به عدد با مدیریت خطا
266
+ if 'سن' in farm_coordinates.columns:
267
+ farm_coordinates['سن'] = convert_to_numeric(farm_coordinates, 'سن')
268
+
269
+ if 'سن' in farm_database.columns:
270
+ farm_database['سن'] = convert_to_numeric(farm_database, 'سن')
271
+
272
+ if 'مساحت' in farm_database.columns:
273
+ farm_database['مساحت'] = convert_to_numeric(farm_database, 'مساحت')
274
+
275
+ if 'مساحت زیرمجموعه' in farm_database.columns:
276
+ farm_database['مساحت زیرمجموعه'] = convert_to_numeric(farm_database, 'مساحت زیرمجموعه')
277
+
278
  # ادغام داده‌ها بر اساس ستون مزرعه
279
  merged_data = pd.merge(farm_database, farm_coordinates, on='مزرعه', how='inner')
280
 
 
540
  display_metric_card("تعداد واریته‌ها", unique_varieties, "🌿")
541
 
542
  with col3:
543
+ # محاسبه میانگین سن با مدیریت خطا
544
+ try:
545
+ age_column = 'سن_x' if 'سن_x' in merged_data.columns else 'سن'
546
+ # تبدیل به عدد با مدیریت خطا
547
+ age_values = pd.to_numeric(merged_data[age_column], errors='coerce')
548
+ # محاسبه میانگین با نادیده گرفتن مقادیر NaN
549
+ avg_age = age_values.mean()
550
+ if pd.isna(avg_age):
551
+ display_metric_card("میانگین سن", "نامشخص", "📅")
552
+ else:
553
+ display_metric_card("میانگین سن", f"{avg_age:.1f} سال", "📅")
554
+ except Exception as e:
555
+ st.warning(f"خطا در محاسبه میانگین سن: {e}")
556
+ display_metric_card("میانگین سن", "نامشخص", "📅")
557
 
558
  with col4:
559
  if 'مساحت' in merged_data.columns:
560
+ try:
561
+ # تبدیل به عدد با مدیریت خطا
562
+ area_values = pd.to_numeric(merged_data['مساحت'], errors='coerce')
563
+ # محاسبه مجموع با نادیده گرفتن مقادیر NaN
564
+ total_area = area_values.sum()
565
+ if pd.isna(total_area):
566
+ display_metric_card("مساحت کل", "نامشخص", "📏")
567
+ else:
568
+ display_metric_card("مساحت کل", f"{total_area:.1f} هکتار", "📏")
569
+ except Exception as e:
570
+ st.warning(f"خطا در محاسبه مساحت کل: {e}")
571
+ display_metric_card("مساحت کل", "نامشخص", "📏")
572
  else:
573
  display_metric_card("تعداد کانال‌ها", len(merged_data['کانال'].unique()) if 'کانال' in merged_data.columns else "نامشخص", "🚿")
574
 
 
2063
  'user_id': list(range(1, 6)),
2064
  'username': ['admin', 'user1', 'user2', 'user3', 'user4'],
2065
  'name': ['مدیر سیستم', 'کاربر یک', 'کاربر دو', 'کاربر سه', 'کاربر چهار'],
2066
+ 'role': ['مدیر', 'کارشناس', 'کاربر', 'کاربر'],
2067
  'last_login': [
2068
  (datetime.now() - timedelta(hours=2)).strftime('%Y-%m-%d %H:%M'),
2069
  (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M'),