├── 09_voice-bot-flask ├── 67b4722c-6e09-43e9-91a9-55bda94fb288.wav ├── app.py └── templates │ └── index.html ├── 06_diabetese_prediction ├── requirements.txt ├── svm_model.pkl ├── template │ ├── show.html │ └── home.html ├── main.py ├── diabetes.csv └── Pima_Nulls.ipynb ├── 04_House-Price-Predictor ├── requirements.txt ├── .DS_Store ├── model.pkl ├── static │ └── background.jpg ├── Data │ └── House_Price.json ├── model.py ├── app.py ├── templates │ └── index.html └── model.ipynb ├── 08_wordcloud-flask ├── .DS_Store ├── uploads │ ├── wordcloud.png │ └── environmental_sustainability.pdf ├── __pycache__ │ ├── app.cpython-311.pyc │ └── app1.cpython-311.pyc ├── environmental sustainability.pdf ├── templates │ ├── result.html │ └── index.html └── app.py ├── 05_tips ├── tip_predictor_model.pkl ├── app.py ├── model.py └── templates │ ├── results.html │ └── index.html ├── 07_test2speech-flask ├── .DS_Store ├── app.py └── templates │ └── index.html ├── 01_basic_app ├── __pycache__ │ └── app.cpython-311.pyc └── app.py ├── 03_image_generation_app ├── generated image.png ├── templates │ └── index.html └── app.py ├── 02_eda_app ├── templates │ └── index.html └── app.py └── ReadMe.md /09_voice-bot-flask/67b4722c-6e09-43e9-91a9-55bda94fb288.wav: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06_diabetese_prediction/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.2.5 2 | numpy==1.26.4 3 | pandas==2.2.1 4 | scikit_learn==1.4.1.post1 5 | -------------------------------------------------------------------------------- /04_House-Price-Predictor/requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.2.5 2 | numpy==1.26.4 3 | pandas==2.2.1 4 | scikit_learn==1.4.1.post1 5 | -------------------------------------------------------------------------------- /08_wordcloud-flask/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/.DS_Store -------------------------------------------------------------------------------- /05_tips/tip_predictor_model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/05_tips/tip_predictor_model.pkl -------------------------------------------------------------------------------- /07_test2speech-flask/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/07_test2speech-flask/.DS_Store -------------------------------------------------------------------------------- /04_House-Price-Predictor/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/04_House-Price-Predictor/.DS_Store -------------------------------------------------------------------------------- /04_House-Price-Predictor/model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/04_House-Price-Predictor/model.pkl -------------------------------------------------------------------------------- /06_diabetese_prediction/svm_model.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/06_diabetese_prediction/svm_model.pkl -------------------------------------------------------------------------------- /08_wordcloud-flask/uploads/wordcloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/uploads/wordcloud.png -------------------------------------------------------------------------------- /01_basic_app/__pycache__/app.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/01_basic_app/__pycache__/app.cpython-311.pyc -------------------------------------------------------------------------------- /03_image_generation_app/generated image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/03_image_generation_app/generated image.png -------------------------------------------------------------------------------- /04_House-Price-Predictor/static/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/04_House-Price-Predictor/static/background.jpg -------------------------------------------------------------------------------- /08_wordcloud-flask/__pycache__/app.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/__pycache__/app.cpython-311.pyc -------------------------------------------------------------------------------- /08_wordcloud-flask/__pycache__/app1.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/__pycache__/app1.cpython-311.pyc -------------------------------------------------------------------------------- /08_wordcloud-flask/environmental sustainability.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/environmental sustainability.pdf -------------------------------------------------------------------------------- /08_wordcloud-flask/uploads/environmental_sustainability.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AammarTufail/flask_webapp_development_series/main/08_wordcloud-flask/uploads/environmental_sustainability.pdf -------------------------------------------------------------------------------- /02_eda_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Iris Dataset EDA 5 | 6 | 7 |

Exploratory Data Analysis of the Iris Dataset

8 | 9 | 10 | -------------------------------------------------------------------------------- /04_House-Price-Predictor/Data/House_Price.json: -------------------------------------------------------------------------------- 1 | { 2 | "Area(in sq. ft)":{"0":1000,"1":1200,"2":1500,"3":1800,"4":2000,"5":2300,"6":2500,"7":2700,"8":3000,"9":3200}, 3 | "Price(in Rs.)" : {"0":1500000,"1":1800000,"2":2250000,"3":2700000,"4":3000000,"5":3450000,"6":3750000,"7":4050000,"8":4500000,"9":4800000} 4 | } -------------------------------------------------------------------------------- /08_wordcloud-flask/templates/result.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Word Cloud Result 5 | 6 | 7 |

Word Cloud Result

8 | Word Cloud
9 | Download Word Cloud 10 | 11 | 12 | -------------------------------------------------------------------------------- /04_House-Price-Predictor/model.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from sklearn.linear_model import LinearRegression 3 | import pickle 4 | df=pd.read_json('Data/House_Price.json') 5 | x=df['Area(in sq. ft)'].values.reshape(-1,1) 6 | y=df['Price(in Rs.)'].values.reshape(-1,1) 7 | lin=LinearRegression() 8 | lin.fit(x,y) 9 | pickle.dump(lin,open('model.pkl','wb')) 10 | 11 | -------------------------------------------------------------------------------- /01_basic_app/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) # create an instance of the Flask class 4 | 5 | @app.route('/') # route() decorator to tell Flask what URL should trigger our function 6 | 7 | def hello_world(): 8 | return 'Hello, World! How are you?' 9 | 10 | if __name__ == '__main__': 11 | app.run(debug=True, ) # run the application -------------------------------------------------------------------------------- /08_wordcloud-flask/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Word Cloud Generator 5 | 6 | 7 |

Upload a file to generate a word cloud

8 |
9 |
10 | 11 |
15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /04_House-Price-Predictor/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask,render_template,request 2 | import pickle 3 | import numpy as np 4 | app = Flask('__name__') 5 | model=pickle.load(open('model.pkl','rb')) 6 | 7 | @app.route('/') 8 | def home(): 9 | return render_template('index.html') 10 | 11 | @app.route('/predict',methods=["POST"]) 12 | def predict(): 13 | feature=[int(x) for x in request.form.values()] 14 | feature_final=np.array(feature).reshape(-1,1) 15 | prediction=model.predict(feature_final) 16 | return render_template('index.html',prediction_text='Price of House will be Rs. {}'.format(int(prediction))) 17 | 18 | if(__name__=='__main__'): 19 | app.run(debug=True) 20 | 21 | -------------------------------------------------------------------------------- /03_image_generation_app/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DALL·E 3 Image Generator app by Codanics 6 | 7 | 8 |

DALL·E 3 Image Generator app by Codanics

9 |
10 | 11 | 12 |
13 | {% if image_url %} 14 |
15 | Generated Image 16 | Download Image 17 |
18 | {% endif %} 19 | 20 | 21 | -------------------------------------------------------------------------------- /05_tips/app.py: -------------------------------------------------------------------------------- 1 | # app.py 2 | from flask import Flask, request, render_template 3 | import numpy as np 4 | import joblib 5 | 6 | app = Flask(__name__) 7 | model = joblib.load('tip_predictor_model.pkl') 8 | 9 | @app.route('/', methods=['GET', 'POST']) 10 | def predict(): 11 | if request.method == 'POST': 12 | total_bill = float(request.form['total_bill']) 13 | size = int(request.form['size']) 14 | 15 | # Create the feature array 16 | features = np.array([[total_bill, size]]) 17 | prediction = model.predict(features) 18 | 19 | return render_template('results.html', prediction=round(prediction[0], 2)) 20 | return render_template('index.html') 21 | 22 | if __name__ == '__main__': 23 | app.run(debug=True) 24 | -------------------------------------------------------------------------------- /05_tips/model.py: -------------------------------------------------------------------------------- 1 | # train_model.py 2 | import seaborn as sns 3 | import pandas as pd 4 | from sklearn.model_selection import train_test_split 5 | from sklearn.linear_model import LinearRegression 6 | import joblib 7 | 8 | # Load the dataset 9 | tips = sns.load_dataset('tips') 10 | 11 | # For simplicity, we'll use 'total_bill' and 'size' as features 12 | # Convert categorical variables to dummy variables if you use them 13 | X = tips[['total_bill', 'size']] 14 | y = tips['tip'] 15 | 16 | # Split the data 17 | X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 18 | 19 | # Train the model 20 | model = LinearRegression() 21 | model.fit(X_train, y_train) 22 | 23 | # Save the model 24 | joblib.dump(model, 'tip_predictor_model.pkl') 25 | 26 | print("Model trained and saved.") 27 | -------------------------------------------------------------------------------- /09_voice-bot-flask/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, jsonify 2 | import openai 3 | import os 4 | 5 | app = Flask(__name__) 6 | openai.api_key = os.environ.get("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") 7 | 8 | @app.route('/') 9 | def index(): 10 | return render_template('index.html') 11 | 12 | @app.route('/generate_response', methods=['POST']) 13 | def generate_response(): 14 | data = request.get_json() 15 | text = data.get('text') 16 | 17 | client = openai.OpenAI(api_key=openai.api_key) 18 | response = client.chat.completions.create( 19 | model="gpt-3.5-turbo", 20 | messages=[ 21 | {"role": "user", "content": text} 22 | ] 23 | ) 24 | 25 | ai_text = response.choices[0].message.content 26 | return jsonify({'ai_text': ai_text}) 27 | 28 | if __name__ == '__main__': 29 | app.run(debug=True) 30 | -------------------------------------------------------------------------------- /05_tips/templates/results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tip Prediction Result 7 | 8 | 9 | 10 | 11 |
12 |

Predicted Tip Amount

13 |

Your predicted tip is: ${{ prediction }}

14 | Calculate again 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /04_House-Price-Predictor/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 33 | 34 | 35 |
36 | 37 | 38 |

Predict House Price

39 |
40 | 
41 | 42 | 43 | 44 | 45 | 46 |
47 | 50 |
51 |
52 | 53 | -------------------------------------------------------------------------------- /03_image_generation_app/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, redirect, url_for 2 | import openai 3 | 4 | # Create a Flask app 5 | app = Flask(__name__) 6 | 7 | # Load your OpenAI API key (hardcoded for testing purposes) 8 | openai_api_key = "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" 9 | 10 | def generate_image(prompt): 11 | client = openai.OpenAI(api_key=openai_api_key) 12 | 13 | response = client.images.generate( 14 | model="dall-e-3", 15 | prompt=prompt, 16 | size="1024x1024", 17 | quality="standard", 18 | n=1, 19 | ) 20 | 21 | return response.data[0].url 22 | 23 | @app.route('/', methods=['GET', 'POST']) 24 | def index(): 25 | if request.method == 'POST': 26 | prompt = request.form.get('prompt') 27 | 28 | if prompt: 29 | image_url = generate_image(prompt) 30 | if image_url: 31 | return render_template('index.html', image_url=image_url) 32 | else: 33 | return render_template('index.html', error='Failed to generate image. Please try again.') 34 | else: 35 | return render_template('index.html', error='Please enter a description.') 36 | 37 | return render_template('index.html') 38 | 39 | if __name__ == '__main__': 40 | app.run(debug=True) 41 | -------------------------------------------------------------------------------- /05_tips/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Tip Calculator 7 | 8 | 9 | 10 | 11 |
12 |

