# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# + [markdown] id="yoyfOXgpp6DR"
# -------

# + [markdown] id="gpP63v2qJWMh"
# #### importing  libraries

# + id="qntl_ZnTwM5C"
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# + [markdown] id="Dx_oPU_Xp6DS"
# <div style="direction:rtl"> 
# <h2>הקדמה</h2><br>
# </a> <br>
# הדאטה סט שבחרנו  מציג את הערכת רמות ההשמנה על נבדקים ממקסיקו, פרו וקולומביה, בהתבסס על הרגלי התזונה , הצריכה  ומצבם הגופני. <br>
# <br>
# הערות: <br>
#     <li> נתונים אלה נאספו באמצעות סקר, וחלק מהנתונים חושבו ע"י WEKA (אוסף אלגוריתמים של למידת מכונות) על מנת ליצור רשומות חדשות  
#     <li> הערכים בעלי מספר ספרות אחרי הנקודה הם הנתונים שחושבו על ידי המכונה, והערכים השלמים הם הנתונים המקוריים. 
#     <li> מדד ה-BMI אשר מורכב מהמשתנים גובה ומשקל, מסווג את האנשים לקבוצות המשקל השונות 
# </ul><br>
# <br>
# <a href="https://www.kaggle.com/ankurbajaj9/obesity-levels?select=ObesityDataSet_raw_and_data_sinthetic.csv">Link to the data source</a>
# <br>
# הנתונים נלקחו מהאתר הבא: 
# אנו קוראים את הנתונים ממאגר github
# </div>
#

# + [markdown] id="wltVopiCinCV"
# -------------------------------

# + [markdown] id="uOn1U4xfK9Je"
# <div style="direction:rtl"> 
# <h5>קריאת הקובץ</h5>
# </div>

# + id="uQ5ujBaHwM5H"
ob_df=pd.read_csv("https://raw.githubusercontent.com/Lirazsitru/DS_FinalProject2021/main/ObesityDataSet_raw_and_data_sinthetic.csv")

# + [markdown] id="fCv2oYWisTd1"
# <div style="direction:rtl"> 
# <h5>הצגת חלק מהמידע המחושב ע"י המכונה </h5>
# </div>

# + id="4l90wnM1YX_B" outputId="1d9aecf7-988a-48df-a45e-020c41ba1419"
ob_df.tail(3)

# + [markdown] id="TCHSPRROiWgl"
#
# <div style="direction:rtl"> 
# <h5>חיפוש אחר ערכים חסרים ובדיקת סוגי העמודות :</h5>
# </div>

# + colab={"base_uri": "https://localhost:8080/", "height": 576} id="kUNGqJdjhGBh" outputId="344c1bb9-cb3f-4c89-a8b2-48274cdbea92"
data_fix=ob_df.isnull().sum().to_frame().rename(columns={0: "Nan values"})
dtype=ob_df.dtypes.to_dict()
data_fix["Dtype"]=dtype.values()
data_fix

# + [markdown] id="wZmaKm_lYX_C"
# ----------

# + [markdown] id="P019flhVp6DT"
# <div style="direction:rtl"> 
# <h2>1. הכנת הדאטה</h2>
#     <h5> סידור וארגון הדאטה: </h5>
#     1. טיפול בשמות עמודות <br>
#     2. טיפול בסוגי דאטה <br>
#     3. עיגול ערכים <br>
#     4. המרת עמודות מסויימות לערכים בינאריים  <br>
#     5. ארגון העמודות במערך הנתונים <br>
# </div>
#
#
#

