Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -8,6 +8,7 @@ from content_creation import generate_tourism_article, extract_keywords
|
|
| 8 |
from content_analysis import analyze_content_readability, analyze_sentiment, improve_content
|
| 9 |
from media_generation import generate_chalet_image, create_image_prompt
|
| 10 |
from performance_analysis import analyze_content_performance, create_performance_charts, generate_sample_data
|
|
|
|
| 11 |
|
| 12 |
|
| 13 |
# إعداد الصفحة
|
|
@@ -233,7 +234,97 @@ elif choice == "تحليل الأداء":
|
|
| 233 |
|
| 234 |
elif choice == "إدارة البيانات":
|
| 235 |
st.subheader("إدارة مجموعات البيانات")
|
| 236 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 237 |
|
| 238 |
elif choice == "استهداف الجمهور":
|
| 239 |
st.subheader("استهداف الجمهور المناسب")
|
|
|
|
| 8 |
from content_analysis import analyze_content_readability, analyze_sentiment, improve_content
|
| 9 |
from media_generation import generate_chalet_image, create_image_prompt
|
| 10 |
from performance_analysis import analyze_content_performance, create_performance_charts, generate_sample_data
|
| 11 |
+
from data_management import load_tourism_datasets, create_chalet_dataset, filter_dataset_by_criteria, analyze_dataset
|
| 12 |
|
| 13 |
|
| 14 |
# إعداد الصفحة
|
|
|
|
| 234 |
|
| 235 |
elif choice == "إدارة البيانات":
|
| 236 |
st.subheader("إدارة مجموعات البيانات")
|
| 237 |
+
|
| 238 |
+
tab1, tab2, tab3 = st.tabs(["استكشاف البيانات", "تصفية البيانات", "تحليل البيانات"])
|
| 239 |
+
|
| 240 |
+
# تحميل مجموعة البيانات إذا لم تكن محملة بالفعل
|
| 241 |
+
if 'tourism_dataset' not in st.session_state:
|
| 242 |
+
with st.spinner("جاري تحميل البيانات..."):
|
| 243 |
+
st.session_state.tourism_dataset = load_tourism_datasets()
|
| 244 |
+
|
| 245 |
+
with tab1:
|
| 246 |
+
st.write("### استكشاف بيانات الشاليهات")
|
| 247 |
+
|
| 248 |
+
# عرض البيانات
|
| 249 |
+
df = st.session_state.tourism_dataset.to_pandas()
|
| 250 |
+
st.dataframe(df)
|
| 251 |
+
|
| 252 |
+
# معلومات إحصائية
|
| 253 |
+
st.write("### معلومات إحصائية")
|
| 254 |
+
st.write(f"عدد الشاليهات: {len(df)}")
|
| 255 |
+
st.write(f"متوسط السعر: {df['price'].mean():.2f} جنيه")
|
| 256 |
+
st.write(f"متوسط التقييم: {df['rating'].mean():.2f} من 5")
|
| 257 |
+
|
| 258 |
+
with tab2:
|
| 259 |
+
st.write("### تصفية البيانات حسب المعايير")
|
| 260 |
+
|
| 261 |
+
# معايير التصفية
|
| 262 |
+
col1, col2 = st.columns(2)
|
| 263 |
+
with col1:
|
| 264 |
+
location_filter = st.selectbox("الموقع:", ["", *df['location'].unique()])
|
| 265 |
+
audience_filter = st.selectbox("الجمهور المستهدف:", ["", *df['target_audience'].unique()])
|
| 266 |
+
|
| 267 |
+
with col2:
|
| 268 |
+
season_filter = st.selectbox("الموسم:", ["", *df['season'].unique()])
|
| 269 |
+
min_rating = st.slider("الحد الأدنى للتقييم:", 0.0, 5.0, 0.0, 0.1)
|
| 270 |
+
|
| 271 |
+
# تطبيق التصفية
|
| 272 |
+
if st.button("تصفية البيانات"):
|
| 273 |
+
criteria = {
|
| 274 |
+
'location': location_filter,
|
| 275 |
+
'target_audience': audience_filter,
|
| 276 |
+
'season': season_filter
|
| 277 |
+
}
|
| 278 |
+
|
| 279 |
+
# إزالة المعايير الفارغة
|
| 280 |
+
criteria = {k: v for k, v in criteria.items() if v}
|
| 281 |
+
|
| 282 |
+
# تصفية البيانات
|
| 283 |
+
filtered_dataset = filter_dataset_by_criteria(st.session_state.tourism_dataset, criteria)
|
| 284 |
+
|
| 285 |
+
# تصفية حسب التقييم (لا يمكن استخدامها مباشرة في filter_dataset_by_criteria)
|
| 286 |
+
filtered_df = filtered_dataset.to_pandas()
|
| 287 |
+
if min_rating > 0:
|
| 288 |
+
filtered_df = filtered_df[filtered_df['rating'] >= min_rating]
|
| 289 |
+
|
| 290 |
+
# عرض النتائج
|
| 291 |
+
st.write(f"تم العثور على {len(filtered_df)} شاليه مطابق للمعايير:")
|
| 292 |
+
st.dataframe(filtered_df)
|
| 293 |
+
|
| 294 |
+
with tab3:
|
| 295 |
+
st.write("### تحليل بيانات الشاليهات")
|
| 296 |
+
|
| 297 |
+
if st.button("تحليل البيانات"):
|
| 298 |
+
with st.spinner("جاري تحليل البيانات..."):
|
| 299 |
+
analysis = analyze_dataset(st.session_state.tourism_dataset)
|
| 300 |
+
|
| 301 |
+
# عرض التحليل
|
| 302 |
+
st.write(f"عدد الشاليهات: {analysis['count']}")
|
| 303 |
+
|
| 304 |
+
# توزيع المواقع
|
| 305 |
+
st.write("### توزيع المواقع")
|
| 306 |
+
location_df = pd.DataFrame({
|
| 307 |
+
'الموقع': list(analysis['locations'].keys()),
|
| 308 |
+
'العدد': list(analysis['locations'].values())
|
| 309 |
+
})
|
| 310 |
+
st.bar_chart(location_df.set_index('الموقع'))
|
| 311 |
+
|
| 312 |
+
# توزيع الجمهور المستهدف
|
| 313 |
+
st.write("### توزيع الجمهور المستهدف")
|
| 314 |
+
audience_df = pd.DataFrame({
|
| 315 |
+
'الجمهور': list(analysis['audience_distribution'].keys()),
|
| 316 |
+
'العدد': list(analysis['audience_distribution'].values())
|
| 317 |
+
})
|
| 318 |
+
st.bar_chart(audience_df.set_index('الجمهور'))
|
| 319 |
+
|
| 320 |
+
# توزيع المواسم
|
| 321 |
+
st.write("### توزيع المواسم")
|
| 322 |
+
season_df = pd.DataFrame({
|
| 323 |
+
'الموسم': list(analysis['season_distribution'].keys()),
|
| 324 |
+
'العدد': list(analysis['season_distribution'].values())
|
| 325 |
+
})
|
| 326 |
+
st.bar_chart(season_df.set_index('الموسم'))
|
| 327 |
+
|
| 328 |
|
| 329 |
elif choice == "استهداف الجمهور":
|
| 330 |
st.subheader("استهداف الجمهور المناسب")
|