Esmaeilkiani commited on
Commit
288b61f
·
verified ·
1 Parent(s): 91e5f2b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -24
app.py CHANGED
@@ -6,13 +6,13 @@ import requests
6
  import json
7
  from datetime import datetime
8
 
9
- # تنظیمات صفحه
10
  st.set_page_config(page_title="تجزیه و تحلیل سری زمانی", layout="wide")
11
 
12
  # تابع برای خواندن داده‌ها
13
  @st.cache_data
14
  def load_data():
15
- # اینجا می‌توانید داده‌ها را از Hugging Face بارگیری کنید یا از یک فایل CSV استفاده کنید
16
  data = pd.read_json("tableConvert.com_w440rj.json")
17
  data['Date'] = pd.to_datetime(data['Date'] + ' ' + data['time'])
18
  data.drop(columns=['time'], inplace=True)
@@ -23,24 +23,29 @@ def get_weather_forecast(api_key, lat, lon):
23
  url = f"http://api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={api_key}&units=metric"
24
  response = requests.get(url)
25
  data = response.json()
26
- forecast = pd.DataFrame(data['list'])
27
- forecast['dt_txt'] = pd.to_datetime(forecast['dt_txt'])
28
- forecast = forecast[['dt_txt', 'main.temp']]
29
- forecast.rename(columns={'dt_txt': 'Date', 'main.temp': 'T[°C]'}, inplace=True)
30
- return forecast
 
 
 
 
 
31
 
32
- # بارگیری داده‌ها
33
  data = load_data()
34
 
35
  # صفحه اصلی
36
- st.title("تجزیه و تحلیل سری زمانی دما")
37
 
38
  # نمایش داده‌ها به صورت جدول
39
  st.subheader("داده‌ها")
40
  st.write(data)
41
 
42
- # فیلترهای سریع
43
- st.sidebar.subheader("فیلترها")
44
  start_date = st.sidebar.date_input("تاریخ شروع", data['Date'].min())
45
  end_date = st.sidebar.date_input("تاریخ پایان", data['Date'].max())
46
  filtered_data = data[(data['Date'] >= pd.to_datetime(start_date)) & (data['Date'] <= pd.to_datetime(end_date))]