# + id="au22JB-NHseg"
if ob_df.columns[6]=='FCVC':
   # (1) Changing the column names :

  col_change={'FAVC':'Consume_high_calorie','FCVC':'Consumption_of_vegetables','NCP':'Num_of_meals','CAEC':'Consumption_of_food_between_meals','CH2O':'Consumption_of_water','SCC':'Calories_monitoring','FAF':'Pysical_activity_frequency','TUE':'Time_using_technology_devices','MTRANS':'Transportation_used','CALC':"Alcohol_consume", "NObeyesdad":"BMI"}   
  ob_df.rename(columns = col_change, inplace = True)

  # (2) Converting object/text variables to category variables:
  
  columns = ["Gender", "family_history_with_overweight", "Consume_high_calorie", "Consumption_of_food_between_meals", "SMOKE", "Calories_monitoring", "Alcohol_consume", "Transportation_used", "BMI"]
  for col in columns:
      ob_df[col] = ob_df[col].astype('category')
  ob_df[['Age','Consumption_of_vegetables','Num_of_meals']] = ob_df[['Age','Consumption_of_vegetables','Num_of_meals']].astype(int)    

  
  # (3)Rounding Height and Weight values:

  ob_df[['Height','Weight','Time_using_technology_devices']]=ob_df[['Height','Weight','Time_using_technology_devices']].round(2)
  ob_df[['Consumption_of_water']]=ob_df[['Consumption_of_water']].round(1)

  #(4) Converting relevant column to binary :
  yes_no=["family_history_with_overweight","Consume_high_calorie",'SMOKE',"Calories_monitoring"]
  for i in yes_no:
    ob_df[""+i+""].replace(('yes', 'no'), (1, 0), inplace=True)

  #(5) Organize the columns : 
  ob_df=ob_df[['Gender', 'Age', 'Height', 'Weight', 'BMI','Consumption_of_vegetables','Num_of_meals','Consumption_of_water','Pysical_activity_frequency','Time_using_technology_devices',
            'Consumption_of_food_between_meals','Alcohol_consume', 'Transportation_used','family_history_with_overweight','Consume_high_calorie','SMOKE','Calories_monitoring']]

# + [markdown] id="Z-Fi8m2UsIJF"
#
# <div style="direction:rtl"> 
# <h5>נסתכל על הנתונים לאחר השינוי</h5>
# </div>

# + colab={"base_uri": "https://localhost:8080/", "height": 162} id="QGSZEgIlsQ0i" outputId="64e26547-2712-4658-f080-bace4b20cee1"
ob_df.tail(3)

# + [markdown] id="GpgCQkRwp6DX"
# --------------------

# + [markdown] id="4a6kIJXgp6DX"
# <div style="direction:rtl"> 
# <h2>2. הבנת הדאטה</h2>
# </div>

# + colab={"base_uri": "https://localhost:8080/", "height": 421} id="4s0SAkVfSqWG" outputId="45db832a-8a8d-4ce9-cd50-6b9f0749f0d3"
labels = ob_df.Gender.value_counts().index
sizes = ob_df.Gender.value_counts().values
colors = ["#7FB3D5","#ffb3b3"]
explode = (0.05,0) 
 
plt.figure(figsize=(7,7))
plt.suptitle("Number of Males and Females in the dataset",y=0.9, size=18, weight='bold')
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90)

plt.show()

# + id="zw79qBVWYX_E" outputId="638a98e4-341c-4a7d-ce66-f7854e3a7f9a"
plt.hist(ob_df["Age"],color="#7FB3D5")
plt.suptitle("The ages in the data ", size=18, weight='bold')
plt.show()

# + [markdown] id="rLTSvoUDYX_E"
# <div style="direction:rtl"> 
# אנו רואים שרוב הנשאלים שלנו הם צעירים בגילאי 20-30 <br>
#  <br> 
# </div>
#
#
#
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 462} id="Rru0W2jCExtJ" outputId="30012b4b-1e17-45d4-a2d6-86d12e57845c"
labels = ob_df.BMI.value_counts().index
sizes = ob_df.BMI.value_counts().values
colors=["#EC7063","#EC7063","#EC7063","#EC7063","#EC7063","#ABEBC6"]
explode=[0,0,0,0,0,0.2,0]

