├── 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 |
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 |
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 |
13 | {% if image_url %}
14 |
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 |
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 |
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 |
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 |
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 | Start Recording
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 |
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 | " Area(in sq. ft) \n",
47 | " Price(in Rs.) \n",
48 | " \n",
49 | " \n",
50 | " \n",
51 | " \n",
52 | " 0 \n",
53 | " 1000 \n",
54 | " 1500000 \n",
55 | " \n",
56 | " \n",
57 | " 1 \n",
58 | " 1200 \n",
59 | " 1800000 \n",
60 | " \n",
61 | " \n",
62 | " 2 \n",
63 | " 1500 \n",
64 | " 2250000 \n",
65 | " \n",
66 | " \n",
67 | " 3 \n",
68 | " 1800 \n",
69 | " 2700000 \n",
70 | " \n",
71 | " \n",
72 | " 4 \n",
73 | " 2000 \n",
74 | " 3000000 \n",
75 | " \n",
76 | " \n",
77 | "
\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 | " Pregnancies \n",
62 | " Glucose \n",
63 | " BloodPressure \n",
64 | " SkinThickness \n",
65 | " Insulin \n",
66 | " BMI \n",
67 | " DiabetesPedigreeFunction \n",
68 | " Age \n",
69 | " Outcome \n",
70 | " \n",
71 | " \n",
72 | " \n",
73 | " \n",
74 | " 0 \n",
75 | " 6 \n",
76 | " 148 \n",
77 | " 72 \n",
78 | " 35 \n",
79 | " 0 \n",
80 | " 33.6 \n",
81 | " 0.627 \n",
82 | " 50 \n",
83 | " 1 \n",
84 | " \n",
85 | " \n",
86 | " 1 \n",
87 | " 1 \n",
88 | " 85 \n",
89 | " 66 \n",
90 | " 29 \n",
91 | " 0 \n",
92 | " 26.6 \n",
93 | " 0.351 \n",
94 | " 31 \n",
95 | " 0 \n",
96 | " \n",
97 | " \n",
98 | " 2 \n",
99 | " 8 \n",
100 | " 183 \n",
101 | " 64 \n",
102 | " 0 \n",
103 | " 0 \n",
104 | " 23.3 \n",
105 | " 0.672 \n",
106 | " 32 \n",
107 | " 1 \n",
108 | " \n",
109 | " \n",
110 | " 3 \n",
111 | " 1 \n",
112 | " 89 \n",
113 | " 66 \n",
114 | " 23 \n",
115 | " 94 \n",
116 | " 28.1 \n",
117 | " 0.167 \n",
118 | " 21 \n",
119 | " 0 \n",
120 | " \n",
121 | " \n",
122 | " 4 \n",
123 | " 0 \n",
124 | " 137 \n",
125 | " 40 \n",
126 | " 35 \n",
127 | " 168 \n",
128 | " 43.1 \n",
129 | " 2.288 \n",
130 | " 33 \n",
131 | " 1 \n",
132 | " \n",
133 | " \n",
134 | "
\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 | " Outcome \n",
285 | " Glucose \n",
286 | " \n",
287 | " \n",
288 | " \n",
289 | " \n",
290 | " 0 \n",
291 | " 0 \n",
292 | " 107.0 \n",
293 | " \n",
294 | " \n",
295 | " 1 \n",
296 | " 1 \n",
297 | " 140.0 \n",
298 | " \n",
299 | " \n",
300 | "
\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 |
--------------------------------------------------------------------------------