@@ -49,35 +54,35 @@ filtered_data = data[(data['Date'] >= pd.to_datetime(start_date)) & (data['Date'
49
  st.subheader("داده‌های فیلتر شده")
50
  st.write(filtered_data)
51
 
52
- # نمودار خطی تغییرات دما
53
- st.subheader("نمودار خطی تغییرات دما")
54
  fig = px.line(filtered_data, x='Date', y='T[°C]', title='تغییرات دما در طول زمان')
55
  st.plotly_chart(fig)
56
 
57
- # هیستوگرام توزیع دما
58
- st.subheader("هیستوگرام توزیع دما")
59
- fig_hist = px.histogram(filtered_data, x='T[°C]', nbins=20, title='توزیع دما')
60
- st.plotly_chart(fig_hist)
61
 
62
- # تحلیل آماری
63
- st.subheader("تحلیل آماری")
64
  st.write(f"میانگین دما: {filtered_data['T[°C]'].mean():.2f} °C")
65
  st.write(f"حداقل دما: {filtered_data['T[°C]'].min()} °C")
66
  st.write(f"حداکثر دما: {filtered_data['T[°C]'].max()} °C")
67
  st.write(f"انحراف معیار دما: {filtered_data['T[°C]'].std():.2f}")
68
 
69
  # پیش‌بینی با استفاده از OpenWeatherMap API
70
- st.subheader("پیش‌بینی دما برای 5 روز آینده")
71
  api_key = "ed47316a45379e2221a75f813229fb46"
72
  lat = 31.534442
73
  lon = 48.724416
74
- forecast = get_weather_forecast(api_key, lat, lon)
75
- st.write(forecast)
76
 
77
  # نمودار پیش‌بینی
78
  st.subheader("نمودار پیش‌بینی دما")
79
- fig_forecast = px.line(forecast, x='Date', y='T[°C]', title='پیش‌بینی دما برای 5 روز آینده')
80
- st.plotly_chart(fig_forecast)
81
 
82
  # ذخیره گزارش
83
  st.subheader("ذخیره گزارش")
 
6
  import json
7
  from datetime import datetime
8
 
9
+ # تنظیمات اولیه
10
  st.set_page_config(page_title="تجزیه و تحلیل سری زمانی", layout="wide")
11
 
12
  # تابع برای خواندن داده‌ها
13
  @st.cache_data
14
  def load_data():
15
+ # اینجا می‌توانید داده‌ها را از Hugging Face بارگذاری کنید
16
  data = pd.read_json("tableConvert.com_w440rj.json")
17
  data['Date'] = pd.to_datetime(data['Date'] + ' ' + data['time'])
18
  data.drop(columns=['time'], inplace=True)
 
23
  url = f"http://api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={api_key}&units=metric"
24
  response = requests.get(url)
25
  data = response.json()
26
+ forecast = []
27
+ for item in data['list']:
28
+ forecast.append({
29
+ 'Date': datetime.fromtimestamp(item['dt']),
30
+ 'Temperature': item['main']['temp'],
31
+ 'Humidity': item['main']['humidity'],
32
+ 'Wind Speed': item['wind']['speed'],
33
+ 'Weather': item['weather'][0]['description']
34
+ })
35
+ return pd.DataFrame(forecast)
36
 
37
+ # بارگذاری داده‌ها
38
  data = load_data()
39
 
40
  # صفحه اصلی
41
+ st.title("تجزیه و تحلیل سری زمانی")
42
 
43
  # نمایش داده‌ها به صورت جدول
44
  st.subheader("داده‌ها")
45
  st.write(data)
46
 
47
+ # فیلترها
48
+ st.sidebar.header("فیلترها")
49
  start_date = st.sidebar.date_input("تاریخ شروع", data['Date'].min())
50
  end_date = st.sidebar.date_input("تاریخ پایان", data['Date'].max())
51
  filtered_data = data[(data['Date'] >= pd.to_datetime(start_date)) & (data['Date'] <= pd.to_datetime(end_date))]
 
54
  st.subheader("داده‌های فیلتر شده")
55
  st.write(filtered_data)
56
 
57
+ # نمودار خطی
58
+ st.subheader("نمودار خطی دما در طول زمان")
59
  fig = px.line(filtered_data, x='Date', y='T[°C]', title='تغییرات دما در طول زمان')
60
  st.plotly_chart(fig)
61
 
62
+ # هیستوگرام
63
+ st.subheader("هیستوگرام دما")
64
+ fig = px.histogram(filtered_data, x='T[°C]', nbins=20, title='توزیع دما')
65
+ st.plotly_chart(fig)
66
 
67
+ # تجزیه و تحلیل آماری
68
+ st.subheader("تجزیه و تحلیل آماری")
69
  st.write(f"میانگین دما: {filtered_data['T[°C]'].mean():.2f} °C")
70
  st.write(f"حداقل دما: {filtered_data['T[°C]'].min()} °C")
71
  st.write(f"حداکثر دما: {filtered_data['T[°C]'].max()} °C")
72
  st.write(f"انحراف معیار دما: {filtered_data['T[°C]'].std():.2f}")
73
 
74
  # پیش‌بینی با استفاده از OpenWeatherMap API
75
+ st.subheader("پیش‌بینی آب و هوا")
76
  api_key = "ed47316a45379e2221a75f813229fb46"
77
  lat = 31.534442
78
  lon = 48.724416
79
+ forecast_data = get_weather_forecast(api_key, lat, lon)
80
+ st.write(forecast_data)
81
 
82
  # نمودار پیش‌بینی
83
  st.subheader("نمودار پیش‌بینی دما")
84
+ fig = px.line(forecast_data, x='Date', y='Temperature', title='پیش‌بینی دما برای 5 روز آینده')
85
+ st.plotly_chart(fig)
86
 
87
  # ذخیره گزارش
88
  st.subheader("ذخیره گزارش")