plt.figure(figsize=(6,6))
plt.suptitle("The percentage of participants whose weight is normal", size=18, weight='bold')
plt.pie(sizes, explode=explode,labels=labels,startangle=-200, colors=colors,autopct="%1.1f%%",textprops={'fontsize': 14})

plt.show()

# + [markdown] id="Zg9Yptn-2fdI"
# <div style="direction:rtl"> 
# בתרשימים המוצגים מעלה ראינו שהדאטה מחולק באופן כמעט שווה בין גברים ונשים, 50.6% גברים מול 49.4% נשים <br> 
# אחוז האנשים שנמצאים בטווח המשקל הנורמלי עומד על 13.6% מכלל הנבדקים <br>
# נתון זה הינו נתון מדאיג ומעורר תהיות בנוגע לאורח החיים של הנבדקים במדינות אלו <br> 
# </div>
#
#
#
#
#
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 409} id="u_ZUoJStWKk6" outputId="34e153e3-65c2-4706-fd80-8a71337cca36"
plt.figure(figsize=(14,6))
sns.set_style("whitegrid")
sns.countplot(x='BMI',data=ob_df,hue='Gender',order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'],palette=["#ffb3b3","#7FB3D5"])
plt.ylabel('Count',fontsize=18)
plt.title('BMI groups : Male vs Female',fontsize=18)
plt.show()

# + [markdown] id="iV6Db_v8_-Zy"
# <div style="direction:rtl"> 
# לאחר שקיבלנו תמונה כללית על חלוקת הדאטה לפי מגדר וסוג השמנה, <br> 
# ניתן לראות שיש הבדל מהותי בין גברים לנשים בהשמנת יתר מסוג 2 לבין סוג 3:  <br>
# <li> אין גברים המשתייכים להשמנת יתר מסוג 3 בקרב הנבדקים <br>
# <li> מספר הנשים המשתייכות להשמנת יתר מסוג 2 הוא הנמוך ביותר מכלל קבוצות ההשמנה, לעומת מספר הגברים המשייכים לקבוצה זו שהוא הגבוהה ביותר <br>
# <li> מספר הנשים המשתייכות להשמנת יתר מסוג 3 הוא הגבוהה ביותר מכלל קבוצות ההשמנה, לעומת מספר הגברים המשתייכים לקבוצה זו שהוא הנמוך ביותר <br>
#  <br>
#  לסיכום, ניתן לראות שיש היפוך בין הנשים לגברים בהשמנת יתר מסוג 2 וסוג 3 <br> 
# </div>
#
#
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 531} id="tZIq-nqJp6DY" outputId="185aa18d-b305-4d1f-b8af-504ed1f5d06c"
type_2_3=ob_df[(ob_df.BMI=='Obesity_Type_II')|(ob_df.BMI=='Obesity_Type_III')]
plt.figure(figsize=(16,8))
plt.title('Pysical activity : Male vs Female',fontsize=30)
sns.boxplot(x="Gender", y="Pysical_activity_frequency", data=type_2_3,palette=["#ffb3b3","#7FB3D5"])
sns.swarmplot(x="Gender", y="Pysical_activity_frequency", color=".20" ,data=type_2_3, size=3)
plt.show()

# + [markdown] id="DvOXhWrmJ6Oe"
# <div style="direction:rtl"> 
# ניתן לראות מהסתכלות על החציון, שתדירות הפעילות הספורטיבית אצל גברים גבוהה יותר מאשר אצל נשים, <br> 
# כמו כן, פיזור הנקודות אצל נשים בחלק התחתון של התרשים הוא גדול יותר, דבר שמחזק את זה שתדירות הפעילות הספורטיבית של נשים הינה נמוכה יותר    <br> 
# ולכן דבר זה יכול להסביר מדוע גברים משתייכים להשמנת יתר מסוג 2 ולא לסוג 3 שאליו משתייכות רק נשים <br>
# </div>
#