Enter Your Bill Details

13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 | 23 |
24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /06_diabetese_prediction/template/show.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | display results 6 | 42 | 43 | 44 |

DIABETES PREDICTION

45 |

Pregnancy Value : {{ preg }}

46 |

Blood Pressure Value : {{ bp }}

47 |

Glucose Levels : {{ gluc }}

48 |

Skin Thickness : {{ st }}

49 |

Insulin Levels : {{ ins }}

50 |

BMI : {{ bmi }}

51 |

DiabetesPedigreeFunction : {{ dbf }}

52 |

Age : {{ age }}

53 | 54 |
55 |

Diabetes Prediction : {{ res }}

56 | 57 |
58 | 59 | -------------------------------------------------------------------------------- /02_eda_app/app.py: -------------------------------------------------------------------------------- 1 | # import libraries 2 | from flask import Flask, render_template 3 | import pandas as pd 4 | import numpy as np 5 | import matplotlib.pyplot as plt 6 | import seaborn as sns 7 | import io 8 | import base64 9 | 10 | # Create an instance of the Flask class 11 | app = Flask(__name__) 12 | 13 | # define a function to load the dataset 14 | def load_data(): 15 | df = sns.load_dataset('iris') 16 | return df 17 | 18 | # define the function to plot the data 19 | def plot(df): 20 | # Create a figure for the plots 21 | fig, axs = plt.subplots(2, 2, figsize=(12, 12)) 22 | 23 | # Plot distribution of each feature 24 | sns.histplot(data=df, x='sepal_length', kde=True, ax=axs[0, 0], color='skyblue') 25 | sns.histplot(data=df, x='sepal_width', kde=True, ax=axs[0, 1], color='olive') 26 | sns.histplot(data=df, x='petal_length', kde=True, ax=axs[1, 0], color='gold') 27 | sns.histplot(data=df, x='petal_width', kde=True, ax=axs[1, 1], color='teal') 28 | 29 | # Adjust layout 30 | plt.tight_layout() 31 | 32 | # Save plot to a bytes buffer 33 | buf = io.BytesIO() 34 | plt.savefig(buf, format='png') 35 | buf.seek(0) 36 | 37 | # Encode the plot to base64 string for HTML embedding 38 | b64_image = base64.b64encode(buf.read()).decode('utf-8') 39 | return b64_image 40 | 41 | # define the route 42 | @app.route('/') 43 | def index(): 44 | # load the dataset 45 | df = load_data() 46 | # plot the data 47 | b64_image = plot(df) 48 | return render_template('index.html', b64_image=b64_image) 49 | 50 | # run the app 51 | if __name__ == '__main__': 52 | app.run(debug=True) 53 | -------------------------------------------------------------------------------- /07_test2speech-flask/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, send_file, url_for 2 | import os 3 | import tempfile 4 | import pydub 5 | from openai import OpenAI 6 | 7 | app = Flask(__name__) 8 | 9 | # Replace YOUR_API_KEY with your actual OpenAI API key 10 | openai = OpenAI(api_key="") 11 | 12 | @app.route('/') 13 | def index(): 14 | return render_template('index.html') 15 | 16 | @app.route('/convert', methods=['POST']) 17 | def convert(): 18 | text = request.form['text'] 19 | model = request.form['model'] 20 | voice = request.form['voice'] 21 | format = request.form['format'] 22 | 23 | mp3_speech_path = text_to_speech(text, model, voice) 24 | 25 | if format != "mp3": 26 | with tempfile.NamedTemporaryFile(delete=False, suffix=f".{format}") as tmpfile: 27 | convert_audio_format(mp3_speech_path, tmpfile.name, format) 28 | speech_path = tmpfile.name 29 | os.remove(mp3_speech_path) 30 | else: 31 | speech_path = mp3_speech_path 32 | 33 | return send_file(speech_path, as_attachment=True) 34 | 35 | def text_to_speech(text, model, voice): 36 | with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as tmpfile: 37 | speech_file_path = tmpfile.name 38 | response = openai.audio.speech.create( 39 | model=model, 40 | voice=voice, 41 | input=text 42 | ) 43 | response.stream_to_file(speech_file_path) 44 | return speech_file_path 45 | 46 | def convert_audio_format(input_path, output_path, format): 47 | audio = pydub.AudioSegment.from_mp3(input_path) 48 | audio.export(output_path, format=format) 49 | 50 | if __name__ == '__main__': 51 | app.run(debug=True) 52 | 53 | 54 | # add the name option to save the fil 55 | # make this app a multimodel app 56 | # use responsive images 57 | -------------------------------------------------------------------------------- /07_test2speech-flask/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Text to Speech Converter 5 | 6 | 7 |

🔊 Text to Speech Converter 📝

8 | Text to Speech 9 |

10 | This app converts text to speech using OpenAI's tts-1 or tts-1-hd model. 11 | Please enter your OpenAI API key. Do not share your API key with others. 12 |

13 |
14 |
15 |
16 | 17 |
21 | 22 |
30 | 31 |
38 | 39 |
40 | 41 | 42 | -------------------------------------------------------------------------------- /09_voice-bot-flask/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Voice-Assisted Chatbot 🎙️ 7 | 8 | 9 |

Voice-Assisted Chatbot 🎙️

10 |

Ask Question, I am Listening...