# + [markdown] id="yoKrb9KVYX_G"
# ----
#

# + [markdown] id="-x-eXQaQAmfm"
# <div style="direction:rtl"> 
#     <h3>  הסבר ראשון אפשרי עבור ההבדל בין קבוצות ה-BMI השונות </h3>
# </div>
#
#

# + [markdown] id="CfxV4S3zI2UL"
# <div style="direction:rtl"> 
# מהו BMI? <br> 
# BMI הוא מדד מסת הגוף <br>
# מדד זה נותן הערכה כמותית האם אדם נמצא במשקל תקין, בעודף משקל או בתת משקל <br>
# המדד מחושב באמצעות נתוני הגובה (במטרים) והמשקל (בק"ג) <br> 
# </div>

# + colab={"base_uri": "https://localhost:8080/", "height": 529} id="SwhW2zuEavNi" outputId="97787ddc-3b55-458e-c970-cf07c1505b28"
sns.catplot(x="family_history_with_overweight", y="Weight", hue="BMI", hue_order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'], data=ob_df,height=7)
plt.suptitle('The connection between family history with overweight and BMI', size=17, weight='bold')
plt.show()

# + [markdown] id="yqqwnpwHGNAt"
# <div style="direction:rtl">    
#  ניתן לראות שבהכרח יש קשר בין היסטוריית ההשמנה המשפחתית לבין סוג ההשמנה הנוכחי של הנבדקים בקבוצות הבאות: <br>
#  <li> Overweight_Level_II <br>
#  <li> Obesity_Type_I <br>
#  <li> Obesity_Type_II <br>
#  <li> Obesity_Type_III <br>
# </div>
#  

# + id="7re9a2nPYX_H"
fat=ob_df[(ob_df.BMI!='Normal_Weight')&(ob_df.BMI!='Insufficient_Weight')]
normal=ob_df[ob_df.BMI=='Normal_Weight']

# + colab={"base_uri": "https://localhost:8080/"} id="OG82_DjAI2Sl" outputId="cdfa994b-7742-493e-f239-41316a5f6c13"
chance = (1-fat[fat.family_history_with_overweight==1].shape[0]/fat.shape[0])*100
round2 = "{:.2f}".format(chance)
print(("הסיכוי שאדם בעל היסטוריית השמנה משפחתית ישתייך לקבוצת משקל נורמלי עומד על:"),round2)

# + [markdown] id="JSrIfLi4YX_I"
# -----

# + [markdown] id="dWdKL89Ds9fo"
# <div style="direction:rtl"> 
#     <h3> הסבר שני אפשרי עבור ההבדל בין קבוצות ה-BMI השונות </h3>
# </div>
#
#
#  

# + id="w8qZr2_TYX_I" outputId="7ad20eb6-f713-4e9b-beec-6a95b2c0d1e7"
plt.figure(figsize=(15,8))
sns.countplot(x='BMI',data=ob_df ,palette=["#EC7063","#ABEBC6"],hue='Consume_high_calorie',order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'])
plt.ylabel('Count',fontsize=12)
plt.suptitle('Consume high calories', size=18, weight='bold')
plt.show()

# + [markdown] id="kELLipxf9N9H"
#
# <div style="direction:rtl"> 
# מהתבוננות בגרף ניתן לראות כי כלל קבוצות ה-BMI צורכות מאכלים עתירי קלוריות בתדירויות גבוהות. <br> 
# דבר היכול להעיד שצריכת מאכלים עתירי קלוריות בתדירויות גבוהות היא לא הסיבה להבדלים בהשתייכות לקבוצות ה - BMI <br> 
# לכן, בדקנו עוד אפשרות להבדל בשיוך הנבדקים לקבוצות ה - BMI השונות בעזרת גרף ניטור קלוריות  <br>
# </div>
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 555} id="fdhCKLVuTvbv" outputId="fedb9e18-dcab-47e9-8fe0-b3954dd86331"
plt.figure(figsize=(15,8))
sns.countplot(x='BMI',data=ob_df ,palette=["#EC7063","#ABEBC6"],hue='Calories_monitoring',order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'])
plt.ylabel('Count',fontsize=12)
plt.suptitle('Calories monitoring', size=18, weight='bold')
plt.show()

# + [markdown] id="ulTDR6hUYX_J"
# <div style="direction:rtl"> 
# הגרף מציג את ניטור הקלוריות על פי קבוצות ה-BMI השונות,  <br> 
# ניתן לראות שהניטור אחר קלוריות קיים רק בחלק מן הקבוצות ושרמת הניטור הגבוהה ביותר היא בקבוצת Overweight_Level_I 
#  <br> 
# השערה שיכולה להסביר דבר זה הינה שקבוצה זו נמצאת בטווח שבין Overweight_Level_II לבין משקל תקין <br>
# השערה זו יכולה להעיד על זה שלנבדקים מקבוצה זו יש מוטיבציה לחזור למשקלם התקין לעומת קבוצות עם BMI גבוהה יותר שככה"נ התרגלו למשקלם   
# </div>
#

# + [markdown] id="yoPDUqUiYX_K"
# -----------------

# + [markdown] id="0YmnCgOzYX_K"
# <div style="direction:rtl"> 
#     <h3> בדיקת קורלציית ספירמן עבור גברים ונשים </h3>
# </div>
#
#
#  

# + id="VBTo4xlWon3B"
##--> creating separated Df for male and female :

female=ob_df[ob_df.Gender=="Female"]
male=ob_df[ob_df.Gender=="Male"]

## --> creating spearman correlation : 
male_corr=male.corr("spearman")
female_corr=female.corr("spearman")

# + colab={"base_uri": "https://localhost:8080/", "height": 675} id="DQPnnAb3oZBY" outputId="14335675-896b-4e02-f78a-511c4544cd7a"
fig,ax=plt.subplots(1,2,figsize=(25,8))
plt.figure(figsize=(12,10))
sns.heatmap(male_corr,annot=True,square=True,center=0,vmin=-1,vmax=1,cmap='BrBG',linewidths=5,ax=ax[0])
ax[0].set_title('Heatmap for male',fontsize=24)
sns.heatmap(female_corr,annot=True,square=True,center=0,vmin=-1,vmax=1,cmap='coolwarm',linewidths=5,ax=ax[1])
ax[1].set_title('Heatmap for female',fontsize=24)
plt.show()

# + [markdown] id="xua_N0YLYX_L"
# <div style="direction:rtl">    
# מפת החום הראשונה מציגה את הקורלציות אצל הגברים ומפת החום השנייה מציגה את הקורלציות אצל הנשים. <br>
# הגוון של הצבע מעיד על חוזק הקורולציה וניתן לראות שהקורלציה הכי חזקה היא גובה ומשקל. <br> 
# </div>

# + [markdown] id="diqk0U98YX_L"
#
#
# <div style="direction:rtl"> 
# לאחר שלא מצאנו קשרים חזקים , הדבר הבא שמתבקש לבדוק הוא האם יש קשר התנהגותי בין האנשים שנמצאים תחת אותה קבוצת   BMI 
#  <br>    
# </div>

# + id="a7dXfiYOYX_L" outputId="5c3f0482-c847-49ff-d07a-fa1eb10a41d6"
ob_df.groupby("BMI").corr()

# + [markdown] id="k-2aJh1ZYX_L"
# <div style="direction:rtl">    
# לאחר התבוננות במספרים ובקשרים שבטבלה ומכיוון שלא נמצאו ממצאים מספיק מעניינים שחידשו את מה שגילינו עד כה, התקבלה החלטה להמשיך לנתח את הדאטה כרגיל <br> <br> 
# </div>
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 431} id="vIZtchcvi4F1" outputId="2732ef75-b836-4deb-feaa-537ea9c7ea34"
plt.figure(figsize=(10,6))
sns.scatterplot(data=ob_df, x="Weight", y="Height", hue="BMI",hue_order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'])
plt.suptitle('Group affiliation by weight and height', size=18, weight='bold')

plt.show()

# + [markdown] id="hQyuaCm0JhM5"
# <div style="direction:rtl">  
#  הגרף מציג השתייכות לקבוצות ה-BMI השונות לפי המדדים המרכיבים אותן שהם משקל וגובה <br>
# ניתן לראות שהקבוצות מוצגות כקווים עולים, בעלי שיפוע חיובי  <br> 
# </div>
#

# + [markdown] id="y32Nk-VSYX_M"
# <div style="direction:rtl">  
# חיפוש אחר קורלציות חזקות נוספות עבור נשים וגברים:
# </div>
#
#

# + colab={"base_uri": "https://localhost:8080/", "height": 236} id="pz0lkZdSCBJS" outputId="995ca7ef-67a4-4d19-a093-ef2fa9bd90f3"
male_max=male_corr.unstack().sort_values(ascending=False).drop_duplicates()[1:].to_frame()[:2]
female_max=female_corr.unstack().sort_values(ascending=False).drop_duplicates()[1:][:2].to_frame()

display(male_max.rename(columns={0: "Spearman corr"}).style.set_caption("Men max correlation").set_table_styles([{'selector': 'caption','props': [('color', 'black'),('font-size', '16px')]}]))
print('\n\n')
display(female_max.rename(columns={0: "Spearman corr"}).style.set_caption("Female max correlation").set_table_styles([{'selector': 'caption','props': [('color', 'black'),('font-size', '16px')]}]))

# + [markdown] id="7UTVWURYyzo8"
# <div style="direction:rtl">  
# מהקורלציות המוצגות ניתן לראות כי משקל הנשים מושפע מההיסטוריה המשפחתית שלהם, בשונה ממשקל הגברים שמושפע מהגיל שלהם
# </div>
#

# + [markdown] id="vw6WFQL0p6Da"
# ---------------

# + [markdown] id="qNrJfyYkIkZg"
# <div style="direction:rtl"> 
# <h2> חיזוי תוחלת חיים </h2>
# </div>

# + [markdown] id="xZEDWWpoYX_O"
# <div style="direction:rtl">  
#  ה - BMI הינו מדד אשר מספק כלי נוח להבנה של סיכונים בריאותיים אפשריים. <br>
#  ה- BMI אינו מספק תמונה מלאה ומדוייקת של כלל הגורמים אשר משפיעים על המצב הבריאותי של הנבדק <br>  
# לכן, הסתמכנו על מחקרים אשר חוזים את תוחלת חייו של אדם לפי ההרגלים שלו ובנינו נוסחה שתחשב זאת על מנת לקבל תמונה עתידית של מצבו הבריאותי <br> 
# </div> 
#

# + id="UzD30usSYX_O"
# The impact of smoking,alcohol, diet, physical activityand stress on health and life expectancy.

# https://www.ices.on.ca/flip-publication/seven-years/files/assets/basic-html/index.html#1

# + id="UAXn8nniYX_O" outputId="a8d44cfa-ba53-4781-d18c-2a77abc9a9cb"
data = {'שאלה':['SMOKE', 'Alcohol_consume', 'Consume_high_calorie', 'Pysical_activity_frequency','BMI','BMI','BMI','BMI'],
        'תשובה':["yes","yes","yes","when frequency smaller than 1","Overweight_Level_I+II","Obesity_Type_I+II","Obesity_Type_III","Insufficient_Weight"],
          'ההשפעה על אורך החיים בשנים':[-6,-1,-1,-1,-2,-4,-6,-4]}
df = pd.DataFrame(data)
df

# + id="IcS-0IFIfLXM"
ob_df["life_ex"]="0"

# + id="X3-MB2nFxkvD"
# mean life expentency:
# from- https://www.worldometers.info/demographics/life-expectancy/#:~:text=Countries%20ranked%20by%20life%20expectancy%20%20%20,%20%2082.42%20%2060%20more%20rows%20
#ממוצעי הנשים והגברים נלקחו מהאתר
female_mean= 79.62
male_mean= 74.22


# + [markdown] id="bORYuBleYX_P"
# <div style="direction:rtl"> 
# לאחר שלקחנו את ממוצע תוחלת החיים של נשים וגברים במדינות אלו, בנינו נוסחא שחוזה תוחלת חיים של בנאדם לפי מספר משתנים: <br>
# עישון, צריכת אלכוהול, צריכת מאכלים עתירי קלוריות, תדירות פעילות ספורטיבית וקבוצת ה-BMI  שהוא משתייך אליה <br>
# <a href="https://www.projectbiglife.ca/life-expectancy-calculator">החישוב נלקח מהאתר בקישור הבא</a> <br>
# לפי אורח החיים של הנבדק נוכל לחזות את תוחלת החיים העתידית שלו <br>  
# </div>

# + id="D_Bv8jnmgdMr"
list1=[]
life_exp=0
for i in range(0,2111):
    if ob_df.iloc[i,:].Gender=='Female':
      life_exp=female_mean
    else:
      life_exp=male_mean
    if ob_df.iloc[i,:].SMOKE==1:
      life_exp-= 6
    if ob_df.iloc[i,:].Alcohol_consume=='Frequently' or ob_df.iloc[i,:].Alcohol_consume=='Always':
      life_exp-=1
    if ob_df.iloc[i,:].Consume_high_calorie==1:
      life_exp-=1
    if ob_df.iloc[i,:].Pysical_activity_frequency<= 1.00:
      life_exp-=1
    if ob_df.iloc[i,:].BMI=='Overweight_Level_I' or ob_df.iloc[i,:].BMI=='Overweight_Level_II' :
      life_exp-=2
    if ob_df.iloc[i,:].BMI=='Obesity_Type_I' or ob_df.iloc[i,:].BMI=='Obesity_Type_II' :
      life_exp-=4
    if ob_df.iloc[i,:].BMI=='Obesity_Type_III' :   
      life_exp-=6
    if ob_df.iloc[i,:].BMI=='Insufficient_Weight' :  
      life_exp-=4
    list1.append(life_exp)

ob_df["life_ex"]=list1


# + id="lPdp_mlGhJNC"
ob_df=ob_df[['Gender', 'Age', 'Height', 'Weight', 'BMI','life_ex','Consumption_of_vegetables','Num_of_meals','Consumption_of_water',
             'Pysical_activity_frequency','Time_using_technology_devices','Consumption_of_food_between_meals',
             'Alcohol_consume', 'Transportation_used','family_history_with_overweight','Consume_high_calorie','SMOKE','Calories_monitoring']]

# + colab={"base_uri": "https://localhost:8080/", "height": 229} id="rUUaX8BZyCoJ" outputId="d530ad7f-8861-4a02-f934-52968ec41e01"
plt.figure(figsize=(12,8))
sns.boxplot(x='BMI', y='life_ex', data=ob_df,hue='Gender',order=['Insufficient_Weight','Normal_Weight','Overweight_Level_I','Overweight_Level_II' ,
    'Obesity_Type_I','Obesity_Type_II','Obesity_Type_III'],palette=["#ffb3b3","#7FB3D5"])
plt.suptitle('Predicting life expectancy by groups', size=18, weight='bold')
plt.show()

# + [markdown] id="ydBbyrXwYX_P"
# <div style="direction:rtl">  
# בגרף זה מוצגות קבוצות ה-BMI השונות ותוחלת החיים הצפוייה לכל קבוצה <br>
# <br>
#  ניתן לראות שבכל קבוצת BMI תוחלת החיים של הנשים גבוהה יותר מאשר תוחלת החיים של הגברים <br>
# </div>
#

# + colab={"base_uri": "https://localhost:8080/", "height": 229} id="hiRl1ORt5cil" outputId="7b7137fd-6289-4981-a9ab-8e29f84a26bb"
##--> creating separated Df for male and female :

female_n=ob_df[ob_df.Gender=="Female"]
male_n=ob_df[ob_df.Gender=="Male"]

## --> creating spearman correlation : 
male_corr_n=male_n.corr("spearman")
female_corr_n=female_n.corr("spearman")

# + colab={"base_uri": "https://localhost:8080/", "height": 246} id="qCrrlTwk68-t" outputId="1aa09349-3d2d-4e1e-e22a-247962e7800f"
# Let's find the strongest correlation for men and female : 
male_max_n=male_corr_n.unstack().sort_values(ascending=True).drop_duplicates()[:].to_frame()[:2]
female_max_n=female_corr_n.unstack().sort_values(ascending=True).drop_duplicates()[:][:2].to_frame()

display(male_max_n.rename(columns={0: "Spearman corr"}).style.set_caption("Male max correlation").set_table_styles([{'selector': 'caption','props': [('color', 'black'),('font-size', '16px')]}]))
print('\n\n')
display(female_max_n.rename(columns={0: "Spearman corr"}).style.set_caption("Female max correlation").set_table_styles([{'selector': 'caption','props': [('color', 'black'),('font-size', '16px')]}]))

# + [markdown] id="olvksb5hLmdO"
#
#                                      
#
#
#                                      

# + [markdown] id="-DlOtqEoYX_Q"
# <div style="direction:rtl"> 
# <h3> סיכום והצגת המסקנות </h3>
#     1.  ראינו שהסיכוי של אדם בעל היסטוריית השמנה משפחתית להשתייך לקבוצות ההשמנה מסוג  Overweight_Level_II והילך הינו גבוה  <br>
#     2. ראינו שצריכת מאכלים עתירי קלוריות היא לאו דווקא הסיבה להשתייכות לקבוצות בעלי BMI  גבוה <br>
#     3. ראינו שניטור הקלוריות הגבוה ביותר נעשה ע"י קבוצת Overweight_Level_I  <br>
#     השערה שיכולה להסביר דבר זה הינה שקבוצה זו נמצאת בטווח שבין קבוצת Overweight_Level_II לבין קבוצת משקל תקין. <br> השערה זו יכולה להעיד על זה שלנבדקים מקבוצה זו יש מוטיבציה לחזור למשקל התקין לעומת נבדקים מקבוצות BMI עם משקל גבוהה יותר שככה"נ התרגלו למשקלם 
#    <br>
#     4. ראינו שתוחלת החיים של נשים גבוהה יותר משל גברים למרות שהן עושות פעילות ספורטיבית בתדירות נמוכה יותר ושרק הן משתייכות לקבוצת ההשמנה החמורה ביותר (Obesity_Type_III)   <br>
#     לאחר חיפושים מעמיקים באינטרנט מצאנו באתר "מכון דוידסון" שההסבר לכך הוא ככל הנראה ביולוגי וקשור להורמון הנשי אך עוד לא נמצא ההסבר החד משמעי לתשובה זו <br>
#     5. ראינו שנבדקים אשר משתייכים לקבוצות משקל החריגות - תת משקל, ושלושת הרמות של השמנת יתר הם בעלי צפי לתוחלת חיים נמוכה יותר <br>
#     6. ייתכן שהסבר נוסף לכך שלא ראינו הבדלים משמעותיים בהתנהגויות של הנבדקים מכלל הקבוצות נובע מכך שרוב הנבדקים הינם צעירים, אשר לרוב  פועלים ע"פ הסתכלות וחשיבה בטווח הקצר לעומת מבוגרים
# </div>
#
#
#

StarcoderdataJupyterScriptsDedupFiltered