11 | 12 |
13 | 14 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /06_diabetese_prediction/main.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request 2 | import pickle 3 | import pandas as pd 4 | import numpy as np 5 | from sklearn.preprocessing import StandardScaler 6 | from sklearn.pipeline import Pipeline 7 | 8 | app = Flask(__name__, template_folder='template') 9 | svm_model=pickle.load(open('svm_model.pkl','rb')) 10 | 11 | @app.route('/') 12 | def home(): 13 | return render_template("home.html") 14 | 15 | def std_scalar(df): 16 | std_X = StandardScaler() 17 | x = pd.DataFrame(std_X.fit_transform(df)) 18 | return x 19 | 20 | def pipeline(features): 21 | steps = [('scaler', StandardScaler()), ('SVM', svm_model)] 22 | pipe = Pipeline(steps) 23 | return pipe.fit_transform(features) 24 | 25 | 26 | @app.route('/send', methods=['POST']) 27 | def getdata(): 28 | 29 | features = [float() for x in request.form.values()] 30 | final_features = [np.array(features)] 31 | 32 | #Feature tranform and prediction using pipeline 33 | # We can now use predictions from this feature_tranformed variable 34 | #feature_tranformed= pipeline(final_features) 35 | 36 | 37 | feature_transform=std_scalar(final_features) 38 | # Using standard scalar method 39 | prediction = svm_model.predict(feature_transform) 40 | if prediction==0: 41 | result="You Are Non-Diabetic" 42 | else: 43 | result="You Are Diabetic" 44 | 45 | Pregnancies=request.form['Pregnancies'] 46 | Glucose = request.form['Glucose'] 47 | BloodPressure = request.form['BloodPressure'] 48 | SkinThickness = request.form['SkinThickness'] 49 | Insulin = request.form['Insulin'] 50 | BMI = request.form['BMI'] 51 | DiabetesPedigreeFunction = request.form['DiabetesPedigreeFunction'] 52 | Age = request.form['Age'] 53 | return render_template('show.html', preg=Pregnancies, bp=BloodPressure, 54 | gluc=Glucose, st=SkinThickness, ins=Insulin, bmi=BMI, 55 | dbf=DiabetesPedigreeFunction, age=Age, res=result) 56 | 57 | 58 | if __name__=="__main__": 59 | app.run(debug=True) -------------------------------------------------------------------------------- /06_diabetese_prediction/template/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Diabetes Prediction 5 | 6 | 51 | 52 | 53 |
54 |
55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |
82 | 83 |
84 | 85 |
86 | 87 | 88 |
89 | 90 | -------------------------------------------------------------------------------- /08_wordcloud-flask/app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, send_from_directory, redirect, url_for 2 | from werkzeug.utils import secure_filename 3 | import os 4 | import PyPDF2 5 | from PyPDF2 import PdfReader 6 | import docx 7 | from wordcloud import WordCloud 8 | import matplotlib.pyplot as plt 9 | 10 | app = Flask(__name__) 11 | app.config['UPLOAD_FOLDER'] = 'uploads' 12 | 13 | # Ensure the upload folder exists 14 | os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) 15 | 16 | def generate_and_save_wordcloud(text, format): 17 | wordcloud = WordCloud(width=800, height=800, background_color='white').generate(text) 18 | plt.figure(figsize=(8, 8), facecolor=None) 19 | plt.imshow(wordcloud) 20 | plt.axis("off") 21 | plt.tight_layout(pad=0) 22 | 23 | img_path = os.path.join(app.config['UPLOAD_FOLDER'], f'wordcloud.{format}') 24 | plt.savefig(img_path, format=format, bbox_inches='tight', pad_inches=0) 25 | return img_path 26 | 27 | @app.route('/', methods=['GET', 'POST']) 28 | def upload_file(): 29 | if request.method == 'POST': 30 | file = request.files['file'] 31 | filename = secure_filename(file.filename) 32 | 33 | file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) 34 | file.save(file_path) 35 | print(f'File saved to {file_path}') # Debugging statement 36 | 37 | if filename.endswith('.pdf'): 38 | pdf_reader = PdfReader(file_path) 39 | text = '' 40 | for page in pdf_reader.pages: 41 | text += page.extract_text() 42 | elif filename.endswith('.docx'): 43 | doc = docx.Document(file_path) 44 | text = ' '.join([paragraph.text for paragraph in doc.paragraphs]) 45 | else: 46 | text = '' 47 | 48 | format = request.form.get('format', 'png') 49 | img_path = generate_and_save_wordcloud(text, format) 50 | 51 | return redirect(url_for('result', filename=f'wordcloud.{format}')) 52 | 53 | return render_template('index.html') 54 | 55 | @app.route('/result/') 56 | def result(filename): 57 | return send_from_directory(app.config['UPLOAD_FOLDER'], filename) 58 | 59 | @app.route('/uploads/') 60 | def uploaded_file(filename): 61 | return send_from_directory(app.config['UPLOAD_FOLDER'], filename) 62 | 63 | if __name__ == '__main__': 64 | # Print the absolute path of UPLOAD_FOLDER for debugging 65 | print(f'Upload folder is set to {os.path.abspath(app.config["UPLOAD_FOLDER"])}') 66 | app.run(debug=True) 67 | 68 | # you have to make the front end better than this 69 | # add download button 70 | # provide the table to user after making wordcloud 71 | # interface should be interactive 72 | #............................................. -------------------------------------------------------------------------------- /04_House-Price-Predictor/model.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas as pd \n", 10 | "from sklearn.linear_model import LinearRegression\n", 11 | "import pickle\n", 12 | "df=pd.read_json('Data/House_Price.json')\n", 13 | "X=df['Area(in sq. ft)'].values.reshape(-1,1)\n", 14 | "y=df['Price(in Rs.)'].values.reshape(-1,1)\n", 15 | "model =LinearRegression()\n", 16 | "model.fit(X,y)\n", 17 | "pickle.dump(model,open('model.pkl','wb'))" 18 | ] 19 | }, 20 | { 21 | "cell_type": "code", 22 | "execution_count": 3, 23 | "metadata": {}, 24 | "outputs": [ 25 | { 26 | "data": { 27 | "text/html": [ 28 | "
\n", 29 | "\n", 42 | "\n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | "
Area(in sq. ft)Price(in Rs.)
010001500000
112001800000
215002250000
318002700000
420003000000
\n", 78 | "
" 79 | ], 80 | "text/plain": [ 81 | " Area(in sq. ft) Price(in Rs.)\n", 82 | "0 1000 1500000\n", 83 | "1 1200 1800000\n", 84 | "2 1500 2250000\n", 85 | "3 1800 2700000\n", 86 | "4 2000 3000000" 87 | ] 88 | }, 89 | "execution_count": 3, 90 | "metadata": {}, 91 | "output_type": "execute_result" 92 | } 93 | ], 94 | "source": [ 95 | "df.head()" 96 | ] 97 | } 98 | ], 99 | "metadata": { 100 | "kernelspec": { 101 | "display_name": "flask_env", 102 | "language": "python", 103 | "name": "python3" 104 | }, 105 | "language_info": { 106 | "codemirror_mode": { 107 | "name": "ipython", 108 | "version": 3 109 | }, 110 | "file_extension": ".py", 111 | "mimetype": "text/x-python", 112 | "name": "python", 113 | "nbconvert_exporter": "python", 114 | "pygments_lexer": "ipython3", 115 | "version": "3.11.8" 116 | } 117 | }, 118 | "nbformat": 4, 119 | "nbformat_minor": 2 120 | } 121 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | # Flask Web App Development Tutorials by Codanics 2 | 3 | This repository contains the code for the Flask Web App Development Tutorials by Codanics. The tutorials are available on the Codanics YouTube channel in the following playlist: 4 | 5 | ## [Click here to go to Flask Youtube Playlist](https://www.youtube.com/playlist?list=PL9XvIvvVL50H3SI7VaZ30OWu6NHWEJG_x) 6 | 7 | 8 | # **`Deploy webapp to AWS EC2 instance`** 9 | 10 | Follow this step by step guide to deploy any webapp on AWS EC2 instance. 11 | 12 | 1. **Create an AWS account** 13 | - Go to [AWS](https://aws.amazon.com/) and create an account. 14 | - Sign in to the AWS Management Console. 15 | - Open the Amazon EC2 console at [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/). 16 | 17 | 2. **Launch an EC2 instance** 18 | - Create an EC2 instance by clicking on the `Launch Instance` button. 19 | - Choose an Amazon Machine Image (AMI) - Ubuntu Server 20.04 LTS (HVM), SSD Volume Type. 20 | - Choose an Instance Type - t2.micro (Free tier eligible) it may change based on your requirements. 21 | - Configure Instance Details - Keep the default settings. 22 | - creata and save keypair for `ssh access` and do not share with anyone. 23 | - Configure Security Group - Create a new security group and add rules to allow 24 | - HTTP and SSH traffic. 25 | - Pay attendtion to create **`8501`** port for flask and streamlit apps. 26 | - Add rule to access from anywhere. 27 | - Add Storage - Keep the default settings. 28 | - Add Tags - Keep the default settings. 29 | - Review and Launch - Review the settings and click on the `Launch` button. 30 | 31 | 3. **Connect to your instance** 32 | - Go to the EC2 dashboard and click on the `Running Instances`. 33 | - Select the instance you just created and click on the `Connect` button. 34 | - Follow the instructions to connect to your instance using SSH. 35 | - Use the following command to connect to your instance: 36 | ```bash 37 | chmod 400 your-key-pair.pem 38 | ssh -i "your-key-pair.pem" ubuntu@your-instance-public-ip 39 | ``` 40 | 41 | 4. **Install the required software** 42 | - Update the package list and install the required software: 43 | ```bash 44 | sudo apt update 45 | sudo apt upgrade 46 | sudo apt install python3-pip python3-venv 47 | # install git to clone your app 48 | sudo apt install git 49 | ``` 50 | 5. **Clone the repository** 51 | - Clone the repository using the following command: 52 | ```bash 53 | git clone repository-url 54 | ``` 55 | 56 | 6. **Access files using `winscp` and `putty`** 57 | - Download and install `winscp` and `putty` to access files and terminal using GUI. 58 | - Use `putty` to connect to your instance using `ssh` and `winscp` to access files. 59 | - Use `winscp` to transfer files from your local machine to the instance. 60 | - Use `putty` to run commands on the instance using the terminal. 61 | 62 | 63 | 7. **Install the required packages** 64 | - create a virtual environment and activate it: 65 | ```bash 66 | python3 -m venv env_name 67 | source env/bin/activate 68 | ``` 69 | # you can also use miniconda for that. 70 | - Download mini conda from [here](https://docs.conda.io/en/latest/miniconda.html) 71 | - Install miniconda using the following command: 72 | ```bash 73 | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 74 | bash Miniconda3-latest-Linux-x86_64.sh 75 | ``` 76 | 77 | > But i prefer python virtual environment for this purpose, because it is light weight and easy to use without even installing any other software. 78 | 79 | - Install the required packages using pip: 80 | ```bash 81 | pip install -r requirements.txt 82 | ``` 83 | 84 | 8. **Run the webapp** 85 | - Run the webapp using the following command by navigating to the directory where the `app.py` file is located: 86 | ```bash 87 | python3 app.py 88 | ``` 89 | 90 | 9. **Access the webapp** 91 | - Open a web browser and go to `http://your-instance-public-ip:8501` to access the webapp. 92 | 93 | 10. **Run the webapp in the background** 94 | - Use the following command to run the webapp in the background: 95 | ```bash 96 | nohup python3 app.py & 97 | ``` 98 | 99 | 11. **Terminate the webapp** 100 | - Use the following command to terminate the webapp: 101 | ```bash 102 | ps -aux | grep app.py 103 | kill -9 process-id 104 | ``` 105 | 106 | 12. **Access the webapp using a specific weblink other than IP** 107 | - You can use a domain name to access the webapp by setting up a domain name and pointing it to the public IP address of your instance. You can use services like Route 53 to set up a domain name and associate it with your instance. 108 | - You can also use a service like ngrok to create a secure tunnel to your instance and access the webapp using a specific weblink. 109 | - **Note:** Make sure to secure your webapp by setting up SSL/TLS certificates and using HTTPS to encrypt the data transmitted between the client and the server. 110 | - **Note:** Make sure to secure your instance by setting up a firewall, using strong passwords, and keeping the software up to date. 111 | - **Note:** Make sure to monitor your instance and set up alerts to be notified of any issues or unusual activity. 112 | - **Note:** Make sure to back up your data and set up automated backups to prevent data loss. 113 | - **Note:** Make sure to follow best practices for security, performance, and cost optimization when deploying webapps on AWS. 114 | 115 | 116 | 13. **Terminate the instance and save money** 117 | - Go to the EC2 dashboard and click on the `Running Instances`. 118 | - Select the instance you want to terminate and click on the `Actions` button. 119 | - Click on the `Instance State` option and then click on the `Terminate` option. 120 | - Confirm that you want to terminate the instance. 121 | - **Note:** Terminating an instance will delete all the data on the instance, so make sure to back up any data you want to keep. 122 | 123 | 124 | > ## Complete playlist for Cloud computing and AWS, and GCP services is available [here](https://www.youtube.com/watch?v=jqBCokl7t0k&list=PL9XvIvvVL50H72Q75WkYA_2zjZok30Rvp&ab_channel=Codanics) 125 | 126 | 127 | 128 | Link to github directory: 129 | 130 | https://github.com/AammarTufail/flask_webapp_development_series.git -------------------------------------------------------------------------------- /06_diabetese_prediction/diabetes.csv: -------------------------------------------------------------------------------- 1 | Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome 2 | 6,148,72,35,0,33.6,0.627,50,1 3 | 1,85,66,29,0,26.6,0.351,31,0 4 | 8,183,64,0,0,23.3,0.672,32,1 5 | 1,89,66,23,94,28.1,0.167,21,0 6 | 0,137,40,35,168,43.1,2.288,33,1 7 | 5,116,74,0,0,25.6,0.201,30,0 8 | 3,78,50,32,88,31,0.248,26,1 9 | 10,115,0,0,0,35.3,0.134,29,0 10 | 2,197,70,45,543,30.5,0.158,53,1 11 | 8,125,96,0,0,0,0.232,54,1 12 | 4,110,92,0,0,37.6,0.191,30,0 13 | 10,168,74,0,0,38,0.537,34,1 14 | 10,139,80,0,0,27.1,1.441,57,0 15 | 1,189,60,23,846,30.1,0.398,59,1 16 | 5,166,72,19,175,25.8,0.587,51,1 17 | 7,100,0,0,0,30,0.484,32,1 18 | 0,118,84,47,230,45.8,0.551,31,1 19 | 7,107,74,0,0,29.6,0.254,31,1 20 | 1,103,30,38,83,43.3,0.183,33,0 21 | 1,115,70,30,96,34.6,0.529,32,1 22 | 3,126,88,41,235,39.3,0.704,27,0 23 | 8,99,84,0,0,35.4,0.388,50,0 24 | 7,196,90,0,0,39.8,0.451,41,1 25 | 9,119,80,35,0,29,0.263,29,1 26 | 11,143,94,33,146,36.6,0.254,51,1 27 | 10,125,70,26,115,31.1,0.205,41,1 28 | 7,147,76,0,0,39.4,0.257,43,1 29 | 1,97,66,15,140,23.2,0.487,22,0 30 | 13,145,82,19,110,22.2,0.245,57,0 31 | 5,117,92,0,0,34.1,0.337,38,0 32 | 5,109,75,26,0,36,0.546,60,0 33 | 3,158,76,36,245,31.6,0.851,28,1 34 | 3,88,58,11,54,24.8,0.267,22,0 35 | 6,92,92,0,0,19.9,0.188,28,0 36 | 10,122,78,31,0,27.6,0.512,45,0 37 | 4,103,60,33,192,24,0.966,33,0 38 | 11,138,76,0,0,33.2,0.42,35,0 39 | 9,102,76,37,0,32.9,0.665,46,1 40 | 2,90,68,42,0,38.2,0.503,27,1 41 | 4,111,72,47,207,37.1,1.39,56,1 42 | 3,180,64,25,70,34,0.271,26,0 43 | 7,133,84,0,0,40.2,0.696,37,0 44 | 7,106,92,18,0,22.7,0.235,48,0 45 | 9,171,110,24,240,45.4,0.721,54,1 46 | 7,159,64,0,0,27.4,0.294,40,0 47 | 0,180,66,39,0,42,1.893,25,1 48 | 1,146,56,0,0,29.7,0.564,29,0 49 | 2,71,70,27,0,28,0.586,22,0 50 | 7,103,66,32,0,39.1,0.344,31,1 51 | 7,105,0,0,0,0,0.305,24,0 52 | 1,103,80,11,82,19.4,0.491,22,0 53 | 1,101,50,15,36,24.2,0.526,26,0 54 | 5,88,66,21,23,24.4,0.342,30,0 55 | 8,176,90,34,300,33.7,0.467,58,1 56 | 7,150,66,42,342,34.7,0.718,42,0 57 | 1,73,50,10,0,23,0.248,21,0 58 | 7,187,68,39,304,37.7,0.254,41,1 59 | 0,100,88,60,110,46.8,0.962,31,0 60 | 0,146,82,0,0,40.5,1.781,44,0 61 | 0,105,64,41,142,41.5,0.173,22,0 62 | 2,84,0,0,0,0,0.304,21,0 63 | 8,133,72,0,0,32.9,0.27,39,1 64 | 5,44,62,0,0,25,0.587,36,0 65 | 2,141,58,34,128,25.4,0.699,24,0 66 | 7,114,66,0,0,32.8,0.258,42,1 67 | 5,99,74,27,0,29,0.203,32,0 68 | 0,109,88,30,0,32.5,0.855,38,1 69 | 2,109,92,0,0,42.7,0.845,54,0 70 | 1,95,66,13,38,19.6,0.334,25,0 71 | 4,146,85,27,100,28.9,0.189,27,0 72 | 2,100,66,20,90,32.9,0.867,28,1 73 | 5,139,64,35,140,28.6,0.411,26,0 74 | 13,126,90,0,0,43.4,0.583,42,1 75 | 4,129,86,20,270,35.1,0.231,23,0 76 | 1,79,75,30,0,32,0.396,22,0 77 | 1,0,48,20,0,24.7,0.14,22,0 78 | 7,62,78,0,0,32.6,0.391,41,0 79 | 5,95,72,33,0,37.7,0.37,27,0 80 | 0,131,0,0,0,43.2,0.27,26,1 81 | 2,112,66,22,0,25,0.307,24,0 82 | 3,113,44,13,0,22.4,0.14,22,0 83 | 2,74,0,0,0,0,0.102,22,0 84 | 7,83,78,26,71,29.3,0.767,36,0 85 | 0,101,65,28,0,24.6,0.237,22,0 86 | 5,137,108,0,0,48.8,0.227,37,1 87 | 2,110,74,29,125,32.4,0.698,27,0 88 | 13,106,72,54,0,36.6,0.178,45,0 89 | 2,100,68,25,71,38.5,0.324,26,0 90 | 15,136,70,32,110,37.1,0.153,43,1 91 | 1,107,68,19,0,26.5,0.165,24,0 92 | 1,80,55,0,0,19.1,0.258,21,0 93 | 4,123,80,15,176,32,0.443,34,0 94 | 7,81,78,40,48,46.7,0.261,42,0 95 | 4,134,72,0,0,23.8,0.277,60,1 96 | 2,142,82,18,64,24.7,0.761,21,0 97 | 6,144,72,27,228,33.9,0.255,40,0 98 | 2,92,62,28,0,31.6,0.13,24,0 99 | 1,71,48,18,76,20.4,0.323,22,0 100 | 6,93,50,30,64,28.7,0.356,23,0 101 | 1,122,90,51,220,49.7,0.325,31,1 102 | 1,163,72,0,0,39,1.222,33,1 103 | 1,151,60,0,0,26.1,0.179,22,0 104 | 0,125,96,0,0,22.5,0.262,21,0 105 | 1,81,72,18,40,26.6,0.283,24,0 106 | 2,85,65,0,0,39.6,0.93,27,0 107 | 1,126,56,29,152,28.7,0.801,21,0 108 | 1,96,122,0,0,22.4,0.207,27,0 109 | 4,144,58,28,140,29.5,0.287,37,0 110 | 3,83,58,31,18,34.3,0.336,25,0 111 | 0,95,85,25,36,37.4,0.247,24,1 112 | 3,171,72,33,135,33.3,0.199,24,1 113 | 8,155,62,26,495,34,0.543,46,1 114 | 1,89,76,34,37,31.2,0.192,23,0 115 | 4,76,62,0,0,34,0.391,25,0 116 | 7,160,54,32,175,30.5,0.588,39,1 117 | 4,146,92,0,0,31.2,0.539,61,1 118 | 5,124,74,0,0,34,0.22,38,1 119 | 5,78,48,0,0,33.7,0.654,25,0 120 | 4,97,60,23,0,28.2,0.443,22,0 121 | 4,99,76,15,51,23.2,0.223,21,0 122 | 0,162,76,56,100,53.2,0.759,25,1 123 | 6,111,64,39,0,34.2,0.26,24,0 124 | 2,107,74,30,100,33.6,0.404,23,0 125 | 5,132,80,0,0,26.8,0.186,69,0 126 | 0,113,76,0,0,33.3,0.278,23,1 127 | 1,88,30,42,99,55,0.496,26,1 128 | 3,120,70,30,135,42.9,0.452,30,0 129 | 1,118,58,36,94,33.3,0.261,23,0 130 | 1,117,88,24,145,34.5,0.403,40,1 131 | 0,105,84,0,0,27.9,0.741,62,1 132 | 4,173,70,14,168,29.7,0.361,33,1 133 | 9,122,56,0,0,33.3,1.114,33,1 134 | 3,170,64,37,225,34.5,0.356,30,1 135 | 8,84,74,31,0,38.3,0.457,39,0 136 | 2,96,68,13,49,21.1,0.647,26,0 137 | 2,125,60,20,140,33.8,0.088,31,0 138 | 0,100,70,26,50,30.8,0.597,21,0 139 | 0,93,60,25,92,28.7,0.532,22,0 140 | 0,129,80,0,0,31.2,0.703,29,0 141 | 5,105,72,29,325,36.9,0.159,28,0 142 | 3,128,78,0,0,21.1,0.268,55,0 143 | 5,106,82,30,0,39.5,0.286,38,0 144 | 2,108,52,26,63,32.5,0.318,22,0 145 | 10,108,66,0,0,32.4,0.272,42,1 146 | 4,154,62,31,284,32.8,0.237,23,0 147 | 0,102,75,23,0,0,0.572,21,0 148 | 9,57,80,37,0,32.8,0.096,41,0 149 | 2,106,64,35,119,30.5,1.4,34,0 150 | 5,147,78,0,0,33.7,0.218,65,0 151 | 2,90,70,17,0,27.3,0.085,22,0 152 | 1,136,74,50,204,37.4,0.399,24,0 153 | 4,114,65,0,0,21.9,0.432,37,0 154 | 9,156,86,28,155,34.3,1.189,42,1 155 | 1,153,82,42,485,40.6,0.687,23,0 156 | 8,188,78,0,0,47.9,0.137,43,1 157 | 7,152,88,44,0,50,0.337,36,1 158 | 2,99,52,15,94,24.6,0.637,21,0 159 | 1,109,56,21,135,25.2,0.833,23,0 160 | 2,88,74,19,53,29,0.229,22,0 161 | 17,163,72,41,114,40.9,0.817,47,1 162 | 4,151,90,38,0,29.7,0.294,36,0 163 | 7,102,74,40,105,37.2,0.204,45,0 164 | 0,114,80,34,285,44.2,0.167,27,0 165 | 2,100,64,23,0,29.7,0.368,21,0 166 | 0,131,88,0,0,31.6,0.743,32,1 167 | 6,104,74,18,156,29.9,0.722,41,1 168 | 3,148,66,25,0,32.5,0.256,22,0 169 | 4,120,68,0,0,29.6,0.709,34,0 170 | 4,110,66,0,0,31.9,0.471,29,0 171 | 3,111,90,12,78,28.4,0.495,29,0 172 | 6,102,82,0,0,30.8,0.18,36,1 173 | 6,134,70,23,130,35.4,0.542,29,1 174 | 2,87,0,23,0,28.9,0.773,25,0 175 | 1,79,60,42,48,43.5,0.678,23,0 176 | 2,75,64,24,55,29.7,0.37,33,0 177 | 8,179,72,42,130,32.7,0.719,36,1 178 | 6,85,78,0,0,31.2,0.382,42,0 179 | 0,129,110,46,130,67.1,0.319,26,1 180 | 5,143,78,0,0,45,0.19,47,0 181 | 5,130,82,0,0,39.1,0.956,37,1 182 | 6,87,80,0,0,23.2,0.084,32,0 183 | 0,119,64,18,92,34.9,0.725,23,0 184 | 1,0,74,20,23,27.7,0.299,21,0 185 | 5,73,60,0,0,26.8,0.268,27,0 186 | 4,141,74,0,0,27.6,0.244,40,0 187 | 7,194,68,28,0,35.9,0.745,41,1 188 | 8,181,68,36,495,30.1,0.615,60,1 189 | 1,128,98,41,58,32,1.321,33,1 190 | 8,109,76,39,114,27.9,0.64,31,1 191 | 5,139,80,35,160,31.6,0.361,25,1 192 | 3,111,62,0,0,22.6,0.142,21,0 193 | 9,123,70,44,94,33.1,0.374,40,0 194 | 7,159,66,0,0,30.4,0.383,36,1 195 | 11,135,0,0,0,52.3,0.578,40,1 196 | 8,85,55,20,0,24.4,0.136,42,0 197 | 5,158,84,41,210,39.4,0.395,29,1 198 | 1,105,58,0,0,24.3,0.187,21,0 199 | 3,107,62,13,48,22.9,0.678,23,1 200 | 4,109,64,44,99,34.8,0.905,26,1 201 | 4,148,60,27,318,30.9,0.15,29,1 202 | 0,113,80,16,0,31,0.874,21,0 203 | 1,138,82,0,0,40.1,0.236,28,0 204 | 0,108,68,20,0,27.3,0.787,32,0 205 | 2,99,70,16,44,20.4,0.235,27,0 206 | 6,103,72,32,190,37.7,0.324,55,0 207 | 5,111,72,28,0,23.9,0.407,27,0 208 | 8,196,76,29,280,37.5,0.605,57,1 209 | 5,162,104,0,0,37.7,0.151,52,1 210 | 1,96,64,27,87,33.2,0.289,21,0 211 | 7,184,84,33,0,35.5,0.355,41,1 212 | 2,81,60,22,0,27.7,0.29,25,0 213 | 0,147,85,54,0,42.8,0.375,24,0 214 | 7,179,95,31,0,34.2,0.164,60,0 215 | 0,140,65,26,130,42.6,0.431,24,1 216 | 9,112,82,32,175,34.2,0.26,36,1 217 | 12,151,70,40,271,41.8,0.742,38,1 218 | 5,109,62,41,129,35.8,0.514,25,1 219 | 6,125,68,30,120,30,0.464,32,0 220 | 5,85,74,22,0,29,1.224,32,1 221 | 5,112,66,0,0,37.8,0.261,41,1 222 | 0,177,60,29,478,34.6,1.072,21,1 223 | 2,158,90,0,0,31.6,0.805,66,1 224 | 7,119,0,0,0,25.2,0.209,37,0 225 | 7,142,60,33,190,28.8,0.687,61,0 226 | 1,100,66,15,56,23.6,0.666,26,0 227 | 1,87,78,27,32,34.6,0.101,22,0 228 | 0,101,76,0,0,35.7,0.198,26,0 229 | 3,162,52,38,0,37.2,0.652,24,1 230 | 4,197,70,39,744,36.7,2.329,31,0 231 | 0,117,80,31,53,45.2,0.089,24,0 232 | 4,142,86,0,0,44,0.645,22,1 233 | 6,134,80,37,370,46.2,0.238,46,1 234 | 1,79,80,25,37,25.4,0.583,22,0 235 | 4,122,68,0,0,35,0.394,29,0 236 | 3,74,68,28,45,29.7,0.293,23,0 237 | 4,171,72,0,0,43.6,0.479,26,1 238 | 7,181,84,21,192,35.9,0.586,51,1 239 | 0,179,90,27,0,44.1,0.686,23,1 240 | 9,164,84,21,0,30.8,0.831,32,1 241 | 0,104,76,0,0,18.4,0.582,27,0 242 | 1,91,64,24,0,29.2,0.192,21,0 243 | 4,91,70,32,88,33.1,0.446,22,0 244 | 3,139,54,0,0,25.6,0.402,22,1 245 | 6,119,50,22,176,27.1,1.318,33,1 246 | 2,146,76,35,194,38.2,0.329,29,0 247 | 9,184,85,15,0,30,1.213,49,1 248 | 10,122,68,0,0,31.2,0.258,41,0 249 | 0,165,90,33,680,52.3,0.427,23,0 250 | 9,124,70,33,402,35.4,0.282,34,0 251 | 1,111,86,19,0,30.1,0.143,23,0 252 | 9,106,52,0,0,31.2,0.38,42,0 253 | 2,129,84,0,0,28,0.284,27,0 254 | 2,90,80,14,55,24.4,0.249,24,0 255 | 0,86,68,32,0,35.8,0.238,25,0 256 | 12,92,62,7,258,27.6,0.926,44,1 257 | 1,113,64,35,0,33.6,0.543,21,1 258 | 3,111,56,39,0,30.1,0.557,30,0 259 | 2,114,68,22,0,28.7,0.092,25,0 260 | 1,193,50,16,375,25.9,0.655,24,0 261 | 11,155,76,28,150,33.3,1.353,51,1 262 | 3,191,68,15,130,30.9,0.299,34,0 263 | 3,141,0,0,0,30,0.761,27,1 264 | 4,95,70,32,0,32.1,0.612,24,0 265 | 3,142,80,15,0,32.4,0.2,63,0 266 | 4,123,62,0,0,32,0.226,35,1 267 | 5,96,74,18,67,33.6,0.997,43,0 268 | 0,138,0,0,0,36.3,0.933,25,1 269 | 2,128,64,42,0,40,1.101,24,0 270 | 0,102,52,0,0,25.1,0.078,21,0 271 | 2,146,0,0,0,27.5,0.24,28,1 272 | 10,101,86,37,0,45.6,1.136,38,1 273 | 2,108,62,32,56,25.2,0.128,21,0 274 | 3,122,78,0,0,23,0.254,40,0 275 | 1,71,78,50,45,33.2,0.422,21,0 276 | 13,106,70,0,0,34.2,0.251,52,0 277 | 2,100,70,52,57,40.5,0.677,25,0 278 | 7,106,60,24,0,26.5,0.296,29,1 279 | 0,104,64,23,116,27.8,0.454,23,0 280 | 5,114,74,0,0,24.9,0.744,57,0 281 | 2,108,62,10,278,25.3,0.881,22,0 282 | 0,146,70,0,0,37.9,0.334,28,1 283 | 10,129,76,28,122,35.9,0.28,39,0 284 | 7,133,88,15,155,32.4,0.262,37,0 285 | 7,161,86,0,0,30.4,0.165,47,1 286 | 2,108,80,0,0,27,0.259,52,1 287 | 7,136,74,26,135,26,0.647,51,0 288 | 5,155,84,44,545,38.7,0.619,34,0 289 | 1,119,86,39,220,45.6,0.808,29,1 290 | 4,96,56,17,49,20.8,0.34,26,0 291 | 5,108,72,43,75,36.1,0.263,33,0 292 | 0,78,88,29,40,36.9,0.434,21,0 293 | 0,107,62,30,74,36.6,0.757,25,1 294 | 2,128,78,37,182,43.3,1.224,31,1 295 | 1,128,48,45,194,40.5,0.613,24,1 296 | 0,161,50,0,0,21.9,0.254,65,0 297 | 6,151,62,31,120,35.5,0.692,28,0 298 | 2,146,70,38,360,28,0.337,29,1 299 | 0,126,84,29,215,30.7,0.52,24,0 300 | 14,100,78,25,184,36.6,0.412,46,1 301 | 8,112,72,0,0,23.6,0.84,58,0 302 | 0,167,0,0,0,32.3,0.839,30,1 303 | 2,144,58,33,135,31.6,0.422,25,1 304 | 5,77,82,41,42,35.8,0.156,35,0 305 | 5,115,98,0,0,52.9,0.209,28,1 306 | 3,150,76,0,0,21,0.207,37,0 307 | 2,120,76,37,105,39.7,0.215,29,0 308 | 10,161,68,23,132,25.5,0.326,47,1 309 | 0,137,68,14,148,24.8,0.143,21,0 310 | 0,128,68,19,180,30.5,1.391,25,1 311 | 2,124,68,28,205,32.9,0.875,30,1 312 | 6,80,66,30,0,26.2,0.313,41,0 313 | 0,106,70,37,148,39.4,0.605,22,0 314 | 2,155,74,17,96,26.6,0.433,27,1 315 | 3,113,50,10,85,29.5,0.626,25,0 316 | 7,109,80,31,0,35.9,1.127,43,1 317 | 2,112,68,22,94,34.1,0.315,26,0 318 | 3,99,80,11,64,19.3,0.284,30,0 319 | 3,182,74,0,0,30.5,0.345,29,1 320 | 3,115,66,39,140,38.1,0.15,28,0 321 | 6,194,78,0,0,23.5,0.129,59,1 322 | 4,129,60,12,231,27.5,0.527,31,0 323 | 3,112,74,30,0,31.6,0.197,25,1 324 | 0,124,70,20,0,27.4,0.254,36,1 325 | 13,152,90,33,29,26.8,0.731,43,1 326 | 2,112,75,32,0,35.7,0.148,21,0 327 | 1,157,72,21,168,25.6,0.123,24,0 328 | 1,122,64,32,156,35.1,0.692,30,1 329 | 10,179,70,0,0,35.1,0.2,37,0 330 | 2,102,86,36,120,45.5,0.127,23,1 331 | 6,105,70,32,68,30.8,0.122,37,0 332 | 8,118,72,19,0,23.1,1.476,46,0 333 | 2,87,58,16,52,32.7,0.166,25,0 334 | 1,180,0,0,0,43.3,0.282,41,1 335 | 12,106,80,0,0,23.6,0.137,44,0 336 | 1,95,60,18,58,23.9,0.26,22,0 337 | 0,165,76,43,255,47.9,0.259,26,0 338 | 0,117,0,0,0,33.8,0.932,44,0 339 | 5,115,76,0,0,31.2,0.343,44,1 340 | 9,152,78,34,171,34.2,0.893,33,1 341 | 7,178,84,0,0,39.9,0.331,41,1 342 | 1,130,70,13,105,25.9,0.472,22,0 343 | 1,95,74,21,73,25.9,0.673,36,0 344 | 1,0,68,35,0,32,0.389,22,0 345 | 5,122,86,0,0,34.7,0.29,33,0 346 | 8,95,72,0,0,36.8,0.485,57,0 347 | 8,126,88,36,108,38.5,0.349,49,0 348 | 1,139,46,19,83,28.7,0.654,22,0 349 | 3,116,0,0,0,23.5,0.187,23,0 350 | 3,99,62,19,74,21.8,0.279,26,0 351 | 5,0,80,32,0,41,0.346,37,1 352 | 4,92,80,0,0,42.2,0.237,29,0 353 | 4,137,84,0,0,31.2,0.252,30,0 354 | 3,61,82,28,0,34.4,0.243,46,0 355 | 1,90,62,12,43,27.2,0.58,24,0 356 | 3,90,78,0,0,42.7,0.559,21,0 357 | 9,165,88,0,0,30.4,0.302,49,1 358 | 1,125,50,40,167,33.3,0.962,28,1 359 | 13,129,0,30,0,39.9,0.569,44,1 360 | 12,88,74,40,54,35.3,0.378,48,0 361 | 1,196,76,36,249,36.5,0.875,29,1 362 | 5,189,64,33,325,31.2,0.583,29,1 363 | 5,158,70,0,0,29.8,0.207,63,0 364 | 5,103,108,37,0,39.2,0.305,65,0 365 | 4,146,78,0,0,38.5,0.52,67,1 366 | 4,147,74,25,293,34.9,0.385,30,0 367 | 5,99,54,28,83,34,0.499,30,0 368 | 6,124,72,0,0,27.6,0.368,29,1 369 | 0,101,64,17,0,21,0.252,21,0 370 | 3,81,86,16,66,27.5,0.306,22,0 371 | 1,133,102,28,140,32.8,0.234,45,1 372 | 3,173,82,48,465,38.4,2.137,25,1 373 | 0,118,64,23,89,0,1.731,21,0 374 | 0,84,64,22,66,35.8,0.545,21,0 375 | 2,105,58,40,94,34.9,0.225,25,0 376 | 2,122,52,43,158,36.2,0.816,28,0 377 | 12,140,82,43,325,39.2,0.528,58,1 378 | 0,98,82,15,84,25.2,0.299,22,0 379 | 1,87,60,37,75,37.2,0.509,22,0 380 | 4,156,75,0,0,48.3,0.238,32,1 381 | 0,93,100,39,72,43.4,1.021,35,0 382 | 1,107,72,30,82,30.8,0.821,24,0 383 | 0,105,68,22,0,20,0.236,22,0 384 | 1,109,60,8,182,25.4,0.947,21,0 385 | 1,90,62,18,59,25.1,1.268,25,0 386 | 1,125,70,24,110,24.3,0.221,25,0 387 | 1,119,54,13,50,22.3,0.205,24,0 388 | 5,116,74,29,0,32.3,0.66,35,1 389 | 8,105,100,36,0,43.3,0.239,45,1 390 | 5,144,82,26,285,32,0.452,58,1 391 | 3,100,68,23,81,31.6,0.949,28,0 392 | 1,100,66,29,196,32,0.444,42,0 393 | 5,166,76,0,0,45.7,0.34,27,1 394 | 1,131,64,14,415,23.7,0.389,21,0 395 | 4,116,72,12,87,22.1,0.463,37,0 396 | 4,158,78,0,0,32.9,0.803,31,1 397 | 2,127,58,24,275,27.7,1.6,25,0 398 | 3,96,56,34,115,24.7,0.944,39,0 399 | 0,131,66,40,0,34.3,0.196,22,1 400 | 3,82,70,0,0,21.1,0.389,25,0 401 | 3,193,70,31,0,34.9,0.241,25,1 402 | 4,95,64,0,0,32,0.161,31,1 403 | 6,137,61,0,0,24.2,0.151,55,0 404 | 5,136,84,41,88,35,0.286,35,1 405 | 9,72,78,25,0,31.6,0.28,38,0 406 | 5,168,64,0,0,32.9,0.135,41,1 407 | 2,123,48,32,165,42.1,0.52,26,0 408 | 4,115,72,0,0,28.9,0.376,46,1 409 | 0,101,62,0,0,21.9,0.336,25,0 410 | 8,197,74,0,0,25.9,1.191,39,1 411 | 1,172,68,49,579,42.4,0.702,28,1 412 | 6,102,90,39,0,35.7,0.674,28,0 413 | 1,112,72,30,176,34.4,0.528,25,0 414 | 1,143,84,23,310,42.4,1.076,22,0 415 | 1,143,74,22,61,26.2,0.256,21,0 416 | 0,138,60,35,167,34.6,0.534,21,1 417 | 3,173,84,33,474,35.7,0.258,22,1 418 | 1,97,68,21,0,27.2,1.095,22,0 419 | 4,144,82,32,0,38.5,0.554,37,1 420 | 1,83,68,0,0,18.2,0.624,27,0 421 | 3,129,64,29,115,26.4,0.219,28,1 422 | 1,119,88,41,170,45.3,0.507,26,0 423 | 2,94,68,18,76,26,0.561,21,0 424 | 0,102,64,46,78,40.6,0.496,21,0 425 | 2,115,64,22,0,30.8,0.421,21,0 426 | 8,151,78,32,210,42.9,0.516,36,1 427 | 4,184,78,39,277,37,0.264,31,1 428 | 0,94,0,0,0,0,0.256,25,0 429 | 1,181,64,30,180,34.1,0.328,38,1 430 | 0,135,94,46,145,40.6,0.284,26,0 431 | 1,95,82,25,180,35,0.233,43,1 432 | 2,99,0,0,0,22.2,0.108,23,0 433 | 3,89,74,16,85,30.4,0.551,38,0 434 | 1,80,74,11,60,30,0.527,22,0 435 | 2,139,75,0,0,25.6,0.167,29,0 436 | 1,90,68,8,0,24.5,1.138,36,0 437 | 0,141,0,0,0,42.4,0.205,29,1 438 | 12,140,85,33,0,37.4,0.244,41,0 439 | 5,147,75,0,0,29.9,0.434,28,0 440 | 1,97,70,15,0,18.2,0.147,21,0 441 | 6,107,88,0,0,36.8,0.727,31,0 442 | 0,189,104,25,0,34.3,0.435,41,1 443 | 2,83,66,23,50,32.2,0.497,22,0 444 | 4,117,64,27,120,33.2,0.23,24,0 445 | 8,108,70,0,0,30.5,0.955,33,1 446 | 4,117,62,12,0,29.7,0.38,30,1 447 | 0,180,78,63,14,59.4,2.42,25,1 448 | 1,100,72,12,70,25.3,0.658,28,0 449 | 0,95,80,45,92,36.5,0.33,26,0 450 | 0,104,64,37,64,33.6,0.51,22,1 451 | 0,120,74,18,63,30.5,0.285,26,0 452 | 1,82,64,13,95,21.2,0.415,23,0 453 | 2,134,70,0,0,28.9,0.542,23,1 454 | 0,91,68,32,210,39.9,0.381,25,0 455 | 2,119,0,0,0,19.6,0.832,72,0 456 | 2,100,54,28,105,37.8,0.498,24,0 457 | 14,175,62,30,0,33.6,0.212,38,1 458 | 1,135,54,0,0,26.7,0.687,62,0 459 | 5,86,68,28,71,30.2,0.364,24,0 460 | 10,148,84,48,237,37.6,1.001,51,1 461 | 9,134,74,33,60,25.9,0.46,81,0 462 | 9,120,72,22,56,20.8,0.733,48,0 463 | 1,71,62,0,0,21.8,0.416,26,0 464 | 8,74,70,40,49,35.3,0.705,39,0 465 | 5,88,78,30,0,27.6,0.258,37,0 466 | 10,115,98,0,0,24,1.022,34,0 467 | 0,124,56,13,105,21.8,0.452,21,0 468 | 0,74,52,10,36,27.8,0.269,22,0 469 | 0,97,64,36,100,36.8,0.6,25,0 470 | 8,120,0,0,0,30,0.183,38,1 471 | 6,154,78,41,140,46.1,0.571,27,0 472 | 1,144,82,40,0,41.3,0.607,28,0 473 | 0,137,70,38,0,33.2,0.17,22,0 474 | 0,119,66,27,0,38.8,0.259,22,0 475 | 7,136,90,0,0,29.9,0.21,50,0 476 | 4,114,64,0,0,28.9,0.126,24,0 477 | 0,137,84,27,0,27.3,0.231,59,0 478 | 2,105,80,45,191,33.7,0.711,29,1 479 | 7,114,76,17,110,23.8,0.466,31,0 480 | 8,126,74,38,75,25.9,0.162,39,0 481 | 4,132,86,31,0,28,0.419,63,0 482 | 3,158,70,30,328,35.5,0.344,35,1 483 | 0,123,88,37,0,35.2,0.197,29,0 484 | 4,85,58,22,49,27.8,0.306,28,0 485 | 0,84,82,31,125,38.2,0.233,23,0 486 | 0,145,0,0,0,44.2,0.63,31,1 487 | 0,135,68,42,250,42.3,0.365,24,1 488 | 1,139,62,41,480,40.7,0.536,21,0 489 | 0,173,78,32,265,46.5,1.159,58,0 490 | 4,99,72,17,0,25.6,0.294,28,0 491 | 8,194,80,0,0,26.1,0.551,67,0 492 | 2,83,65,28,66,36.8,0.629,24,0 493 | 2,89,90,30,0,33.5,0.292,42,0 494 | 4,99,68,38,0,32.8,0.145,33,0 495 | 4,125,70,18,122,28.9,1.144,45,1 496 | 3,80,0,0,0,0,0.174,22,0 497 | 6,166,74,0,0,26.6,0.304,66,0 498 | 5,110,68,0,0,26,0.292,30,0 499 | 2,81,72,15,76,30.1,0.547,25,0 500 | 7,195,70,33,145,25.1,0.163,55,1 501 | 6,154,74,32,193,29.3,0.839,39,0 502 | 2,117,90,19,71,25.2,0.313,21,0 503 | 3,84,72,32,0,37.2,0.267,28,0 504 | 6,0,68,41,0,39,0.727,41,1 505 | 7,94,64,25,79,33.3,0.738,41,0 506 | 3,96,78,39,0,37.3,0.238,40,0 507 | 10,75,82,0,0,33.3,0.263,38,0 508 | 0,180,90,26,90,36.5,0.314,35,1 509 | 1,130,60,23,170,28.6,0.692,21,0 510 | 2,84,50,23,76,30.4,0.968,21,0 511 | 8,120,78,0,0,25,0.409,64,0 512 | 12,84,72,31,0,29.7,0.297,46,1 513 | 0,139,62,17,210,22.1,0.207,21,0 514 | 9,91,68,0,0,24.2,0.2,58,0 515 | 2,91,62,0,0,27.3,0.525,22,0 516 | 3,99,54,19,86,25.6,0.154,24,0 517 | 3,163,70,18,105,31.6,0.268,28,1 518 | 9,145,88,34,165,30.3,0.771,53,1 519 | 7,125,86,0,0,37.6,0.304,51,0 520 | 13,76,60,0,0,32.8,0.18,41,0 521 | 6,129,90,7,326,19.6,0.582,60,0 522 | 2,68,70,32,66,25,0.187,25,0 523 | 3,124,80,33,130,33.2,0.305,26,0 524 | 6,114,0,0,0,0,0.189,26,0 525 | 9,130,70,0,0,34.2,0.652,45,1 526 | 3,125,58,0,0,31.6,0.151,24,0 527 | 3,87,60,18,0,21.8,0.444,21,0 528 | 1,97,64,19,82,18.2,0.299,21,0 529 | 3,116,74,15,105,26.3,0.107,24,0 530 | 0,117,66,31,188,30.8,0.493,22,0 531 | 0,111,65,0,0,24.6,0.66,31,0 532 | 2,122,60,18,106,29.8,0.717,22,0 533 | 0,107,76,0,0,45.3,0.686,24,0 534 | 1,86,66,52,65,41.3,0.917,29,0 535 | 6,91,0,0,0,29.8,0.501,31,0 536 | 1,77,56,30,56,33.3,1.251,24,0 537 | 4,132,0,0,0,32.9,0.302,23,1 538 | 0,105,90,0,0,29.6,0.197,46,0 539 | 0,57,60,0,0,21.7,0.735,67,0 540 | 0,127,80,37,210,36.3,0.804,23,0 541 | 3,129,92,49,155,36.4,0.968,32,1 542 | 8,100,74,40,215,39.4,0.661,43,1 543 | 3,128,72,25,190,32.4,0.549,27,1 544 | 10,90,85,32,0,34.9,0.825,56,1 545 | 4,84,90,23,56,39.5,0.159,25,0 546 | 1,88,78,29,76,32,0.365,29,0 547 | 8,186,90,35,225,34.5,0.423,37,1 548 | 5,187,76,27,207,43.6,1.034,53,1 549 | 4,131,68,21,166,33.1,0.16,28,0 550 | 1,164,82,43,67,32.8,0.341,50,0 551 | 4,189,110,31,0,28.5,0.68,37,0 552 | 1,116,70,28,0,27.4,0.204,21,0 553 | 3,84,68,30,106,31.9,0.591,25,0 554 | 6,114,88,0,0,27.8,0.247,66,0 555 | 1,88,62,24,44,29.9,0.422,23,0 556 | 1,84,64,23,115,36.9,0.471,28,0 557 | 7,124,70,33,215,25.5,0.161,37,0 558 | 1,97,70,40,0,38.1,0.218,30,0 559 | 8,110,76,0,0,27.8,0.237,58,0 560 | 11,103,68,40,0,46.2,0.126,42,0 561 | 11,85,74,0,0,30.1,0.3,35,0 562 | 6,125,76,0,0,33.8,0.121,54,1 563 | 0,198,66,32,274,41.3,0.502,28,1 564 | 1,87,68,34,77,37.6,0.401,24,0 565 | 6,99,60,19,54,26.9,0.497,32,0 566 | 0,91,80,0,0,32.4,0.601,27,0 567 | 2,95,54,14,88,26.1,0.748,22,0 568 | 1,99,72,30,18,38.6,0.412,21,0 569 | 6,92,62,32,126,32,0.085,46,0 570 | 4,154,72,29,126,31.3,0.338,37,0 571 | 0,121,66,30,165,34.3,0.203,33,1 572 | 3,78,70,0,0,32.5,0.27,39,0 573 | 2,130,96,0,0,22.6,0.268,21,0 574 | 3,111,58,31,44,29.5,0.43,22,0 575 | 2,98,60,17,120,34.7,0.198,22,0 576 | 1,143,86,30,330,30.1,0.892,23,0 577 | 1,119,44,47,63,35.5,0.28,25,0 578 | 6,108,44,20,130,24,0.813,35,0 579 | 2,118,80,0,0,42.9,0.693,21,1 580 | 10,133,68,0,0,27,0.245,36,0 581 | 2,197,70,99,0,34.7,0.575,62,1 582 | 0,151,90,46,0,42.1,0.371,21,1 583 | 6,109,60,27,0,25,0.206,27,0 584 | 12,121,78,17,0,26.5,0.259,62,0 585 | 8,100,76,0,0,38.7,0.19,42,0 586 | 8,124,76,24,600,28.7,0.687,52,1 587 | 1,93,56,11,0,22.5,0.417,22,0 588 | 8,143,66,0,0,34.9,0.129,41,1 589 | 6,103,66,0,0,24.3,0.249,29,0 590 | 3,176,86,27,156,33.3,1.154,52,1 591 | 0,73,0,0,0,21.1,0.342,25,0 592 | 11,111,84,40,0,46.8,0.925,45,1 593 | 2,112,78,50,140,39.4,0.175,24,0 594 | 3,132,80,0,0,34.4,0.402,44,1 595 | 2,82,52,22,115,28.5,1.699,25,0 596 | 6,123,72,45,230,33.6,0.733,34,0 597 | 0,188,82,14,185,32,0.682,22,1 598 | 0,67,76,0,0,45.3,0.194,46,0 599 | 1,89,24,19,25,27.8,0.559,21,0 600 | 1,173,74,0,0,36.8,0.088,38,1 601 | 1,109,38,18,120,23.1,0.407,26,0 602 | 1,108,88,19,0,27.1,0.4,24,0 603 | 6,96,0,0,0,23.7,0.19,28,0 604 | 1,124,74,36,0,27.8,0.1,30,0 605 | 7,150,78,29,126,35.2,0.692,54,1 606 | 4,183,0,0,0,28.4,0.212,36,1 607 | 1,124,60,32,0,35.8,0.514,21,0 608 | 1,181,78,42,293,40,1.258,22,1 609 | 1,92,62,25,41,19.5,0.482,25,0 610 | 0,152,82,39,272,41.5,0.27,27,0 611 | 1,111,62,13,182,24,0.138,23,0 612 | 3,106,54,21,158,30.9,0.292,24,0 613 | 3,174,58,22,194,32.9,0.593,36,1 614 | 7,168,88,42,321,38.2,0.787,40,1 615 | 6,105,80,28,0,32.5,0.878,26,0 616 | 11,138,74,26,144,36.1,0.557,50,1 617 | 3,106,72,0,0,25.8,0.207,27,0 618 | 6,117,96,0,0,28.7,0.157,30,0 619 | 2,68,62,13,15,20.1,0.257,23,0 620 | 9,112,82,24,0,28.2,1.282,50,1 621 | 0,119,0,0,0,32.4,0.141,24,1 622 | 2,112,86,42,160,38.4,0.246,28,0 623 | 2,92,76,20,0,24.2,1.698,28,0 624 | 6,183,94,0,0,40.8,1.461,45,0 625 | 0,94,70,27,115,43.5,0.347,21,0 626 | 2,108,64,0,0,30.8,0.158,21,0 627 | 4,90,88,47,54,37.7,0.362,29,0 628 | 0,125,68,0,0,24.7,0.206,21,0 629 | 0,132,78,0,0,32.4,0.393,21,0 630 | 5,128,80,0,0,34.6,0.144,45,0 631 | 4,94,65,22,0,24.7,0.148,21,0 632 | 7,114,64,0,0,27.4,0.732,34,1 633 | 0,102,78,40,90,34.5,0.238,24,0 634 | 2,111,60,0,0,26.2,0.343,23,0 635 | 1,128,82,17,183,27.5,0.115,22,0 636 | 10,92,62,0,0,25.9,0.167,31,0 637 | 13,104,72,0,0,31.2,0.465,38,1 638 | 5,104,74,0,0,28.8,0.153,48,0 639 | 2,94,76,18,66,31.6,0.649,23,0 640 | 7,97,76,32,91,40.9,0.871,32,1 641 | 1,100,74,12,46,19.5,0.149,28,0 642 | 0,102,86,17,105,29.3,0.695,27,0 643 | 4,128,70,0,0,34.3,0.303,24,0 644 | 6,147,80,0,0,29.5,0.178,50,1 645 | 4,90,0,0,0,28,0.61,31,0 646 | 3,103,72,30,152,27.6,0.73,27,0 647 | 2,157,74,35,440,39.4,0.134,30,0 648 | 1,167,74,17,144,23.4,0.447,33,1 649 | 0,179,50,36,159,37.8,0.455,22,1 650 | 11,136,84,35,130,28.3,0.26,42,1 651 | 0,107,60,25,0,26.4,0.133,23,0 652 | 1,91,54,25,100,25.2,0.234,23,0 653 | 1,117,60,23,106,33.8,0.466,27,0 654 | 5,123,74,40,77,34.1,0.269,28,0 655 | 2,120,54,0,0,26.8,0.455,27,0 656 | 1,106,70,28,135,34.2,0.142,22,0 657 | 2,155,52,27,540,38.7,0.24,25,1 658 | 2,101,58,35,90,21.8,0.155,22,0 659 | 1,120,80,48,200,38.9,1.162,41,0 660 | 11,127,106,0,0,39,0.19,51,0 661 | 3,80,82,31,70,34.2,1.292,27,1 662 | 10,162,84,0,0,27.7,0.182,54,0 663 | 1,199,76,43,0,42.9,1.394,22,1 664 | 8,167,106,46,231,37.6,0.165,43,1 665 | 9,145,80,46,130,37.9,0.637,40,1 666 | 6,115,60,39,0,33.7,0.245,40,1 667 | 1,112,80,45,132,34.8,0.217,24,0 668 | 4,145,82,18,0,32.5,0.235,70,1 669 | 10,111,70,27,0,27.5,0.141,40,1 670 | 6,98,58,33,190,34,0.43,43,0 671 | 9,154,78,30,100,30.9,0.164,45,0 672 | 6,165,68,26,168,33.6,0.631,49,0 673 | 1,99,58,10,0,25.4,0.551,21,0 674 | 10,68,106,23,49,35.5,0.285,47,0 675 | 3,123,100,35,240,57.3,0.88,22,0 676 | 8,91,82,0,0,35.6,0.587,68,0 677 | 6,195,70,0,0,30.9,0.328,31,1 678 | 9,156,86,0,0,24.8,0.23,53,1 679 | 0,93,60,0,0,35.3,0.263,25,0 680 | 3,121,52,0,0,36,0.127,25,1 681 | 2,101,58,17,265,24.2,0.614,23,0 682 | 2,56,56,28,45,24.2,0.332,22,0 683 | 0,162,76,36,0,49.6,0.364,26,1 684 | 0,95,64,39,105,44.6,0.366,22,0 685 | 4,125,80,0,0,32.3,0.536,27,1 686 | 5,136,82,0,0,0,0.64,69,0 687 | 2,129,74,26,205,33.2,0.591,25,0 688 | 3,130,64,0,0,23.1,0.314,22,0 689 | 1,107,50,19,0,28.3,0.181,29,0 690 | 1,140,74,26,180,24.1,0.828,23,0 691 | 1,144,82,46,180,46.1,0.335,46,1 692 | 8,107,80,0,0,24.6,0.856,34,0 693 | 13,158,114,0,0,42.3,0.257,44,1 694 | 2,121,70,32,95,39.1,0.886,23,0 695 | 7,129,68,49,125,38.5,0.439,43,1 696 | 2,90,60,0,0,23.5,0.191,25,0 697 | 7,142,90,24,480,30.4,0.128,43,1 698 | 3,169,74,19,125,29.9,0.268,31,1 699 | 0,99,0,0,0,25,0.253,22,0 700 | 4,127,88,11,155,34.5,0.598,28,0 701 | 4,118,70,0,0,44.5,0.904,26,0 702 | 2,122,76,27,200,35.9,0.483,26,0 703 | 6,125,78,31,0,27.6,0.565,49,1 704 | 1,168,88,29,0,35,0.905,52,1 705 | 2,129,0,0,0,38.5,0.304,41,0 706 | 4,110,76,20,100,28.4,0.118,27,0 707 | 6,80,80,36,0,39.8,0.177,28,0 708 | 10,115,0,0,0,0,0.261,30,1 709 | 2,127,46,21,335,34.4,0.176,22,0 710 | 9,164,78,0,0,32.8,0.148,45,1 711 | 2,93,64,32,160,38,0.674,23,1 712 | 3,158,64,13,387,31.2,0.295,24,0 713 | 5,126,78,27,22,29.6,0.439,40,0 714 | 10,129,62,36,0,41.2,0.441,38,1 715 | 0,134,58,20,291,26.4,0.352,21,0 716 | 3,102,74,0,0,29.5,0.121,32,0 717 | 7,187,50,33,392,33.9,0.826,34,1 718 | 3,173,78,39,185,33.8,0.97,31,1 719 | 10,94,72,18,0,23.1,0.595,56,0 720 | 1,108,60,46,178,35.5,0.415,24,0 721 | 5,97,76,27,0,35.6,0.378,52,1 722 | 4,83,86,19,0,29.3,0.317,34,0 723 | 1,114,66,36,200,38.1,0.289,21,0 724 | 1,149,68,29,127,29.3,0.349,42,1 725 | 5,117,86,30,105,39.1,0.251,42,0 726 | 1,111,94,0,0,32.8,0.265,45,0 727 | 4,112,78,40,0,39.4,0.236,38,0 728 | 1,116,78,29,180,36.1,0.496,25,0 729 | 0,141,84,26,0,32.4,0.433,22,0 730 | 2,175,88,0,0,22.9,0.326,22,0 731 | 2,92,52,0,0,30.1,0.141,22,0 732 | 3,130,78,23,79,28.4,0.323,34,1 733 | 8,120,86,0,0,28.4,0.259,22,1 734 | 2,174,88,37,120,44.5,0.646,24,1 735 | 2,106,56,27,165,29,0.426,22,0 736 | 2,105,75,0,0,23.3,0.56,53,0 737 | 4,95,60,32,0,35.4,0.284,28,0 738 | 0,126,86,27,120,27.4,0.515,21,0 739 | 8,65,72,23,0,32,0.6,42,0 740 | 2,99,60,17,160,36.6,0.453,21,0 741 | 1,102,74,0,0,39.5,0.293,42,1 742 | 11,120,80,37,150,42.3,0.785,48,1 743 | 3,102,44,20,94,30.8,0.4,26,0 744 | 1,109,58,18,116,28.5,0.219,22,0 745 | 9,140,94,0,0,32.7,0.734,45,1 746 | 13,153,88,37,140,40.6,1.174,39,0 747 | 12,100,84,33,105,30,0.488,46,0 748 | 1,147,94,41,0,49.3,0.358,27,1 749 | 1,81,74,41,57,46.3,1.096,32,0 750 | 3,187,70,22,200,36.4,0.408,36,1 751 | 6,162,62,0,0,24.3,0.178,50,1 752 | 4,136,70,0,0,31.2,1.182,22,1 753 | 1,121,78,39,74,39,0.261,28,0 754 | 3,108,62,24,0,26,0.223,25,0 755 | 0,181,88,44,510,43.3,0.222,26,1 756 | 8,154,78,32,0,32.4,0.443,45,1 757 | 1,128,88,39,110,36.5,1.057,37,1 758 | 7,137,90,41,0,32,0.391,39,0 759 | 0,123,72,0,0,36.3,0.258,52,1 760 | 1,106,76,0,0,37.5,0.197,26,0 761 | 6,190,92,0,0,35.5,0.278,66,1 762 | 2,88,58,26,16,28.4,0.766,22,0 763 | 9,170,74,31,0,44,0.403,43,1 764 | 9,89,62,0,0,22.5,0.142,33,0 765 | 10,101,76,48,180,32.9,0.171,63,0 766 | 2,122,70,27,0,36.8,0.34,27,0 767 | 5,121,72,23,112,26.2,0.245,30,0 768 | 1,126,60,0,0,30.1,0.349,47,1 769 | 1,93,70,31,0,30.4,0.315,23,0 -------------------------------------------------------------------------------- /06_diabetese_prediction/Pima_Nulls.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Null Value Computation" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 75, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pandas as pd\n", 17 | "import numpy as np\n", 18 | "import matplotlib.pyplot as plt\n", 19 | "import seaborn as sns\n", 20 | "from IPython.display import display\n", 21 | "%matplotlib inline" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 2, 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "# set seed for reproducibility\n", 31 | "SEED = 20\n", 32 | "np.random.seed(SEED)" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 95, 38 | "metadata": {}, 39 | "outputs": [ 40 | { 41 | "data": { 42 | "text/html": [ 43 | "
\n", 44 | "\n", 57 | "\n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | "
PregnanciesGlucoseBloodPressureSkinThicknessInsulinBMIDiabetesPedigreeFunctionAgeOutcome
061487235033.60.627501
11856629026.60.351310
28183640023.30.672321
318966239428.10.167210
40137403516843.12.288331
\n", 135 | "
" 136 | ], 137 | "text/plain": [ 138 | " Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \\\n", 139 | "0 6 148 72 35 0 33.6 \n", 140 | "1 1 85 66 29 0 26.6 \n", 141 | "2 8 183 64 0 0 23.3 \n", 142 | "3 1 89 66 23 94 28.1 \n", 143 | "4 0 137 40 35 168 43.1 \n", 144 | "\n", 145 | " DiabetesPedigreeFunction Age Outcome \n", 146 | "0 0.627 50 1 \n", 147 | "1 0.351 31 0 \n", 148 | "2 0.672 32 1 \n", 149 | "3 0.167 21 0 \n", 150 | "4 2.288 33 1 " 151 | ] 152 | }, 153 | "execution_count": 95, 154 | "metadata": {}, 155 | "output_type": "execute_result" 156 | } 157 | ], 158 | "source": [ 159 | "# Loading Data\n", 160 | "df = pd.read_csv('diabetes.csv')\n", 161 | "df.head()" 162 | ] 163 | }, 164 | { 165 | "cell_type": "code", 166 | "execution_count": 96, 167 | "metadata": {}, 168 | "outputs": [ 169 | { 170 | "name": "stdout", 171 | "output_type": "stream", 172 | "text": [ 173 | "Total zero Glucose values: 5\n", 174 | "Total zero BloodPressure values: 35\n", 175 | "Total zero SkinThickness values: 227\n", 176 | "Total zero Insulin values: 374\n", 177 | "Total zero BMI values: 11\n", 178 | "Total zero DiabetesPedigreeFunction values: 0\n", 179 | "Total zero Age values: 0\n" 180 | ] 181 | } 182 | ], 183 | "source": [ 184 | "print('Total zero Glucose values: ' + str(768-df['Glucose'].astype(bool).sum(axis=0)))\n", 185 | "print('Total zero BloodPressure values: ' + str(768-df['BloodPressure'].astype(bool).sum(axis=0)))\n", 186 | "print('Total zero SkinThickness values: ' + str(768-df['SkinThickness'].astype(bool).sum(axis=0)))\n", 187 | "print('Total zero Insulin values: ' + str(768-df['Insulin'].astype(bool).sum(axis=0)))\n", 188 | "print('Total zero BMI values: ' + str(768-df['BMI'].astype(bool).sum(axis=0)))\n", 189 | "print('Total zero DiabetesPedigreeFunction values: ' + str(768-df['DiabetesPedigreeFunction'].astype(bool).sum(axis=0)))\n", 190 | "print('Total zero Age values: ' + str(768-df['Age'].astype(bool).sum(axis=0)))\n", 191 | "# These are all 0 values out of 768 in each field.\n", 192 | "# We saw outliers during our data viz. Now we need to handle these\n", 193 | "# Total zero values in DiabetesPedigreeFunction and Age variable is zero.\n", 194 | "# Pregnancy field can be 0." 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": 113, 200 | "metadata": {}, 201 | "outputs": [], 202 | "source": [ 203 | "def replace_zero(df):\n", 204 | " df_nan=df.copy(deep=True)\n", 205 | " cols = [\"Glucose\",\"BloodPressure\",\"SkinThickness\",\"Insulin\",\"BMI\"]\n", 206 | " df_nan[cols] = df_nan[cols].replace({0:np.nan}) \n", 207 | "replace_zero(df)" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 114, 213 | "metadata": {}, 214 | "outputs": [ 215 | { 216 | "data": { 217 | "text/plain": [ 218 | "Pregnancies 0\n", 219 | "Glucose 5\n", 220 | "BloodPressure 35\n", 221 | "SkinThickness 227\n", 222 | "Insulin 374\n", 223 | "BMI 11\n", 224 | "DiabetesPedigreeFunction 0\n", 225 | "Age 0\n", 226 | "Outcome 0\n", 227 | "dtype: int64" 228 | ] 229 | }, 230 | "execution_count": 114, 231 | "metadata": {}, 232 | "output_type": "execute_result" 233 | } 234 | ], 235 | "source": [ 236 | "df_nan.isnull().sum()\n", 237 | "# We have successfully replaced 0's with Null values\n", 238 | "# for colums [\"Glucose\",\"BloodPressure\",\"SkinThickness\",\"Insulin\",\"BMI\"]" 239 | ] 240 | }, 241 | { 242 | "cell_type": "code", 243 | "execution_count": 115, 244 | "metadata": {}, 245 | "outputs": [], 246 | "source": [ 247 | "# Now we need to handle Nulls somehow\n", 248 | "# to find the median for filling null values\n", 249 | "# Function outputs median value for mentioned variable based on Outcome var\n", 250 | "def replace_zero(df):\n", 251 | " df_nan=df.copy(deep=True)\n", 252 | " cols = [\"Glucose\",\"BloodPressure\",\"SkinThickness\",\"Insulin\",\"BMI\"]\n", 253 | " df_nan[cols] = df_nan[cols].replace({0:np.nan})\n", 254 | " return df_nan\n", 255 | "df_nan=replace_zero(df)" 256 | ] 257 | }, 258 | { 259 | "cell_type": "code", 260 | "execution_count": 116, 261 | "metadata": {}, 262 | "outputs": [ 263 | { 264 | "data": { 265 | "text/html": [ 266 | "
\n", 267 | "\n", 280 | "\n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | "
OutcomeGlucose
00107.0
11140.0
\n", 301 | "
" 302 | ], 303 | "text/plain": [ 304 | " Outcome Glucose\n", 305 | "0 0 107.0\n", 306 | "1 1 140.0" 307 | ] 308 | }, 309 | "execution_count": 116, 310 | "metadata": {}, 311 | "output_type": "execute_result" 312 | } 313 | ], 314 | "source": [ 315 | "find_median(df_nan,'Glucose')\n", 316 | "# 107 is the median value for Glucose var for non-diab people\n", 317 | "# 140 is the median value for Glucose var for diab people." 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "execution_count": 117, 323 | "metadata": {}, 324 | "outputs": [], 325 | "source": [ 326 | "# Function to replace Null values with relevant median values\n", 327 | "# returns number of Null values after computation (Should return 0 when called)\n", 328 | "def replace_null(frame,var):\n", 329 | " median_df=find_median(frame,var)\n", 330 | " var_0=median_df[var].iloc[0]\n", 331 | " var_1=median_df[var].iloc[1]\n", 332 | " frame.loc[(frame['Outcome'] == 0) & (frame[var].isnull()), var] = var_0\n", 333 | " frame.loc[(frame['Outcome'] == 1) & (frame[var].isnull()), var] = var_1\n", 334 | " return frame[var].isnull().sum()" 335 | ] 336 | }, 337 | { 338 | "cell_type": "code", 339 | "execution_count": 124, 340 | "metadata": {}, 341 | "outputs": [ 342 | { 343 | "name": "stdout", 344 | "output_type": "stream", 345 | "text": [ 346 | "0 Nulls for Glucose\n", 347 | "0 Nulls for SkinThickness\n", 348 | "0 Nulls for Insulin\n", 349 | "0 Nulls for BMI\n", 350 | "0 Nulls for BloodPressure\n" 351 | ] 352 | } 353 | ], 354 | "source": [ 355 | "print(str(replace_null(df_nan,'Glucose'))+ ' Nulls for Glucose')\n", 356 | "print(str(replace_null(df_nan,'SkinThickness'))+ ' Nulls for SkinThickness')\n", 357 | "print(str(replace_null(df_nan,'Insulin'))+ ' Nulls for Insulin')\n", 358 | "print(str(replace_null(df_nan,'BMI'))+ ' Nulls for BMI')\n", 359 | "print(str(replace_null(df_nan,'BloodPressure'))+ ' Nulls for BloodPressure')\n", 360 | "# We have successfully handled Nulls" 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "execution_count": 125, 366 | "metadata": {}, 367 | "outputs": [ 368 | { 369 | "data": { 370 | "text/plain": [ 371 | "Pregnancies 0\n", 372 | "Glucose 0\n", 373 | "BloodPressure 0\n", 374 | "SkinThickness 0\n", 375 | "Insulin 0\n", 376 | "BMI 0\n", 377 | "DiabetesPedigreeFunction 0\n", 378 | "Age 0\n", 379 | "Outcome 0\n", 380 | "dtype: int64" 381 | ] 382 | }, 383 | "execution_count": 125, 384 | "metadata": {}, 385 | "output_type": "execute_result" 386 | } 387 | ], 388 | "source": [ 389 | "df_nan.isnull().sum()\n", 390 | "# Just a confirmation" 391 | ] 392 | }, 393 | { 394 | "cell_type": "code", 395 | "execution_count": 126, 396 | "metadata": {}, 397 | "outputs": [ 398 | { 399 | "data": { 400 | "image/png": "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\n", 401 | "text/plain": [ 402 | "
" 403 | ] 404 | }, 405 | "metadata": { 406 | "needs_background": "light" 407 | }, 408 | "output_type": "display_data" 409 | } 410 | ], 411 | "source": [ 412 | "plt.figure(dpi = 125,figsize= (5,4))\n", 413 | "mask = np.triu(df.corr())\n", 414 | "#np.triu returns lower triangle for our heatmap as we do not need upper map\n", 415 | "sns.heatmap(df_nan.corr(),mask = mask, fmt = \".1f\",annot=True,lw=0.1,cmap = 'YlGnBu')\n", 416 | "plt.title('Correlation Map')\n", 417 | "plt.show()\n", 418 | "# New Correlation map has higher correlated values" 419 | ] 420 | }, 421 | { 422 | "cell_type": "markdown", 423 | "metadata": {}, 424 | "source": [] 425 | }, 426 | { 427 | "cell_type": "code", 428 | "execution_count": null, 429 | "metadata": {}, 430 | "outputs": [], 431 | "source": [] 432 | }, 433 | { 434 | "cell_type": "code", 435 | "execution_count": null, 436 | "metadata": {}, 437 | "outputs": [], 438 | "source": [] 439 | }, 440 | { 441 | "cell_type": "code", 442 | "execution_count": null, 443 | "metadata": {}, 444 | "outputs": [], 445 | "source": [] 446 | }, 447 | { 448 | "cell_type": "code", 449 | "execution_count": null, 450 | "metadata": {}, 451 | "outputs": [], 452 | "source": [] 453 | } 454 | ], 455 | "metadata": { 456 | "kernelspec": { 457 | "display_name": "Python 3", 458 | "language": "python", 459 | "name": "python3" 460 | }, 461 | "language_info": { 462 | "codemirror_mode": { 463 | "name": "ipython", 464 | "version": 3 465 | }, 466 | "file_extension": ".py", 467 | "mimetype": "text/x-python", 468 | "name": "python", 469 | "nbconvert_exporter": "python", 470 | "pygments_lexer": "ipython3", 471 | "version": "3.8.3" 472 | } 473 | }, 474 | "nbformat": 4, 475 | "nbformat_minor": 4 476 | } 477 | --------------------------------------------------------------------------------