├── .idea ├── .gitignore ├── vcs.xml ├── inspectionProfiles │ ├── profiles_settings.xml │ └── Project_Default.xml ├── modules.xml ├── misc.xml └── pythonProject.iml ├── requirements.txt ├── images └── sample-plot.png ├── .ipynb_checkpoints ├── Numpy-Nut-Butter-Store-Sale-checkpoint.ipynb ├── Cars-checkpoint.ipynb ├── numpy-exercises-checkpoint.ipynb └── heart-disease-checkpoint.ipynb ├── data ├── car-sales.csv └── heart-disease.csv ├── Readme.md ├── numpy-exercises.ipynb ├── heart-disease.ipynb └── Numpy-Nut-Butter-Store-Sale.ipynb /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DucAnhNTT/ML-and-DS-learning/HEAD/requirements.txt -------------------------------------------------------------------------------- /images/sample-plot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DucAnhNTT/ML-and-DS-learning/HEAD/images/sample-plot.png -------------------------------------------------------------------------------- /.ipynb_checkpoints/Numpy-Nut-Butter-Store-Sale-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [], 3 | "metadata": {}, 4 | "nbformat": 4, 5 | "nbformat_minor": 5 6 | } 7 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /data/car-sales.csv: -------------------------------------------------------------------------------- 1 | Make,Colour,Odometer (KM),Doors,Price 2 | Toyota,White,150043,4,"$4,000.00" 3 | Honda,Red,87899,4,"$5,000.00" 4 | Toyota,Blue,32549,3,"$7,000.00" 5 | BMW,Black,11179,5,"$22,000.00" 6 | Nissan,White,213095,4,"$3,500.00" 7 | Toyota,Green,99213,4,"$4,500.00" 8 | Honda,Blue,45698,4,"$7,500.00" 9 | Honda,Blue,54738,4,"$7,000.00" 10 | Toyota,White,60000,4,"$6,250.00" 11 | Nissan,White,31600,4,"$9,700.00" -------------------------------------------------------------------------------- /.idea/pythonProject.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Complete Machine Learning & Data Science Bootcamp 2023 2 | 3 | Welcome to the "Complete Machine Learning & Data Science Bootcamp 2023" on Udemy! This comprehensive course is designed to take you from a beginner to a proficient Data Scientist and Machine Learning engineer. 4 | 5 | ## Instructors 🎓 6 | - [Andrei Neagoie](instructor_profile_link) 7 | - [Daniel Bourke](instructor_profile_link) 8 | 9 | ## Course Overview 🚀 10 | 11 | This course covers a wide range of topics in Data Science and Machine Learning, including: 12 | 13 | - Data Exploration and Visualizations 📊 14 | - Neural Networks and Deep Learning 🧠 15 | - Model Evaluation and Analysis 📈 16 | - Python 3 🐍 17 | - TensorFlow 2.0 🤖 18 | - Numpy 🧮 19 | - Scikit-Learn 🛠️ 20 | - Data Science and Machine Learning Projects and Workflows 🔄 21 | - ...and much more! 22 | 23 | ## Projects 🛠️ 24 | 25 | The course emphasizes hands-on learning through real-world projects. These projects are designed to reinforce your understanding of the concepts and provide you with practical experience. Here are some of the key projects included in the course: 26 | 27 | ### 1. Heart Disease Detection ❤️ 28 | - Description: Predicting the likelihood of heart disease based on various health factors. 29 | - Skills Gained: Data preprocessing, Classification modeling, Model evaluation. 30 | 31 | ### 2. Bulldozer Price Predictor 🚜 32 | - Description: Building a model to predict the prices of bulldozers based on features. 33 | - Skills Gained: Regression modeling, Feature engineering, Data analysis. 34 | 35 | ### 3. Dog Breed Image Classifier 🐶 36 | - Description: Creating a model to classify dog breeds from images. 37 | - Skills Gained: Image recognition, Transfer Learning, Neural Networks. 38 | 39 | ## How to Use This Repository 📚 40 | 41 | 1. **Clone the Repository:** 42 | ``` 43 | git clone https://github.com/DucAnhNTT/ML-and-DS-learning.git 44 | ``` 45 | 2. **Navigate to Project Directories:** 46 | - Each project has its own directory. Navigate to a specific project directory to access its code and resources. 47 | 48 | 3. **Follow Along:** 49 | - Read the project README and instructions to understand the goals. 50 | - Explore the code in Jupyter Notebooks provided for each project. 51 | - Refer to additional resources and cheatsheets included. 52 | 53 | 4. **Contribute (Optional):** 54 | - Feel free to contribute by submitting improvements or reporting issues. 55 | 56 | ## Requirements ⚙️ 57 | - No prior experience is needed (not even Math and Statistics). We start from the very basics. 58 | - A computer (Linux/Windows/Mac) with an internet connection. 59 | - All tools used in this course are free for you to use. 60 | 61 | ## Additional Resources 📚 62 | 63 | - [Numpy Cheat Sheet](https://www.datacamp.com/cheat-sheet/numpy-cheat-sheet-data-analysis-in-python) 64 | - [Matplotlib Cheat Sheet](https://www.datacamp.com/cheat-sheet/matplotlib-cheat-sheet-plotting-in-python) 65 | 66 | ## Community 🌐 67 | Join our live online community of 900,000+ engineers on [Discord](https://zerotomastery.io/community/developer-community-discord/). 68 | 69 | ## Acknowledgments 🙌 70 | We appreciate your interest in the course! If you have any questions or feedback, feel free to reach out to the instructors. 71 | 72 | Happy learning! 73 | -------------------------------------------------------------------------------- /data/heart-disease.csv: -------------------------------------------------------------------------------- 1 | age,sex,cp,trestbps,chol,fbs,restecg,thalach,exang,oldpeak,slope,ca,thal,target 2 | 63,1,3,145,233,1,0,150,0,2.3,0,0,1,1 3 | 37,1,2,130,250,0,1,187,0,3.5,0,0,2,1 4 | 41,0,1,130,204,0,0,172,0,1.4,2,0,2,1 5 | 56,1,1,120,236,0,1,178,0,0.8,2,0,2,1 6 | 57,0,0,120,354,0,1,163,1,0.6,2,0,2,1 7 | 57,1,0,140,192,0,1,148,0,0.4,1,0,1,1 8 | 56,0,1,140,294,0,0,153,0,1.3,1,0,2,1 9 | 44,1,1,120,263,0,1,173,0,0,2,0,3,1 10 | 52,1,2,172,199,1,1,162,0,0.5,2,0,3,1 11 | 57,1,2,150,168,0,1,174,0,1.6,2,0,2,1 12 | 54,1,0,140,239,0,1,160,0,1.2,2,0,2,1 13 | 48,0,2,130,275,0,1,139,0,0.2,2,0,2,1 14 | 49,1,1,130,266,0,1,171,0,0.6,2,0,2,1 15 | 64,1,3,110,211,0,0,144,1,1.8,1,0,2,1 16 | 58,0,3,150,283,1,0,162,0,1,2,0,2,1 17 | 50,0,2,120,219,0,1,158,0,1.6,1,0,2,1 18 | 58,0,2,120,340,0,1,172,0,0,2,0,2,1 19 | 66,0,3,150,226,0,1,114,0,2.6,0,0,2,1 20 | 43,1,0,150,247,0,1,171,0,1.5,2,0,2,1 21 | 69,0,3,140,239,0,1,151,0,1.8,2,2,2,1 22 | 59,1,0,135,234,0,1,161,0,0.5,1,0,3,1 23 | 44,1,2,130,233,0,1,179,1,0.4,2,0,2,1 24 | 42,1,0,140,226,0,1,178,0,0,2,0,2,1 25 | 61,1,2,150,243,1,1,137,1,1,1,0,2,1 26 | 40,1,3,140,199,0,1,178,1,1.4,2,0,3,1 27 | 71,0,1,160,302,0,1,162,0,0.4,2,2,2,1 28 | 59,1,2,150,212,1,1,157,0,1.6,2,0,2,1 29 | 51,1,2,110,175,0,1,123,0,0.6,2,0,2,1 30 | 65,0,2,140,417,1,0,157,0,0.8,2,1,2,1 31 | 53,1,2,130,197,1,0,152,0,1.2,0,0,2,1 32 | 41,0,1,105,198,0,1,168,0,0,2,1,2,1 33 | 65,1,0,120,177,0,1,140,0,0.4,2,0,3,1 34 | 44,1,1,130,219,0,0,188,0,0,2,0,2,1 35 | 54,1,2,125,273,0,0,152,0,0.5,0,1,2,1 36 | 51,1,3,125,213,0,0,125,1,1.4,2,1,2,1 37 | 46,0,2,142,177,0,0,160,1,1.4,0,0,2,1 38 | 54,0,2,135,304,1,1,170,0,0,2,0,2,1 39 | 54,1,2,150,232,0,0,165,0,1.6,2,0,3,1 40 | 65,0,2,155,269,0,1,148,0,0.8,2,0,2,1 41 | 65,0,2,160,360,0,0,151,0,0.8,2,0,2,1 42 | 51,0,2,140,308,0,0,142,0,1.5,2,1,2,1 43 | 48,1,1,130,245,0,0,180,0,0.2,1,0,2,1 44 | 45,1,0,104,208,0,0,148,1,3,1,0,2,1 45 | 53,0,0,130,264,0,0,143,0,0.4,1,0,2,1 46 | 39,1,2,140,321,0,0,182,0,0,2,0,2,1 47 | 52,1,1,120,325,0,1,172,0,0.2,2,0,2,1 48 | 44,1,2,140,235,0,0,180,0,0,2,0,2,1 49 | 47,1,2,138,257,0,0,156,0,0,2,0,2,1 50 | 53,0,2,128,216,0,0,115,0,0,2,0,0,1 51 | 53,0,0,138,234,0,0,160,0,0,2,0,2,1 52 | 51,0,2,130,256,0,0,149,0,0.5,2,0,2,1 53 | 66,1,0,120,302,0,0,151,0,0.4,1,0,2,1 54 | 62,1,2,130,231,0,1,146,0,1.8,1,3,3,1 55 | 44,0,2,108,141,0,1,175,0,0.6,1,0,2,1 56 | 63,0,2,135,252,0,0,172,0,0,2,0,2,1 57 | 52,1,1,134,201,0,1,158,0,0.8,2,1,2,1 58 | 48,1,0,122,222,0,0,186,0,0,2,0,2,1 59 | 45,1,0,115,260,0,0,185,0,0,2,0,2,1 60 | 34,1,3,118,182,0,0,174,0,0,2,0,2,1 61 | 57,0,0,128,303,0,0,159,0,0,2,1,2,1 62 | 71,0,2,110,265,1,0,130,0,0,2,1,2,1 63 | 54,1,1,108,309,0,1,156,0,0,2,0,3,1 64 | 52,1,3,118,186,0,0,190,0,0,1,0,1,1 65 | 41,1,1,135,203,0,1,132,0,0,1,0,1,1 66 | 58,1,2,140,211,1,0,165,0,0,2,0,2,1 67 | 35,0,0,138,183,0,1,182,0,1.4,2,0,2,1 68 | 51,1,2,100,222,0,1,143,1,1.2,1,0,2,1 69 | 45,0,1,130,234,0,0,175,0,0.6,1,0,2,1 70 | 44,1,1,120,220,0,1,170,0,0,2,0,2,1 71 | 62,0,0,124,209,0,1,163,0,0,2,0,2,1 72 | 54,1,2,120,258,0,0,147,0,0.4,1,0,3,1 73 | 51,1,2,94,227,0,1,154,1,0,2,1,3,1 74 | 29,1,1,130,204,0,0,202,0,0,2,0,2,1 75 | 51,1,0,140,261,0,0,186,1,0,2,0,2,1 76 | 43,0,2,122,213,0,1,165,0,0.2,1,0,2,1 77 | 55,0,1,135,250,0,0,161,0,1.4,1,0,2,1 78 | 51,1,2,125,245,1,0,166,0,2.4,1,0,2,1 79 | 59,1,1,140,221,0,1,164,1,0,2,0,2,1 80 | 52,1,1,128,205,1,1,184,0,0,2,0,2,1 81 | 58,1,2,105,240,0,0,154,1,0.6,1,0,3,1 82 | 41,1,2,112,250,0,1,179,0,0,2,0,2,1 83 | 45,1,1,128,308,0,0,170,0,0,2,0,2,1 84 | 60,0,2,102,318,0,1,160,0,0,2,1,2,1 85 | 52,1,3,152,298,1,1,178,0,1.2,1,0,3,1 86 | 42,0,0,102,265,0,0,122,0,0.6,1,0,2,1 87 | 67,0,2,115,564,0,0,160,0,1.6,1,0,3,1 88 | 68,1,2,118,277,0,1,151,0,1,2,1,3,1 89 | 46,1,1,101,197,1,1,156,0,0,2,0,3,1 90 | 54,0,2,110,214,0,1,158,0,1.6,1,0,2,1 91 | 58,0,0,100,248,0,0,122,0,1,1,0,2,1 92 | 48,1,2,124,255,1,1,175,0,0,2,2,2,1 93 | 57,1,0,132,207,0,1,168,1,0,2,0,3,1 94 | 52,1,2,138,223,0,1,169,0,0,2,4,2,1 95 | 54,0,1,132,288,1,0,159,1,0,2,1,2,1 96 | 45,0,1,112,160,0,1,138,0,0,1,0,2,1 97 | 53,1,0,142,226,0,0,111,1,0,2,0,3,1 98 | 62,0,0,140,394,0,0,157,0,1.2,1,0,2,1 99 | 52,1,0,108,233,1,1,147,0,0.1,2,3,3,1 100 | 43,1,2,130,315,0,1,162,0,1.9,2,1,2,1 101 | 53,1,2,130,246,1,0,173,0,0,2,3,2,1 102 | 42,1,3,148,244,0,0,178,0,0.8,2,2,2,1 103 | 59,1,3,178,270,0,0,145,0,4.2,0,0,3,1 104 | 63,0,1,140,195,0,1,179,0,0,2,2,2,1 105 | 42,1,2,120,240,1,1,194,0,0.8,0,0,3,1 106 | 50,1,2,129,196,0,1,163,0,0,2,0,2,1 107 | 68,0,2,120,211,0,0,115,0,1.5,1,0,2,1 108 | 69,1,3,160,234,1,0,131,0,0.1,1,1,2,1 109 | 45,0,0,138,236,0,0,152,1,0.2,1,0,2,1 110 | 50,0,1,120,244,0,1,162,0,1.1,2,0,2,1 111 | 50,0,0,110,254,0,0,159,0,0,2,0,2,1 112 | 64,0,0,180,325,0,1,154,1,0,2,0,2,1 113 | 57,1,2,150,126,1,1,173,0,0.2,2,1,3,1 114 | 64,0,2,140,313,0,1,133,0,0.2,2,0,3,1 115 | 43,1,0,110,211,0,1,161,0,0,2,0,3,1 116 | 55,1,1,130,262,0,1,155,0,0,2,0,2,1 117 | 37,0,2,120,215,0,1,170,0,0,2,0,2,1 118 | 41,1,2,130,214,0,0,168,0,2,1,0,2,1 119 | 56,1,3,120,193,0,0,162,0,1.9,1,0,3,1 120 | 46,0,1,105,204,0,1,172,0,0,2,0,2,1 121 | 46,0,0,138,243,0,0,152,1,0,1,0,2,1 122 | 64,0,0,130,303,0,1,122,0,2,1,2,2,1 123 | 59,1,0,138,271,0,0,182,0,0,2,0,2,1 124 | 41,0,2,112,268,0,0,172,1,0,2,0,2,1 125 | 54,0,2,108,267,0,0,167,0,0,2,0,2,1 126 | 39,0,2,94,199,0,1,179,0,0,2,0,2,1 127 | 34,0,1,118,210,0,1,192,0,0.7,2,0,2,1 128 | 47,1,0,112,204,0,1,143,0,0.1,2,0,2,1 129 | 67,0,2,152,277,0,1,172,0,0,2,1,2,1 130 | 52,0,2,136,196,0,0,169,0,0.1,1,0,2,1 131 | 74,0,1,120,269,0,0,121,1,0.2,2,1,2,1 132 | 54,0,2,160,201,0,1,163,0,0,2,1,2,1 133 | 49,0,1,134,271,0,1,162,0,0,1,0,2,1 134 | 42,1,1,120,295,0,1,162,0,0,2,0,2,1 135 | 41,1,1,110,235,0,1,153,0,0,2,0,2,1 136 | 41,0,1,126,306,0,1,163,0,0,2,0,2,1 137 | 49,0,0,130,269,0,1,163,0,0,2,0,2,1 138 | 60,0,2,120,178,1,1,96,0,0,2,0,2,1 139 | 62,1,1,128,208,1,0,140,0,0,2,0,2,1 140 | 57,1,0,110,201,0,1,126,1,1.5,1,0,1,1 141 | 64,1,0,128,263,0,1,105,1,0.2,1,1,3,1 142 | 51,0,2,120,295,0,0,157,0,0.6,2,0,2,1 143 | 43,1,0,115,303,0,1,181,0,1.2,1,0,2,1 144 | 42,0,2,120,209,0,1,173,0,0,1,0,2,1 145 | 67,0,0,106,223,0,1,142,0,0.3,2,2,2,1 146 | 76,0,2,140,197,0,2,116,0,1.1,1,0,2,1 147 | 70,1,1,156,245,0,0,143,0,0,2,0,2,1 148 | 44,0,2,118,242,0,1,149,0,0.3,1,1,2,1 149 | 60,0,3,150,240,0,1,171,0,0.9,2,0,2,1 150 | 44,1,2,120,226,0,1,169,0,0,2,0,2,1 151 | 42,1,2,130,180,0,1,150,0,0,2,0,2,1 152 | 66,1,0,160,228,0,0,138,0,2.3,2,0,1,1 153 | 71,0,0,112,149,0,1,125,0,1.6,1,0,2,1 154 | 64,1,3,170,227,0,0,155,0,0.6,1,0,3,1 155 | 66,0,2,146,278,0,0,152,0,0,1,1,2,1 156 | 39,0,2,138,220,0,1,152,0,0,1,0,2,1 157 | 58,0,0,130,197,0,1,131,0,0.6,1,0,2,1 158 | 47,1,2,130,253,0,1,179,0,0,2,0,2,1 159 | 35,1,1,122,192,0,1,174,0,0,2,0,2,1 160 | 58,1,1,125,220,0,1,144,0,0.4,1,4,3,1 161 | 56,1,1,130,221,0,0,163,0,0,2,0,3,1 162 | 56,1,1,120,240,0,1,169,0,0,0,0,2,1 163 | 55,0,1,132,342,0,1,166,0,1.2,2,0,2,1 164 | 41,1,1,120,157,0,1,182,0,0,2,0,2,1 165 | 38,1,2,138,175,0,1,173,0,0,2,4,2,1 166 | 38,1,2,138,175,0,1,173,0,0,2,4,2,1 167 | 67,1,0,160,286,0,0,108,1,1.5,1,3,2,0 168 | 67,1,0,120,229,0,0,129,1,2.6,1,2,3,0 169 | 62,0,0,140,268,0,0,160,0,3.6,0,2,2,0 170 | 63,1,0,130,254,0,0,147,0,1.4,1,1,3,0 171 | 53,1,0,140,203,1,0,155,1,3.1,0,0,3,0 172 | 56,1,2,130,256,1,0,142,1,0.6,1,1,1,0 173 | 48,1,1,110,229,0,1,168,0,1,0,0,3,0 174 | 58,1,1,120,284,0,0,160,0,1.8,1,0,2,0 175 | 58,1,2,132,224,0,0,173,0,3.2,2,2,3,0 176 | 60,1,0,130,206,0,0,132,1,2.4,1,2,3,0 177 | 40,1,0,110,167,0,0,114,1,2,1,0,3,0 178 | 60,1,0,117,230,1,1,160,1,1.4,2,2,3,0 179 | 64,1,2,140,335,0,1,158,0,0,2,0,2,0 180 | 43,1,0,120,177,0,0,120,1,2.5,1,0,3,0 181 | 57,1,0,150,276,0,0,112,1,0.6,1,1,1,0 182 | 55,1,0,132,353,0,1,132,1,1.2,1,1,3,0 183 | 65,0,0,150,225,0,0,114,0,1,1,3,3,0 184 | 61,0,0,130,330,0,0,169,0,0,2,0,2,0 185 | 58,1,2,112,230,0,0,165,0,2.5,1,1,3,0 186 | 50,1,0,150,243,0,0,128,0,2.6,1,0,3,0 187 | 44,1,0,112,290,0,0,153,0,0,2,1,2,0 188 | 60,1,0,130,253,0,1,144,1,1.4,2,1,3,0 189 | 54,1,0,124,266,0,0,109,1,2.2,1,1,3,0 190 | 50,1,2,140,233,0,1,163,0,0.6,1,1,3,0 191 | 41,1,0,110,172,0,0,158,0,0,2,0,3,0 192 | 51,0,0,130,305,0,1,142,1,1.2,1,0,3,0 193 | 58,1,0,128,216,0,0,131,1,2.2,1,3,3,0 194 | 54,1,0,120,188,0,1,113,0,1.4,1,1,3,0 195 | 60,1,0,145,282,0,0,142,1,2.8,1,2,3,0 196 | 60,1,2,140,185,0,0,155,0,3,1,0,2,0 197 | 59,1,0,170,326,0,0,140,1,3.4,0,0,3,0 198 | 46,1,2,150,231,0,1,147,0,3.6,1,0,2,0 199 | 67,1,0,125,254,1,1,163,0,0.2,1,2,3,0 200 | 62,1,0,120,267,0,1,99,1,1.8,1,2,3,0 201 | 65,1,0,110,248,0,0,158,0,0.6,2,2,1,0 202 | 44,1,0,110,197,0,0,177,0,0,2,1,2,0 203 | 60,1,0,125,258,0,0,141,1,2.8,1,1,3,0 204 | 58,1,0,150,270,0,0,111,1,0.8,2,0,3,0 205 | 68,1,2,180,274,1,0,150,1,1.6,1,0,3,0 206 | 62,0,0,160,164,0,0,145,0,6.2,0,3,3,0 207 | 52,1,0,128,255,0,1,161,1,0,2,1,3,0 208 | 59,1,0,110,239,0,0,142,1,1.2,1,1,3,0 209 | 60,0,0,150,258,0,0,157,0,2.6,1,2,3,0 210 | 49,1,2,120,188,0,1,139,0,2,1,3,3,0 211 | 59,1,0,140,177,0,1,162,1,0,2,1,3,0 212 | 57,1,2,128,229,0,0,150,0,0.4,1,1,3,0 213 | 61,1,0,120,260,0,1,140,1,3.6,1,1,3,0 214 | 39,1,0,118,219,0,1,140,0,1.2,1,0,3,0 215 | 61,0,0,145,307,0,0,146,1,1,1,0,3,0 216 | 56,1,0,125,249,1,0,144,1,1.2,1,1,2,0 217 | 43,0,0,132,341,1,0,136,1,3,1,0,3,0 218 | 62,0,2,130,263,0,1,97,0,1.2,1,1,3,0 219 | 63,1,0,130,330,1,0,132,1,1.8,2,3,3,0 220 | 65,1,0,135,254,0,0,127,0,2.8,1,1,3,0 221 | 48,1,0,130,256,1,0,150,1,0,2,2,3,0 222 | 63,0,0,150,407,0,0,154,0,4,1,3,3,0 223 | 55,1,0,140,217,0,1,111,1,5.6,0,0,3,0 224 | 65,1,3,138,282,1,0,174,0,1.4,1,1,2,0 225 | 56,0,0,200,288,1,0,133,1,4,0,2,3,0 226 | 54,1,0,110,239,0,1,126,1,2.8,1,1,3,0 227 | 70,1,0,145,174,0,1,125,1,2.6,0,0,3,0 228 | 62,1,1,120,281,0,0,103,0,1.4,1,1,3,0 229 | 35,1,0,120,198,0,1,130,1,1.6,1,0,3,0 230 | 59,1,3,170,288,0,0,159,0,0.2,1,0,3,0 231 | 64,1,2,125,309,0,1,131,1,1.8,1,0,3,0 232 | 47,1,2,108,243,0,1,152,0,0,2,0,2,0 233 | 57,1,0,165,289,1,0,124,0,1,1,3,3,0 234 | 55,1,0,160,289,0,0,145,1,0.8,1,1,3,0 235 | 64,1,0,120,246,0,0,96,1,2.2,0,1,2,0 236 | 70,1,0,130,322,0,0,109,0,2.4,1,3,2,0 237 | 51,1,0,140,299,0,1,173,1,1.6,2,0,3,0 238 | 58,1,0,125,300,0,0,171,0,0,2,2,3,0 239 | 60,1,0,140,293,0,0,170,0,1.2,1,2,3,0 240 | 77,1,0,125,304,0,0,162,1,0,2,3,2,0 241 | 35,1,0,126,282,0,0,156,1,0,2,0,3,0 242 | 70,1,2,160,269,0,1,112,1,2.9,1,1,3,0 243 | 59,0,0,174,249,0,1,143,1,0,1,0,2,0 244 | 64,1,0,145,212,0,0,132,0,2,1,2,1,0 245 | 57,1,0,152,274,0,1,88,1,1.2,1,1,3,0 246 | 56,1,0,132,184,0,0,105,1,2.1,1,1,1,0 247 | 48,1,0,124,274,0,0,166,0,0.5,1,0,3,0 248 | 56,0,0,134,409,0,0,150,1,1.9,1,2,3,0 249 | 66,1,1,160,246,0,1,120,1,0,1,3,1,0 250 | 54,1,1,192,283,0,0,195,0,0,2,1,3,0 251 | 69,1,2,140,254,0,0,146,0,2,1,3,3,0 252 | 51,1,0,140,298,0,1,122,1,4.2,1,3,3,0 253 | 43,1,0,132,247,1,0,143,1,0.1,1,4,3,0 254 | 62,0,0,138,294,1,1,106,0,1.9,1,3,2,0 255 | 67,1,0,100,299,0,0,125,1,0.9,1,2,2,0 256 | 59,1,3,160,273,0,0,125,0,0,2,0,2,0 257 | 45,1,0,142,309,0,0,147,1,0,1,3,3,0 258 | 58,1,0,128,259,0,0,130,1,3,1,2,3,0 259 | 50,1,0,144,200,0,0,126,1,0.9,1,0,3,0 260 | 62,0,0,150,244,0,1,154,1,1.4,1,0,2,0 261 | 38,1,3,120,231,0,1,182,1,3.8,1,0,3,0 262 | 66,0,0,178,228,1,1,165,1,1,1,2,3,0 263 | 52,1,0,112,230,0,1,160,0,0,2,1,2,0 264 | 53,1,0,123,282,0,1,95,1,2,1,2,3,0 265 | 63,0,0,108,269,0,1,169,1,1.8,1,2,2,0 266 | 54,1,0,110,206,0,0,108,1,0,1,1,2,0 267 | 66,1,0,112,212,0,0,132,1,0.1,2,1,2,0 268 | 55,0,0,180,327,0,2,117,1,3.4,1,0,2,0 269 | 49,1,2,118,149,0,0,126,0,0.8,2,3,2,0 270 | 54,1,0,122,286,0,0,116,1,3.2,1,2,2,0 271 | 56,1,0,130,283,1,0,103,1,1.6,0,0,3,0 272 | 46,1,0,120,249,0,0,144,0,0.8,2,0,3,0 273 | 61,1,3,134,234,0,1,145,0,2.6,1,2,2,0 274 | 67,1,0,120,237,0,1,71,0,1,1,0,2,0 275 | 58,1,0,100,234,0,1,156,0,0.1,2,1,3,0 276 | 47,1,0,110,275,0,0,118,1,1,1,1,2,0 277 | 52,1,0,125,212,0,1,168,0,1,2,2,3,0 278 | 58,1,0,146,218,0,1,105,0,2,1,1,3,0 279 | 57,1,1,124,261,0,1,141,0,0.3,2,0,3,0 280 | 58,0,1,136,319,1,0,152,0,0,2,2,2,0 281 | 61,1,0,138,166,0,0,125,1,3.6,1,1,2,0 282 | 42,1,0,136,315,0,1,125,1,1.8,1,0,1,0 283 | 52,1,0,128,204,1,1,156,1,1,1,0,0,0 284 | 59,1,2,126,218,1,1,134,0,2.2,1,1,1,0 285 | 40,1,0,152,223,0,1,181,0,0,2,0,3,0 286 | 61,1,0,140,207,0,0,138,1,1.9,2,1,3,0 287 | 46,1,0,140,311,0,1,120,1,1.8,1,2,3,0 288 | 59,1,3,134,204,0,1,162,0,0.8,2,2,2,0 289 | 57,1,1,154,232,0,0,164,0,0,2,1,2,0 290 | 57,1,0,110,335,0,1,143,1,3,1,1,3,0 291 | 55,0,0,128,205,0,2,130,1,2,1,1,3,0 292 | 61,1,0,148,203,0,1,161,0,0,2,1,3,0 293 | 58,1,0,114,318,0,2,140,0,4.4,0,3,1,0 294 | 58,0,0,170,225,1,0,146,1,2.8,1,2,1,0 295 | 67,1,2,152,212,0,0,150,0,0.8,1,0,3,0 296 | 44,1,0,120,169,0,1,144,1,2.8,0,0,1,0 297 | 63,1,0,140,187,0,0,144,1,4,2,2,3,0 298 | 63,0,0,124,197,0,1,136,1,0,1,0,2,0 299 | 59,1,0,164,176,1,0,90,0,1,1,2,1,0 300 | 57,0,0,140,241,0,1,123,1,0.2,1,0,3,0 301 | 45,1,3,110,264,0,1,132,0,1.2,1,0,3,0 302 | 68,1,0,144,193,1,1,141,0,3.4,1,2,3,0 303 | 57,1,0,130,131,0,1,115,1,1.2,1,1,3,0 304 | 57,0,1,130,236,0,0,174,0,0,1,1,2,0 305 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/Cars-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "f3fe3367-8e13-4309-8501-d961eee66e18", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "id": "1e11fee9-bbcb-4c24-8f93-bf061773538c", 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import matplotlib as plt" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "id": "8156636e-ab1d-4e5c-9105-3a787fd0d04e", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "df = pd.read_csv(\"car-sales.csv\")" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 14, 36 | "id": "7c5a9bbd-a679-4a02-bd12-5bd5838c3ed1", 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "data": { 41 | "text/html": [ 42 | "
\n", 43 | "\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 | " \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 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | "
MakeColourOdometer (KM)DoorsPrice
0ToyotaWhite1500434$4,000.00
1HondaRed878994$5,000.00
2ToyotaBlue325493$7,000.00
3BMWBlack111795$22,000.00
4NissanWhite2130954$3,500.00
5ToyotaGreen992134$4,500.00
6HondaBlue456984$7,500.00
7HondaBlue547384$7,000.00
8ToyotaWhite600004$6,250.00
9NissanWhite316004$9,700.00
\n", 150 | "
" 151 | ], 152 | "text/plain": [ 153 | " Make Colour Odometer (KM) Doors Price\n", 154 | "0 Toyota White 150043 4 $4,000.00\n", 155 | "1 Honda Red 87899 4 $5,000.00\n", 156 | "2 Toyota Blue 32549 3 $7,000.00\n", 157 | "3 BMW Black 11179 5 $22,000.00\n", 158 | "4 Nissan White 213095 4 $3,500.00\n", 159 | "5 Toyota Green 99213 4 $4,500.00\n", 160 | "6 Honda Blue 45698 4 $7,500.00\n", 161 | "7 Honda Blue 54738 4 $7,000.00\n", 162 | "8 Toyota White 60000 4 $6,250.00\n", 163 | "9 Nissan White 31600 4 $9,700.00" 164 | ] 165 | }, 166 | "execution_count": 14, 167 | "metadata": {}, 168 | "output_type": "execute_result" 169 | } 170 | ], 171 | "source": [ 172 | "df" 173 | ] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": 5, 178 | "id": "85741a5d-fc3b-4bd6-a196-17e15250f749", 179 | "metadata": {}, 180 | "outputs": [ 181 | { 182 | "data": { 183 | "text/html": [ 184 | "
\n", 185 | "\n", 198 | "\n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | "
Doors345
Make
BMW001
Honda030
Nissan020
Toyota130
\n", 240 | "
" 241 | ], 242 | "text/plain": [ 243 | "Doors 3 4 5\n", 244 | "Make \n", 245 | "BMW 0 0 1\n", 246 | "Honda 0 3 0\n", 247 | "Nissan 0 2 0\n", 248 | "Toyota 1 3 0" 249 | ] 250 | }, 251 | "execution_count": 5, 252 | "metadata": {}, 253 | "output_type": "execute_result" 254 | } 255 | ], 256 | "source": [ 257 | "pd.crosstab(df.Make, df.Doors)" 258 | ] 259 | }, 260 | { 261 | "cell_type": "code", 262 | "execution_count": 10, 263 | "id": "e8fee032-08a0-465e-a7ee-69fbe411200f", 264 | "metadata": {}, 265 | "outputs": [], 266 | "source": [ 267 | "df.groupby([\"Make\"])" 268 | ] 269 | }, 270 | { 271 | "cell_type": "code", 272 | "execution_count": 13, 273 | "id": "dac685f0-0e1b-4c54-932b-aca8403e08d2", 274 | "metadata": {}, 275 | "outputs": [ 276 | { 277 | "data": { 278 | "text/html": [ 279 | "
\n", 280 | "\n", 293 | "\n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | "
MakeColourOdometer (KM)DoorsPrice
0ToyotaWhite1500434$4,000.00
1HondaRed878994$5,000.00
2ToyotaBlue325493$7,000.00
3BMWBlack111795$22,000.00
4NissanWhite2130954$3,500.00
5ToyotaGreen992134$4,500.00
6HondaBlue456984$7,500.00
7HondaBlue547384$7,000.00
8ToyotaWhite600004$6,250.00
9NissanWhite316004$9,700.00
\n", 387 | "
" 388 | ], 389 | "text/plain": [ 390 | " Make Colour Odometer (KM) Doors Price\n", 391 | "0 Toyota White 150043 4 $4,000.00\n", 392 | "1 Honda Red 87899 4 $5,000.00\n", 393 | "2 Toyota Blue 32549 3 $7,000.00\n", 394 | "3 BMW Black 11179 5 $22,000.00\n", 395 | "4 Nissan White 213095 4 $3,500.00\n", 396 | "5 Toyota Green 99213 4 $4,500.00\n", 397 | "6 Honda Blue 45698 4 $7,500.00\n", 398 | "7 Honda Blue 54738 4 $7,000.00\n", 399 | "8 Toyota White 60000 4 $6,250.00\n", 400 | "9 Nissan White 31600 4 $9,700.00" 401 | ] 402 | }, 403 | "execution_count": 13, 404 | "metadata": {}, 405 | "output_type": "execute_result" 406 | } 407 | ], 408 | "source": [ 409 | "r.head()" 410 | ] 411 | }, 412 | { 413 | "cell_type": "code", 414 | "execution_count": null, 415 | "id": "a36cf452-a716-41b1-bd07-4a0d28f5ba00", 416 | "metadata": {}, 417 | "outputs": [], 418 | "source": [] 419 | } 420 | ], 421 | "metadata": { 422 | "kernelspec": { 423 | "display_name": "Python 3 (ipykernel)", 424 | "language": "python", 425 | "name": "python3" 426 | }, 427 | "language_info": { 428 | "codemirror_mode": { 429 | "name": "ipython", 430 | "version": 3 431 | }, 432 | "file_extension": ".py", 433 | "mimetype": "text/x-python", 434 | "name": "python", 435 | "nbconvert_exporter": "python", 436 | "pygments_lexer": "ipython3", 437 | "version": "3.11.2" 438 | } 439 | }, 440 | "nbformat": 4, 441 | "nbformat_minor": 5 442 | } 443 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/numpy-exercises-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# NumPy Practice\n", 8 | "\n", 9 | "This notebook offers a set of exercises for different tasks with NumPy.\n", 10 | "\n", 11 | "It should be noted there may be more than one different way to answer a question or complete an exercise.\n", 12 | "\n", 13 | "Exercises are based off (and directly taken from) the quick introduction to NumPy notebook.\n", 14 | "\n", 15 | "Different tasks will be detailed by comments or text.\n", 16 | "\n", 17 | "For further reference and resources, it's advised to check out the [NumPy documentation](https://numpy.org/devdocs/user/index.html).\n", 18 | "\n", 19 | "And if you get stuck, try searching for a question in the following format: \"how to do XYZ with numpy\", where XYZ is the function you want to leverage from NumPy." 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 1, 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "# Import NumPy as its abbreviation 'np'\n" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 2, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "# Create a 1-dimensional NumPy array using np.array()\n", 38 | "\n", 39 | "\n", 40 | "# Create a 2-dimensional NumPy array using np.array()\n", 41 | "\n", 42 | "\n", 43 | "# Create a 3-dimensional Numpy array using np.array()\n" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "Now we've you've created 3 different arrays, let's find details about them.\n", 51 | "\n", 52 | "Find the shape, number of dimensions, data type, size and type of each array." 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 3, 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "# Attributes of 1-dimensional array (shape, \n", 62 | "# number of dimensions, data type, size and type)\n" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 4, 68 | "metadata": {}, 69 | "outputs": [], 70 | "source": [ 71 | "# Attributes of 2-dimensional array\n" 72 | ] 73 | }, 74 | { 75 | "cell_type": "code", 76 | "execution_count": 5, 77 | "metadata": {}, 78 | "outputs": [], 79 | "source": [ 80 | "# Attributes of 3-dimensional array\n" 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": 6, 86 | "metadata": {}, 87 | "outputs": [], 88 | "source": [ 89 | "# Import pandas and create a DataFrame out of one\n", 90 | "# of the arrays you've created\n" 91 | ] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": 7, 96 | "metadata": {}, 97 | "outputs": [], 98 | "source": [ 99 | "# Create an array of shape (10, 2) with only ones\n" 100 | ] 101 | }, 102 | { 103 | "cell_type": "code", 104 | "execution_count": 8, 105 | "metadata": {}, 106 | "outputs": [], 107 | "source": [ 108 | "# Create an array of shape (7, 2, 3) of only zeros\n" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 9, 114 | "metadata": {}, 115 | "outputs": [], 116 | "source": [ 117 | "# Create an array within a range of 0 and 100 with step 3\n" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 10, 123 | "metadata": {}, 124 | "outputs": [], 125 | "source": [ 126 | "# Create a random array with numbers between 0 and 10 of size (7, 2)\n" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": 11, 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": [ 135 | "# Create a random array of floats between 0 & 1 of shape (3, 5)\n" 136 | ] 137 | }, 138 | { 139 | "cell_type": "code", 140 | "execution_count": 12, 141 | "metadata": {}, 142 | "outputs": [], 143 | "source": [ 144 | "# Set the random seed to 42\n", 145 | "\n", 146 | "\n", 147 | "# Create a random array of numbers between 0 & 10 of size (4, 6)\n" 148 | ] 149 | }, 150 | { 151 | "cell_type": "markdown", 152 | "metadata": {}, 153 | "source": [ 154 | "Run the cell above again, what happens?\n", 155 | "\n", 156 | "Are the numbers in the array different or the same? Why do think this is?" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": 13, 162 | "metadata": {}, 163 | "outputs": [], 164 | "source": [ 165 | "# Create an array of random numbers between 1 & 10 of size (3, 7)\n", 166 | "# and save it to a variable\n", 167 | "\n", 168 | "\n", 169 | "# Find the unique numbers in the array you just created\n" 170 | ] 171 | }, 172 | { 173 | "cell_type": "code", 174 | "execution_count": 14, 175 | "metadata": {}, 176 | "outputs": [], 177 | "source": [ 178 | "# Find the 0'th index of the latest array you created\n" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 15, 184 | "metadata": {}, 185 | "outputs": [], 186 | "source": [ 187 | "# Get the first 2 rows of latest array you created\n" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 16, 193 | "metadata": {}, 194 | "outputs": [], 195 | "source": [ 196 | "# Get the first 2 values of the first 2 rows of the latest array\n" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": 17, 202 | "metadata": {}, 203 | "outputs": [], 204 | "source": [ 205 | "# Create a random array of numbers between 0 & 10 and an array of ones\n", 206 | "# both of size (3, 5), save them both to variables\n" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 18, 212 | "metadata": {}, 213 | "outputs": [], 214 | "source": [ 215 | "# Add the two arrays together\n" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": 19, 221 | "metadata": {}, 222 | "outputs": [], 223 | "source": [ 224 | "# Create another array of ones of shape (5, 3)\n" 225 | ] 226 | }, 227 | { 228 | "cell_type": "code", 229 | "execution_count": 20, 230 | "metadata": {}, 231 | "outputs": [], 232 | "source": [ 233 | "# Try add the array of ones and the other most recent array together\n" 234 | ] 235 | }, 236 | { 237 | "cell_type": "markdown", 238 | "metadata": {}, 239 | "source": [ 240 | "When you try the last cell, it produces an error. Why do think this is?\n", 241 | "\n", 242 | "How would you fix it?" 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "execution_count": 21, 248 | "metadata": {}, 249 | "outputs": [], 250 | "source": [ 251 | "# Create another array of ones of shape (3, 5)\n" 252 | ] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "execution_count": 22, 257 | "metadata": {}, 258 | "outputs": [], 259 | "source": [ 260 | "# Subtract the new array of ones from the other most recent array\n" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 23, 266 | "metadata": {}, 267 | "outputs": [], 268 | "source": [ 269 | "# Multiply the ones array with the latest array\n" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 24, 275 | "metadata": {}, 276 | "outputs": [], 277 | "source": [ 278 | "# Take the latest array to the power of 2 using '**'\n" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 25, 284 | "metadata": {}, 285 | "outputs": [], 286 | "source": [ 287 | "# Do the same thing with np.square()\n" 288 | ] 289 | }, 290 | { 291 | "cell_type": "code", 292 | "execution_count": 26, 293 | "metadata": {}, 294 | "outputs": [], 295 | "source": [ 296 | "# Find the mean of the latest array using np.mean()\n" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 27, 302 | "metadata": {}, 303 | "outputs": [], 304 | "source": [ 305 | "# Find the maximum of the latest array using np.max()\n" 306 | ] 307 | }, 308 | { 309 | "cell_type": "code", 310 | "execution_count": 28, 311 | "metadata": {}, 312 | "outputs": [], 313 | "source": [ 314 | "# Find the minimum of the latest array using np.min()\n" 315 | ] 316 | }, 317 | { 318 | "cell_type": "code", 319 | "execution_count": 29, 320 | "metadata": {}, 321 | "outputs": [], 322 | "source": [ 323 | "# Find the standard deviation of the latest array\n" 324 | ] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 30, 329 | "metadata": {}, 330 | "outputs": [], 331 | "source": [ 332 | "# Find the variance of the latest array\n" 333 | ] 334 | }, 335 | { 336 | "cell_type": "code", 337 | "execution_count": 31, 338 | "metadata": {}, 339 | "outputs": [], 340 | "source": [ 341 | "# Reshape the latest array to (3, 5, 1)\n" 342 | ] 343 | }, 344 | { 345 | "cell_type": "code", 346 | "execution_count": 32, 347 | "metadata": {}, 348 | "outputs": [], 349 | "source": [ 350 | "# Transpose the latest array\n" 351 | ] 352 | }, 353 | { 354 | "cell_type": "markdown", 355 | "metadata": {}, 356 | "source": [ 357 | "What does the transpose do?" 358 | ] 359 | }, 360 | { 361 | "cell_type": "code", 362 | "execution_count": 33, 363 | "metadata": {}, 364 | "outputs": [], 365 | "source": [ 366 | "# Create two arrays of random integers between 0 to 10\n", 367 | "# one of size (3, 3) the other of size (3, 2)\n" 368 | ] 369 | }, 370 | { 371 | "cell_type": "code", 372 | "execution_count": 34, 373 | "metadata": {}, 374 | "outputs": [], 375 | "source": [ 376 | "# Perform a dot product on the two newest arrays you created\n" 377 | ] 378 | }, 379 | { 380 | "cell_type": "code", 381 | "execution_count": 35, 382 | "metadata": {}, 383 | "outputs": [], 384 | "source": [ 385 | "# Create two arrays of random integers between 0 to 10\n", 386 | "# both of size (4, 3)\n" 387 | ] 388 | }, 389 | { 390 | "cell_type": "code", 391 | "execution_count": 36, 392 | "metadata": {}, 393 | "outputs": [], 394 | "source": [ 395 | "# Perform a dot product on the two newest arrays you created\n" 396 | ] 397 | }, 398 | { 399 | "cell_type": "markdown", 400 | "metadata": {}, 401 | "source": [ 402 | "It doesn't work. How would you fix it?" 403 | ] 404 | }, 405 | { 406 | "cell_type": "code", 407 | "execution_count": 37, 408 | "metadata": {}, 409 | "outputs": [], 410 | "source": [ 411 | "# Take the latest two arrays, perform a transpose on one of them and then perform \n", 412 | "# a dot product on them both\n" 413 | ] 414 | }, 415 | { 416 | "cell_type": "markdown", 417 | "metadata": {}, 418 | "source": [ 419 | "Notice how performing a transpose allows the dot product to happen.\n", 420 | "\n", 421 | "Why is this?\n", 422 | "\n", 423 | "Checking out the documentation on [`np.dot()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html) may help, as well as reading [Math is Fun's guide on the dot product](https://www.mathsisfun.com/algebra/vectors-dot-product.html).\n", 424 | "\n", 425 | "Let's now compare arrays." 426 | ] 427 | }, 428 | { 429 | "cell_type": "code", 430 | "execution_count": 38, 431 | "metadata": {}, 432 | "outputs": [], 433 | "source": [ 434 | "# Create two arrays of random integers between 0 & 10 of the same shape\n", 435 | "# and save them to variables\n" 436 | ] 437 | }, 438 | { 439 | "cell_type": "code", 440 | "execution_count": 39, 441 | "metadata": {}, 442 | "outputs": [], 443 | "source": [ 444 | "# Compare the two arrays with '>'\n" 445 | ] 446 | }, 447 | { 448 | "cell_type": "markdown", 449 | "metadata": {}, 450 | "source": [ 451 | "What happens when you compare the arrays with `>`?" 452 | ] 453 | }, 454 | { 455 | "cell_type": "code", 456 | "execution_count": 40, 457 | "metadata": {}, 458 | "outputs": [], 459 | "source": [ 460 | "# Compare the two arrays with '>='\n" 461 | ] 462 | }, 463 | { 464 | "cell_type": "code", 465 | "execution_count": 41, 466 | "metadata": {}, 467 | "outputs": [], 468 | "source": [ 469 | "# Find which elements of the first array are greater than 7\n" 470 | ] 471 | }, 472 | { 473 | "cell_type": "code", 474 | "execution_count": 42, 475 | "metadata": {}, 476 | "outputs": [], 477 | "source": [ 478 | "# Which parts of each array are equal? (try using '==')\n" 479 | ] 480 | }, 481 | { 482 | "cell_type": "code", 483 | "execution_count": 43, 484 | "metadata": {}, 485 | "outputs": [], 486 | "source": [ 487 | "# Sort one of the arrays you just created in ascending order\n" 488 | ] 489 | }, 490 | { 491 | "cell_type": "code", 492 | "execution_count": 44, 493 | "metadata": {}, 494 | "outputs": [], 495 | "source": [ 496 | "# Sort the indexes of one of the arrays you just created\n" 497 | ] 498 | }, 499 | { 500 | "cell_type": "code", 501 | "execution_count": 45, 502 | "metadata": {}, 503 | "outputs": [], 504 | "source": [ 505 | "# Find the index with the maximum value in one of the arrays you've created\n" 506 | ] 507 | }, 508 | { 509 | "cell_type": "code", 510 | "execution_count": 46, 511 | "metadata": {}, 512 | "outputs": [], 513 | "source": [ 514 | "# Find the index with the minimum value in one of the arrays you've created\n" 515 | ] 516 | }, 517 | { 518 | "cell_type": "code", 519 | "execution_count": 47, 520 | "metadata": {}, 521 | "outputs": [], 522 | "source": [ 523 | "# Find the indexes with the maximum values down the 1st axis (axis=1)\n", 524 | "# of one of the arrays you created\n" 525 | ] 526 | }, 527 | { 528 | "cell_type": "code", 529 | "execution_count": 48, 530 | "metadata": {}, 531 | "outputs": [], 532 | "source": [ 533 | "# Find the indexes with the minimum values across the 0th axis (axis=0)\n", 534 | "# of one of the arrays you created\n" 535 | ] 536 | }, 537 | { 538 | "cell_type": "code", 539 | "execution_count": 49, 540 | "metadata": {}, 541 | "outputs": [], 542 | "source": [ 543 | "# Create an array of normally distributed random numbers\n" 544 | ] 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 50, 549 | "metadata": {}, 550 | "outputs": [], 551 | "source": [ 552 | "# Create an array with 10 evenly spaced numbers between 1 and 100\n" 553 | ] 554 | }, 555 | { 556 | "cell_type": "markdown", 557 | "metadata": {}, 558 | "source": [ 559 | "## Extensions\n", 560 | "\n", 561 | "For more exercises, check out the [NumPy quickstart tutorial](https://numpy.org/doc/stable/user/quickstart.html). A good practice would be to read through it and for the parts you find interesting, add them into the end of this notebook.\n", 562 | "\n", 563 | "Pay particular attention to the section on broadcasting. And most importantly, get hands-on with the code as much as possible. If in dobut, run the code, see what it does.\n", 564 | "\n", 565 | "The next place you could go is the [Stack Overflow page for the top questions and answers for NumPy](https://stackoverflow.com/questions/tagged/numpy?sort=MostVotes&edited=true). Often, you'll find some of the most common and useful NumPy functions here. Don't forget to play around with the filters! You'll likely find something helpful here.\n", 566 | "\n", 567 | "Finally, as always, remember, the best way to learn something new is to try it. And try it relentlessly. If you get interested in some kind of NumPy function, asking yourself, \"I wonder if NumPy could do that?\", go and find out." 568 | ] 569 | } 570 | ], 571 | "metadata": { 572 | "kernelspec": { 573 | "display_name": "Python 3", 574 | "language": "python", 575 | "name": "python3" 576 | }, 577 | "language_info": { 578 | "codemirror_mode": { 579 | "name": "ipython", 580 | "version": 3 581 | }, 582 | "file_extension": ".py", 583 | "mimetype": "text/x-python", 584 | "name": "python", 585 | "nbconvert_exporter": "python", 586 | "pygments_lexer": "ipython3", 587 | "version": "3.8.3" 588 | } 589 | }, 590 | "nbformat": 4, 591 | "nbformat_minor": 2 592 | } 593 | -------------------------------------------------------------------------------- /numpy-exercises.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# NumPy Practice\n", 8 | "\n", 9 | "This notebook offers a set of exercises for different tasks with NumPy.\n", 10 | "\n", 11 | "It should be noted there may be more than one different way to answer a question or complete an exercise.\n", 12 | "\n", 13 | "Exercises are based off (and directly taken from) the quick introduction to NumPy notebook.\n", 14 | "\n", 15 | "Different tasks will be detailed by comments or text.\n", 16 | "\n", 17 | "For further reference and resources, it's advised to check out the [NumPy documentation](https://numpy.org/devdocs/user/index.html).\n", 18 | "\n", 19 | "And if you get stuck, try searching for a question in the following format: \"how to do XYZ with numpy\", where XYZ is the function you want to leverage from NumPy." 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 1, 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "# Import NumPy as its abbreviation 'np'\n", 29 | "import numpy as np" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "name": "stdout", 39 | "output_type": "stream", 40 | "text": [ 41 | "[1 2 3 4]\n", 42 | "[[7 3 9]\n", 43 | " [9 0 4]]\n", 44 | "[[[3 1 6]\n", 45 | " [1 8 9]\n", 46 | " [4 6 6]]\n", 47 | "\n", 48 | " [[6 9 7]\n", 49 | " [9 8 4]\n", 50 | " [5 7 7]]]\n" 51 | ] 52 | } 53 | ], 54 | "source": [ 55 | "# Create a 1-dimensional NumPy array using np.array()\n", 56 | "array1 = np.array([1,2,3,4])\n", 57 | "\n", 58 | "# Create a 2-dimensional NumPy array using np.array()\n", 59 | "array2 = np.random.randint(10, size=(2,3))\n", 60 | "\n", 61 | "\n", 62 | "# Create a 3-dimensional Numpy array using np.array()\n", 63 | "array3 = np.random.randint(10, size = (2,3,3))\n", 64 | "\n", 65 | "print(array1)\n", 66 | "\n", 67 | "print(array2)\n", 68 | "print(array3)\n" 69 | ] 70 | }, 71 | { 72 | "cell_type": "markdown", 73 | "metadata": {}, 74 | "source": [ 75 | "Now we've you've created 3 different arrays, let's find details about them.\n", 76 | "\n", 77 | "Find the shape, number of dimensions, data type, size and type of each array." 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 3, 83 | "metadata": {}, 84 | "outputs": [], 85 | "source": [ 86 | "array2.base\n" 87 | ] 88 | }, 89 | { 90 | "cell_type": "code", 91 | "execution_count": 4, 92 | "metadata": {}, 93 | "outputs": [ 94 | { 95 | "data": { 96 | "text/plain": [ 97 | "dtype('int32')" 98 | ] 99 | }, 100 | "execution_count": 4, 101 | "metadata": {}, 102 | "output_type": "execute_result" 103 | } 104 | ], 105 | "source": [ 106 | "# Attributes of 1-dimensional array (shape, \n", 107 | "# number of dimensions, data type, size and type)\n", 108 | "array1.shape\n", 109 | "array1.size\n", 110 | "array1.dtype\n" 111 | ] 112 | }, 113 | { 114 | "cell_type": "code", 115 | "execution_count": 5, 116 | "metadata": {}, 117 | "outputs": [ 118 | { 119 | "data": { 120 | "text/plain": [ 121 | "(2, 3)" 122 | ] 123 | }, 124 | "execution_count": 5, 125 | "metadata": {}, 126 | "output_type": "execute_result" 127 | } 128 | ], 129 | "source": [ 130 | "# Attributes of 2-dimensional array\n", 131 | "array2.shape\n", 132 | "#array2.size\n", 133 | "#array2.dtype" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 6, 139 | "metadata": {}, 140 | "outputs": [ 141 | { 142 | "data": { 143 | "text/plain": [ 144 | "dtype('int32')" 145 | ] 146 | }, 147 | "execution_count": 6, 148 | "metadata": {}, 149 | "output_type": "execute_result" 150 | } 151 | ], 152 | "source": [ 153 | "# Attributes of 3-dimensional array\n", 154 | "array3.shape\n", 155 | "array3.size\n", 156 | "array3.dtype" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": 7, 162 | "metadata": {}, 163 | "outputs": [], 164 | "source": [ 165 | "# Import pandas and create a DataFrame out of one\n", 166 | "# of the arrays you've created\n", 167 | "import pandas as pd" 168 | ] 169 | }, 170 | { 171 | "cell_type": "code", 172 | "execution_count": 8, 173 | "metadata": {}, 174 | "outputs": [ 175 | { 176 | "data": { 177 | "text/plain": [ 178 | "array([[1., 1.],\n", 179 | " [1., 1.],\n", 180 | " [1., 1.],\n", 181 | " [1., 1.],\n", 182 | " [1., 1.],\n", 183 | " [1., 1.],\n", 184 | " [1., 1.],\n", 185 | " [1., 1.],\n", 186 | " [1., 1.],\n", 187 | " [1., 1.]])" 188 | ] 189 | }, 190 | "execution_count": 8, 191 | "metadata": {}, 192 | "output_type": "execute_result" 193 | } 194 | ], 195 | "source": [ 196 | "# Create an array of shape (10, 2) with only ones\n", 197 | "array2dOnly1 = np.ones(shape = (10,2))\n", 198 | "array2dOnly1" 199 | ] 200 | }, 201 | { 202 | "cell_type": "code", 203 | "execution_count": 9, 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "text/plain": [ 209 | "array([[[1., 1., 1.],\n", 210 | " [1., 1., 1.]],\n", 211 | "\n", 212 | " [[1., 1., 1.],\n", 213 | " [1., 1., 1.]],\n", 214 | "\n", 215 | " [[1., 1., 1.],\n", 216 | " [1., 1., 1.]],\n", 217 | "\n", 218 | " [[1., 1., 1.],\n", 219 | " [1., 1., 1.]],\n", 220 | "\n", 221 | " [[1., 1., 1.],\n", 222 | " [1., 1., 1.]],\n", 223 | "\n", 224 | " [[1., 1., 1.],\n", 225 | " [1., 1., 1.]],\n", 226 | "\n", 227 | " [[1., 1., 1.],\n", 228 | " [1., 1., 1.]]])" 229 | ] 230 | }, 231 | "execution_count": 9, 232 | "metadata": {}, 233 | "output_type": "execute_result" 234 | } 235 | ], 236 | "source": [ 237 | "# Create an array of shape (7, 2, 3) of only zeros\n", 238 | "array3dOnly1 = np.ones(shape = (7,2,3))\n", 239 | "array3dOnly1" 240 | ] 241 | }, 242 | { 243 | "cell_type": "code", 244 | "execution_count": 10, 245 | "metadata": {}, 246 | "outputs": [ 247 | { 248 | "data": { 249 | "text/plain": [ 250 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", 251 | " 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,\n", 252 | " 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,\n", 253 | " 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n", 254 | " 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,\n", 255 | " 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])" 256 | ] 257 | }, 258 | "execution_count": 10, 259 | "metadata": {}, 260 | "output_type": "execute_result" 261 | } 262 | ], 263 | "source": [ 264 | "# Create an array within a range of 0 and 100 with step 3\n", 265 | "array0to100 = np.arange(100)\n", 266 | "array0to100" 267 | ] 268 | }, 269 | { 270 | "cell_type": "code", 271 | "execution_count": 11, 272 | "metadata": {}, 273 | "outputs": [ 274 | { 275 | "data": { 276 | "text/plain": [ 277 | "array([[8, 4],\n", 278 | " [0, 9],\n", 279 | " [0, 1],\n", 280 | " [6, 2],\n", 281 | " [4, 6],\n", 282 | " [8, 3],\n", 283 | " [0, 1]])" 284 | ] 285 | }, 286 | "execution_count": 11, 287 | "metadata": {}, 288 | "output_type": "execute_result" 289 | } 290 | ], 291 | "source": [ 292 | "# Create a random array with numbers between 0 and 10 of size (7, 2)\n", 293 | "rand_7_2 = np.random.randint(10, size = (7,2))\n", 294 | "rand_7_2" 295 | ] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "execution_count": 12, 300 | "metadata": {}, 301 | "outputs": [ 302 | { 303 | "data": { 304 | "text/plain": [ 305 | "array([[0.13430211, 0.4383418 , 0.29395265, 0.70202434, 0.00644317],\n", 306 | " [0.21558637, 0.55736248, 0.7055187 , 0.5364469 , 0.00239049],\n", 307 | " [0.80649996, 0.78122991, 0.52108444, 0.19447445, 0.62157576]])" 308 | ] 309 | }, 310 | "execution_count": 12, 311 | "metadata": {}, 312 | "output_type": "execute_result" 313 | } 314 | ], 315 | "source": [ 316 | "# Create a random array of floats between 0 & 1 of shape (3, 5)\n", 317 | "rand_7_2 = np.random.rand(3,5)\n", 318 | "rand_7_2" 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 13, 324 | "metadata": {}, 325 | "outputs": [ 326 | { 327 | "data": { 328 | "text/plain": [ 329 | "array([[0.37454012, 0.95071431, 0.73199394, 0.59865848, 0.15601864,\n", 330 | " 0.15599452],\n", 331 | " [0.05808361, 0.86617615, 0.60111501, 0.70807258, 0.02058449,\n", 332 | " 0.96990985],\n", 333 | " [0.83244264, 0.21233911, 0.18182497, 0.18340451, 0.30424224,\n", 334 | " 0.52475643],\n", 335 | " [0.43194502, 0.29122914, 0.61185289, 0.13949386, 0.29214465,\n", 336 | " 0.36636184]])" 337 | ] 338 | }, 339 | "execution_count": 13, 340 | "metadata": {}, 341 | "output_type": "execute_result" 342 | } 343 | ], 344 | "source": [ 345 | "# Set the random seed to 42\n", 346 | "np.random.seed(42)\n", 347 | "\n", 348 | "# Create a random array of numbers between 0 & 10 of size (4, 6)\n", 349 | "rand_4_6 = np.random.rand(4,6)\n", 350 | "rand_4_6" 351 | ] 352 | }, 353 | { 354 | "cell_type": "markdown", 355 | "metadata": {}, 356 | "source": [ 357 | "Run the cell above again, what happens?\n", 358 | "\n", 359 | "Are the numbers in the array different or the same? Why do think this is?" 360 | ] 361 | }, 362 | { 363 | "cell_type": "code", 364 | "execution_count": 14, 365 | "metadata": {}, 366 | "outputs": [], 367 | "source": [ 368 | "a_var = np.random.randint(10, size =(2,5))\n", 369 | "\n", 370 | "#np.unique(a_var)" 371 | ] 372 | }, 373 | { 374 | "cell_type": "code", 375 | "execution_count": 15, 376 | "metadata": {}, 377 | "outputs": [ 378 | { 379 | "data": { 380 | "text/plain": [ 381 | "6" 382 | ] 383 | }, 384 | "execution_count": 15, 385 | "metadata": {}, 386 | "output_type": "execute_result" 387 | } 388 | ], 389 | "source": [ 390 | "# Find the 0'th index of the latest array you created\n", 391 | "a_var[0][1]" 392 | ] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": 16, 397 | "metadata": {}, 398 | "outputs": [ 399 | { 400 | "data": { 401 | "text/plain": [ 402 | "array([[2, 6, 3, 8, 2]])" 403 | ] 404 | }, 405 | "execution_count": 16, 406 | "metadata": {}, 407 | "output_type": "execute_result" 408 | } 409 | ], 410 | "source": [ 411 | "# Get the first 2 rows of latest array you created\n", 412 | "a_var[:1][:1]" 413 | ] 414 | }, 415 | { 416 | "cell_type": "code", 417 | "execution_count": 56, 418 | "metadata": {}, 419 | "outputs": [ 420 | { 421 | "data": { 422 | "text/plain": [ 423 | "array([[2, 6],\n", 424 | " [4, 2]])" 425 | ] 426 | }, 427 | "execution_count": 56, 428 | "metadata": {}, 429 | "output_type": "execute_result" 430 | } 431 | ], 432 | "source": [ 433 | "# Get the first 2 values of the first 2 rows of the latest array\n", 434 | "new = a_var[:2,:2]\n", 435 | "new" 436 | ] 437 | }, 438 | { 439 | "cell_type": "code", 440 | "execution_count": 63, 441 | "metadata": {}, 442 | "outputs": [], 443 | "source": [ 444 | "# Create a random array of numbers between 0 & 10 and an array of ones\n", 445 | "# both of size (3, 5), save them both to variables\n", 446 | "\n", 447 | "array_1 = np.ones((3, 5))\n", 448 | "array_2 = np.random.randint(10, size =(3,5))\n" 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "execution_count": 67, 454 | "metadata": {}, 455 | "outputs": [], 456 | "source": [ 457 | "# Add the two arrays together\n", 458 | "array_3 = array_1 + array_2" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "execution_count": 65, 464 | "metadata": {}, 465 | "outputs": [], 466 | "source": [ 467 | "# Create another array of ones of shape (5, 3)\n", 468 | "array_4 = np.random.randint(10, size = (5,3))" 469 | ] 470 | }, 471 | { 472 | "cell_type": "code", 473 | "execution_count": 69, 474 | "metadata": {}, 475 | "outputs": [ 476 | { 477 | "data": { 478 | "text/plain": [ 479 | "array([[10., 5., 9., 14., 3.],\n", 480 | " [11., 10., 19., 6., 11.],\n", 481 | " [11., 12., 11., 12., 4.]])" 482 | ] 483 | }, 484 | "execution_count": 69, 485 | "metadata": {}, 486 | "output_type": "execute_result" 487 | } 488 | ], 489 | "source": [ 490 | "# Try add the array of ones and the other most recent array together\n", 491 | "array_3 + array_4.T" 492 | ] 493 | }, 494 | { 495 | "cell_type": "markdown", 496 | "metadata": {}, 497 | "source": [ 498 | "When you try the last cell, it produces an error. Why do think this is?\n", 499 | "\n", 500 | "How would you fix it?" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "execution_count": 22, 506 | "metadata": {}, 507 | "outputs": [], 508 | "source": [ 509 | "# Create another array of ones of shape (3, 5)\n" 510 | ] 511 | }, 512 | { 513 | "cell_type": "code", 514 | "execution_count": 23, 515 | "metadata": {}, 516 | "outputs": [], 517 | "source": [ 518 | "# Subtract the new array of ones from the other most recent array\n" 519 | ] 520 | }, 521 | { 522 | "cell_type": "code", 523 | "execution_count": 24, 524 | "metadata": {}, 525 | "outputs": [], 526 | "source": [ 527 | "# Multiply the ones array with the latest array\n" 528 | ] 529 | }, 530 | { 531 | "cell_type": "code", 532 | "execution_count": 25, 533 | "metadata": {}, 534 | "outputs": [], 535 | "source": [ 536 | "# Take the latest array to the power of 2 using '**'\n" 537 | ] 538 | }, 539 | { 540 | "cell_type": "code", 541 | "execution_count": 26, 542 | "metadata": {}, 543 | "outputs": [], 544 | "source": [ 545 | "# Do the same thing with np.square()\n" 546 | ] 547 | }, 548 | { 549 | "cell_type": "code", 550 | "execution_count": 27, 551 | "metadata": {}, 552 | "outputs": [], 553 | "source": [ 554 | "# Find the mean of the latest array using np.mean()\n" 555 | ] 556 | }, 557 | { 558 | "cell_type": "code", 559 | "execution_count": 28, 560 | "metadata": {}, 561 | "outputs": [], 562 | "source": [ 563 | "# Find the maximum of the latest array using np.max()\n" 564 | ] 565 | }, 566 | { 567 | "cell_type": "code", 568 | "execution_count": 29, 569 | "metadata": {}, 570 | "outputs": [], 571 | "source": [ 572 | "# Find the minimum of the latest array using np.min()\n" 573 | ] 574 | }, 575 | { 576 | "cell_type": "code", 577 | "execution_count": 30, 578 | "metadata": {}, 579 | "outputs": [], 580 | "source": [ 581 | "# Find the standard deviation of the latest array\n" 582 | ] 583 | }, 584 | { 585 | "cell_type": "code", 586 | "execution_count": 31, 587 | "metadata": {}, 588 | "outputs": [], 589 | "source": [ 590 | "# Find the variance of the latest array\n" 591 | ] 592 | }, 593 | { 594 | "cell_type": "code", 595 | "execution_count": 32, 596 | "metadata": {}, 597 | "outputs": [], 598 | "source": [ 599 | "# Reshape the latest array to (3, 5, 1)\n" 600 | ] 601 | }, 602 | { 603 | "cell_type": "code", 604 | "execution_count": 33, 605 | "metadata": {}, 606 | "outputs": [], 607 | "source": [ 608 | "# Transpose the latest array\n" 609 | ] 610 | }, 611 | { 612 | "cell_type": "markdown", 613 | "metadata": {}, 614 | "source": [ 615 | "What does the transpose do?" 616 | ] 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": 34, 621 | "metadata": {}, 622 | "outputs": [], 623 | "source": [ 624 | "# Create two arrays of random integers between 0 to 10\n", 625 | "# one of size (3, 3) the other of size (3, 2)\n" 626 | ] 627 | }, 628 | { 629 | "cell_type": "code", 630 | "execution_count": 35, 631 | "metadata": {}, 632 | "outputs": [], 633 | "source": [ 634 | "# Perform a dot product on the two newest arrays you created\n" 635 | ] 636 | }, 637 | { 638 | "cell_type": "code", 639 | "execution_count": 36, 640 | "metadata": {}, 641 | "outputs": [], 642 | "source": [ 643 | "# Create two arrays of random integers between 0 to 10\n", 644 | "# both of size (4, 3)\n" 645 | ] 646 | }, 647 | { 648 | "cell_type": "code", 649 | "execution_count": 37, 650 | "metadata": {}, 651 | "outputs": [], 652 | "source": [ 653 | "# Perform a dot product on the two newest arrays you created\n" 654 | ] 655 | }, 656 | { 657 | "cell_type": "markdown", 658 | "metadata": {}, 659 | "source": [ 660 | "It doesn't work. How would you fix it?" 661 | ] 662 | }, 663 | { 664 | "cell_type": "code", 665 | "execution_count": 38, 666 | "metadata": {}, 667 | "outputs": [], 668 | "source": [ 669 | "# Take the latest two arrays, perform a transpose on one of them and then perform \n", 670 | "# a dot product on them both\n" 671 | ] 672 | }, 673 | { 674 | "cell_type": "markdown", 675 | "metadata": {}, 676 | "source": [ 677 | "Notice how performing a transpose allows the dot product to happen.\n", 678 | "\n", 679 | "Why is this?\n", 680 | "\n", 681 | "Checking out the documentation on [`np.dot()`](https://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html) may help, as well as reading [Math is Fun's guide on the dot product](https://www.mathsisfun.com/algebra/vectors-dot-product.html).\n", 682 | "\n", 683 | "Let's now compare arrays." 684 | ] 685 | }, 686 | { 687 | "cell_type": "code", 688 | "execution_count": 39, 689 | "metadata": {}, 690 | "outputs": [], 691 | "source": [ 692 | "# Create two arrays of random integers between 0 & 10 of the same shape\n", 693 | "# and save them to variables\n" 694 | ] 695 | }, 696 | { 697 | "cell_type": "code", 698 | "execution_count": 40, 699 | "metadata": {}, 700 | "outputs": [], 701 | "source": [ 702 | "# Compare the two arrays with '>'\n" 703 | ] 704 | }, 705 | { 706 | "cell_type": "markdown", 707 | "metadata": {}, 708 | "source": [ 709 | "What happens when you compare the arrays with `>`?" 710 | ] 711 | }, 712 | { 713 | "cell_type": "code", 714 | "execution_count": 41, 715 | "metadata": {}, 716 | "outputs": [], 717 | "source": [ 718 | "# Compare the two arrays with '>='\n" 719 | ] 720 | }, 721 | { 722 | "cell_type": "code", 723 | "execution_count": 42, 724 | "metadata": {}, 725 | "outputs": [], 726 | "source": [ 727 | "# Find which elements of the first array are greater than 7\n" 728 | ] 729 | }, 730 | { 731 | "cell_type": "code", 732 | "execution_count": 43, 733 | "metadata": {}, 734 | "outputs": [], 735 | "source": [ 736 | "# Which parts of each array are equal? (try using '==')\n" 737 | ] 738 | }, 739 | { 740 | "cell_type": "code", 741 | "execution_count": 44, 742 | "metadata": {}, 743 | "outputs": [], 744 | "source": [ 745 | "# Sort one of the arrays you just created in ascending order\n" 746 | ] 747 | }, 748 | { 749 | "cell_type": "code", 750 | "execution_count": 45, 751 | "metadata": {}, 752 | "outputs": [], 753 | "source": [ 754 | "# Sort the indexes of one of the arrays you just created\n" 755 | ] 756 | }, 757 | { 758 | "cell_type": "code", 759 | "execution_count": 46, 760 | "metadata": {}, 761 | "outputs": [], 762 | "source": [ 763 | "# Find the index with the maximum value in one of the arrays you've created\n" 764 | ] 765 | }, 766 | { 767 | "cell_type": "code", 768 | "execution_count": 47, 769 | "metadata": {}, 770 | "outputs": [], 771 | "source": [ 772 | "# Find the index with the minimum value in one of the arrays you've created\n" 773 | ] 774 | }, 775 | { 776 | "cell_type": "code", 777 | "execution_count": 48, 778 | "metadata": {}, 779 | "outputs": [], 780 | "source": [ 781 | "# Find the indexes with the maximum values down the 1st axis (axis=1)\n", 782 | "# of one of the arrays you created\n" 783 | ] 784 | }, 785 | { 786 | "cell_type": "code", 787 | "execution_count": 49, 788 | "metadata": {}, 789 | "outputs": [], 790 | "source": [ 791 | "# Find the indexes with the minimum values across the 0th axis (axis=0)\n", 792 | "# of one of the arrays you created\n" 793 | ] 794 | }, 795 | { 796 | "cell_type": "code", 797 | "execution_count": 50, 798 | "metadata": {}, 799 | "outputs": [], 800 | "source": [ 801 | "# Create an array of normally distributed random numbers\n" 802 | ] 803 | }, 804 | { 805 | "cell_type": "code", 806 | "execution_count": 51, 807 | "metadata": {}, 808 | "outputs": [], 809 | "source": [ 810 | "# Create an array with 10 evenly spaced numbers between 1 and 100\n" 811 | ] 812 | }, 813 | { 814 | "cell_type": "markdown", 815 | "metadata": {}, 816 | "source": [ 817 | "## Extensions\n", 818 | "\n", 819 | "For more exercises, check out the [NumPy quickstart tutorial](https://numpy.org/doc/stable/user/quickstart.html). A good practice would be to read through it and for the parts you find interesting, add them into the end of this notebook.\n", 820 | "\n", 821 | "Pay particular attention to the section on broadcasting. And most importantly, get hands-on with the code as much as possible. If in dobut, run the code, see what it does.\n", 822 | "\n", 823 | "The next place you could go is the [Stack Overflow page for the top questions and answers for NumPy](https://stackoverflow.com/questions/tagged/numpy?sort=MostVotes&edited=true). Often, you'll find some of the most common and useful NumPy functions here. Don't forget to play around with the filters! You'll likely find something helpful here.\n", 824 | "\n", 825 | "Finally, as always, remember, the best way to learn something new is to try it. And try it relentlessly. If you get interested in some kind of NumPy function, asking yourself, \"I wonder if NumPy could do that?\", go and find out." 826 | ] 827 | } 828 | ], 829 | "metadata": { 830 | "kernelspec": { 831 | "display_name": "Python 3 (ipykernel)", 832 | "language": "python", 833 | "name": "python3" 834 | }, 835 | "language_info": { 836 | "codemirror_mode": { 837 | "name": "ipython", 838 | "version": 3 839 | }, 840 | "file_extension": ".py", 841 | "mimetype": "text/x-python", 842 | "name": "python", 843 | "nbconvert_exporter": "python", 844 | "pygments_lexer": "ipython3", 845 | "version": "3.8.2" 846 | } 847 | }, 848 | "nbformat": 4, 849 | "nbformat_minor": 4 850 | } 851 | -------------------------------------------------------------------------------- /heart-disease.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "id": "8079576e-416d-4b49-81ff-7932becf3a3b", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stdout", 11 | "output_type": "stream", 12 | "text": [ 13 | "hi\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "print('hi')" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 4, 24 | "id": "11f90c3c-a88d-47e6-8a5c-a8bb08a21bb8", 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "import pandas as pd\n" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 5, 34 | "id": "7194d107-4acc-4d52-9072-b30b59de7a4d", 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\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 | " \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 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | "
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
063131452331015002.30011
137121302500118703.50021
241011302040017201.42021
356111202360117800.82021
457001203540116310.62021
\n", 162 | "
" 163 | ], 164 | "text/plain": [ 165 | " age sex cp trestbps chol fbs restecg thalach exang oldpeak slope \\\n", 166 | "0 63 1 3 145 233 1 0 150 0 2.3 0 \n", 167 | "1 37 1 2 130 250 0 1 187 0 3.5 0 \n", 168 | "2 41 0 1 130 204 0 0 172 0 1.4 2 \n", 169 | "3 56 1 1 120 236 0 1 178 0 0.8 2 \n", 170 | "4 57 0 0 120 354 0 1 163 1 0.6 2 \n", 171 | "\n", 172 | " ca thal target \n", 173 | "0 0 1 1 \n", 174 | "1 0 2 1 \n", 175 | "2 0 2 1 \n", 176 | "3 0 2 1 \n", 177 | "4 0 2 1 " 178 | ] 179 | }, 180 | "execution_count": 5, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "df = pd.read_csv('heart-disease.csv')\n", 187 | "df.head()" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 6, 193 | "id": "b74c190a-4d23-4f92-9dd5-ee3d9ea0bf80", 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "import matplotlib as mpl" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 7, 203 | "id": "280679c3-a6d5-47f4-bd13-52a58057e6df", 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "text/plain": [ 209 | "" 210 | ] 211 | }, 212 | "execution_count": 7, 213 | "metadata": {}, 214 | "output_type": "execute_result" 215 | }, 216 | { 217 | "data": { 218 | "image/png": "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tHLlysueN2HCBC1evFgul0s9evSQJO3Zs0d9+/ZVZGSkBg4cqK1bt8pisejAgQP+53744YdKT09Xx44d5XA4NGXKFP8v/WpqnpMnT16r/xwAgoRfdQ/gqqxcuVJHjhzR7bffrkWLFkmSbrzxRt18883asmWLYmNjtWfPHmVlZSkuLi7gV5kXFxfLZrNp586dkiSv16tx48ZpzJgx2rx5s06dOnXZj2pqamo0cuRI/fSnP9Xy5cv1+eefa+7cuZo0aZJ27drV5Dw33XTTtfmPASBoCBQAV8VutysiIkI33HCDnE6nf33hwoX+PycmJqq0tFSvvfZaQKB06NBBv/vd7xQRESFJKiwslMVi0dq1axUZGalevXrpk08+0YwZM/zPefHFF9WvXz89++yz/rV169YpPj5eR44cUffu3ZucB0DrQqAAaBEFBQVat26dTp8+rc8//1wXL15U3759A47p3bu3P04k6fDhw7rjjjsUGRnpX7vzzjsDnnPw4EG9/fbb6tix42Vf8/jx4+revXtwXwiAkCBQAATdq6++qscff1zPP/+8UlJS1KlTJ/3mN79RWVlZwHEdOnRo9rlra2s1btw4LVmy5LJ9cXFxVzwzALMQKACuWkREhC5duuR//P7772vIkCF69NFH/WvHjx//1vP06NFDv//971VfXy+r1SpJKi8vDzimf//+ev3119W1a1eFhzf9V9hX5wHQ+vAuHgBXrWvXriorK9PJkyd17tw5devWTRUVFdqxY4eOHDmi+fPnXxYaTfnRj36kxsZGZWVl6dChQ9qxY4eWLVsmSbJYLJKk7OxsnT9/Xg8++KDKy8t1/Phx7dixQ9OmTfNHyVfnaWxsbLkXD6BFECgArtrjjz+udu3aqVevXrrpppuUlpamiRMn6oEHHlBycrL+85//BFxN+To2m03btm3TgQMH1LdvXz311FNasGCBJPnvS3G5XHr//fd16dIl3X333erdu7dmz56t6OhohYWFNTnP6dOnW+7FA2gRFp/P5wv1EADwdTZt2qRp06bJ4/EoKioq1OMAuEa4BwWAUTZu3Kjvf//7+t73vqeDBw/6f8cJcQJcXwgUAEZxu91asGCB3G634uLidP/992vx4sWhHgvANcaPeAAAgHG4SRYAABiHQAEAAMYhUAAAgHEIFAAAYBwCBQAAGIdAAQAAxiFQAACAcQgUAABgnP8H8mwUpQi1KPYAAAAASUVORK5CYII=", 219 | "text/plain": [ 220 | "
" 221 | ] 222 | }, 223 | "metadata": {}, 224 | "output_type": "display_data" 225 | } 226 | ], 227 | "source": [ 228 | "df.target.value_counts().plot(kind=\"bar\")" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 8, 234 | "id": "2ae0498b-27ef-46cf-8e93-fabc94001f95", 235 | "metadata": {}, 236 | "outputs": [ 237 | { 238 | "data": { 239 | "text/plain": [ 240 | "0 63\n", 241 | "1 37\n", 242 | "2 41\n", 243 | "3 56\n", 244 | "4 57\n", 245 | " ..\n", 246 | "298 57\n", 247 | "299 45\n", 248 | "300 68\n", 249 | "301 57\n", 250 | "302 57\n", 251 | "Name: age, Length: 303, dtype: int64" 252 | ] 253 | }, 254 | "execution_count": 8, 255 | "metadata": {}, 256 | "output_type": "execute_result" 257 | } 258 | ], 259 | "source": [ 260 | "df.age" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 15, 266 | "id": "7a7e33d0-df4f-403f-9f9e-80c60e875e63", 267 | "metadata": {}, 268 | "outputs": [ 269 | { 270 | "data": { 271 | "text/html": [ 272 | "
\n", 273 | "\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 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | "
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
14476021401970211601.11021
15171001121490112501.61021
\n", 343 | "
" 344 | ], 345 | "text/plain": [ 346 | " age sex cp trestbps chol fbs restecg thalach exang oldpeak \\\n", 347 | "144 76 0 2 140 197 0 2 116 0 1.1 \n", 348 | "151 71 0 0 112 149 0 1 125 0 1.6 \n", 349 | "\n", 350 | " slope ca thal target \n", 351 | "144 1 0 2 1 \n", 352 | "151 1 0 2 1 " 353 | ] 354 | }, 355 | "execution_count": 15, 356 | "metadata": {}, 357 | "output_type": "execute_result" 358 | } 359 | ], 360 | "source": [ 361 | "df[(df[\"age\"] > 70) & (df[\"slope\"] == 1)]" 362 | ] 363 | }, 364 | { 365 | "cell_type": "code", 366 | "execution_count": 19, 367 | "id": "80bfab72-b767-4735-ae91-bc9b4fb36f1f", 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "text/html": [ 373 | "
\n", 374 | "\n", 387 | "\n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | "
sex01
slope
0516
14595
24696
\n", 418 | "
" 419 | ], 420 | "text/plain": [ 421 | "sex 0 1\n", 422 | "slope \n", 423 | "0 5 16\n", 424 | "1 45 95\n", 425 | "2 46 96" 426 | ] 427 | }, 428 | "execution_count": 19, 429 | "metadata": {}, 430 | "output_type": "execute_result" 431 | } 432 | ], 433 | "source": [ 434 | "pd.crosstab(df[\"slope\"], df[\"sex\"])\n" 435 | ] 436 | }, 437 | { 438 | "cell_type": "code", 439 | "execution_count": 21, 440 | "id": "8d329868-1faf-4f7b-8399-e1600d5f2891", 441 | "metadata": {}, 442 | "outputs": [], 443 | "source": [ 444 | "result = pd.crosstab(df[\"age\"], df[\"sex\"]).mean()\n" 445 | ] 446 | }, 447 | { 448 | "cell_type": "code", 449 | "execution_count": 22, 450 | "id": "d5e58d2a-91e7-4409-ac1c-a8a1dadd5689", 451 | "metadata": {}, 452 | "outputs": [ 453 | { 454 | "data": { 455 | "text/plain": [ 456 | "sex\n", 457 | "0 2.341463\n", 458 | "1 5.048780\n", 459 | "dtype: float64" 460 | ] 461 | }, 462 | "execution_count": 22, 463 | "metadata": {}, 464 | "output_type": "execute_result" 465 | } 466 | ], 467 | "source": [ 468 | "result" 469 | ] 470 | }, 471 | { 472 | "cell_type": "code", 473 | "execution_count": null, 474 | "id": "4637dd7b-861d-4214-882a-68e21b8f842a", 475 | "metadata": {}, 476 | "outputs": [], 477 | "source": [] 478 | } 479 | ], 480 | "metadata": { 481 | "kernelspec": { 482 | "display_name": "Python 3 (ipykernel)", 483 | "language": "python", 484 | "name": "python3" 485 | }, 486 | "language_info": { 487 | "codemirror_mode": { 488 | "name": "ipython", 489 | "version": 3 490 | }, 491 | "file_extension": ".py", 492 | "mimetype": "text/x-python", 493 | "name": "python", 494 | "nbconvert_exporter": "python", 495 | "pygments_lexer": "ipython3", 496 | "version": "3.11.2" 497 | } 498 | }, 499 | "nbformat": 4, 500 | "nbformat_minor": 5 501 | } 502 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/heart-disease-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "id": "8079576e-416d-4b49-81ff-7932becf3a3b", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stdout", 11 | "output_type": "stream", 12 | "text": [ 13 | "hi\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "print('hi')" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 4, 24 | "id": "11f90c3c-a88d-47e6-8a5c-a8bb08a21bb8", 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "import pandas as pd\n" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 5, 34 | "id": "7194d107-4acc-4d52-9072-b30b59de7a4d", 35 | "metadata": {}, 36 | "outputs": [ 37 | { 38 | "data": { 39 | "text/html": [ 40 | "
\n", 41 | "\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 | " \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 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | "
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
063131452331015002.30011
137121302500118703.50021
241011302040017201.42021
356111202360117800.82021
457001203540116310.62021
\n", 162 | "
" 163 | ], 164 | "text/plain": [ 165 | " age sex cp trestbps chol fbs restecg thalach exang oldpeak slope \\\n", 166 | "0 63 1 3 145 233 1 0 150 0 2.3 0 \n", 167 | "1 37 1 2 130 250 0 1 187 0 3.5 0 \n", 168 | "2 41 0 1 130 204 0 0 172 0 1.4 2 \n", 169 | "3 56 1 1 120 236 0 1 178 0 0.8 2 \n", 170 | "4 57 0 0 120 354 0 1 163 1 0.6 2 \n", 171 | "\n", 172 | " ca thal target \n", 173 | "0 0 1 1 \n", 174 | "1 0 2 1 \n", 175 | "2 0 2 1 \n", 176 | "3 0 2 1 \n", 177 | "4 0 2 1 " 178 | ] 179 | }, 180 | "execution_count": 5, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "df = pd.read_csv('heart-disease.csv')\n", 187 | "df.head()" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 6, 193 | "id": "b74c190a-4d23-4f92-9dd5-ee3d9ea0bf80", 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "import matplotlib as mpl" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 7, 203 | "id": "280679c3-a6d5-47f4-bd13-52a58057e6df", 204 | "metadata": {}, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "text/plain": [ 209 | "" 210 | ] 211 | }, 212 | "execution_count": 7, 213 | "metadata": {}, 214 | "output_type": "execute_result" 215 | }, 216 | { 217 | "data": { 218 | "image/png": "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tHLlysueN2HCBC1evFgul0s9evSQJO3Zs0d9+/ZVZGSkBg4cqK1bt8pisejAgQP+53744YdKT09Xx44d5XA4NGXKFP8v/WpqnpMnT16r/xwAgoRfdQ/gqqxcuVJHjhzR7bffrkWLFkmSbrzxRt18883asmWLYmNjtWfPHmVlZSkuLi7gV5kXFxfLZrNp586dkiSv16tx48ZpzJgx2rx5s06dOnXZj2pqamo0cuRI/fSnP9Xy5cv1+eefa+7cuZo0aZJ27drV5Dw33XTTtfmPASBoCBQAV8VutysiIkI33HCDnE6nf33hwoX+PycmJqq0tFSvvfZaQKB06NBBv/vd7xQRESFJKiwslMVi0dq1axUZGalevXrpk08+0YwZM/zPefHFF9WvXz89++yz/rV169YpPj5eR44cUffu3ZucB0DrQqAAaBEFBQVat26dTp8+rc8//1wXL15U3759A47p3bu3P04k6fDhw7rjjjsUGRnpX7vzzjsDnnPw4EG9/fbb6tix42Vf8/jx4+revXtwXwiAkCBQAATdq6++qscff1zPP/+8UlJS1KlTJ/3mN79RWVlZwHEdOnRo9rlra2s1btw4LVmy5LJ9cXFxVzwzALMQKACuWkREhC5duuR//P7772vIkCF69NFH/WvHjx//1vP06NFDv//971VfXy+r1SpJKi8vDzimf//+ev3119W1a1eFhzf9V9hX5wHQ+vAuHgBXrWvXriorK9PJkyd17tw5devWTRUVFdqxY4eOHDmi+fPnXxYaTfnRj36kxsZGZWVl6dChQ9qxY4eWLVsmSbJYLJKk7OxsnT9/Xg8++KDKy8t1/Phx7dixQ9OmTfNHyVfnaWxsbLkXD6BFECgArtrjjz+udu3aqVevXrrpppuUlpamiRMn6oEHHlBycrL+85//BFxN+To2m03btm3TgQMH1LdvXz311FNasGCBJPnvS3G5XHr//fd16dIl3X333erdu7dmz56t6OhohYWFNTnP6dOnW+7FA2gRFp/P5wv1EADwdTZt2qRp06bJ4/EoKioq1OMAuEa4BwWAUTZu3Kjvf//7+t73vqeDBw/6f8cJcQJcXwgUAEZxu91asGCB3G634uLidP/992vx4sWhHgvANcaPeAAAgHG4SRYAABiHQAEAAMYhUAAAgHEIFAAAYBwCBQAAGIdAAQAAxiFQAACAcQgUAABgnP8H8mwUpQi1KPYAAAAASUVORK5CYII=", 219 | "text/plain": [ 220 | "
" 221 | ] 222 | }, 223 | "metadata": {}, 224 | "output_type": "display_data" 225 | } 226 | ], 227 | "source": [ 228 | "df.target.value_counts().plot(kind=\"bar\")" 229 | ] 230 | }, 231 | { 232 | "cell_type": "code", 233 | "execution_count": 8, 234 | "id": "2ae0498b-27ef-46cf-8e93-fabc94001f95", 235 | "metadata": {}, 236 | "outputs": [ 237 | { 238 | "data": { 239 | "text/plain": [ 240 | "0 63\n", 241 | "1 37\n", 242 | "2 41\n", 243 | "3 56\n", 244 | "4 57\n", 245 | " ..\n", 246 | "298 57\n", 247 | "299 45\n", 248 | "300 68\n", 249 | "301 57\n", 250 | "302 57\n", 251 | "Name: age, Length: 303, dtype: int64" 252 | ] 253 | }, 254 | "execution_count": 8, 255 | "metadata": {}, 256 | "output_type": "execute_result" 257 | } 258 | ], 259 | "source": [ 260 | "df.age" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 15, 266 | "id": "7a7e33d0-df4f-403f-9f9e-80c60e875e63", 267 | "metadata": {}, 268 | "outputs": [ 269 | { 270 | "data": { 271 | "text/html": [ 272 | "
\n", 273 | "\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 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | "
agesexcptrestbpscholfbsrestecgthalachexangoldpeakslopecathaltarget
14476021401970211601.11021
15171001121490112501.61021
\n", 343 | "
" 344 | ], 345 | "text/plain": [ 346 | " age sex cp trestbps chol fbs restecg thalach exang oldpeak \\\n", 347 | "144 76 0 2 140 197 0 2 116 0 1.1 \n", 348 | "151 71 0 0 112 149 0 1 125 0 1.6 \n", 349 | "\n", 350 | " slope ca thal target \n", 351 | "144 1 0 2 1 \n", 352 | "151 1 0 2 1 " 353 | ] 354 | }, 355 | "execution_count": 15, 356 | "metadata": {}, 357 | "output_type": "execute_result" 358 | } 359 | ], 360 | "source": [ 361 | "df[(df[\"age\"] > 70) & (df[\"slope\"] == 1)]" 362 | ] 363 | }, 364 | { 365 | "cell_type": "code", 366 | "execution_count": 19, 367 | "id": "80bfab72-b767-4735-ae91-bc9b4fb36f1f", 368 | "metadata": {}, 369 | "outputs": [ 370 | { 371 | "data": { 372 | "text/html": [ 373 | "
\n", 374 | "\n", 387 | "\n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | "
sex01
slope
0516
14595
24696
\n", 418 | "
" 419 | ], 420 | "text/plain": [ 421 | "sex 0 1\n", 422 | "slope \n", 423 | "0 5 16\n", 424 | "1 45 95\n", 425 | "2 46 96" 426 | ] 427 | }, 428 | "execution_count": 19, 429 | "metadata": {}, 430 | "output_type": "execute_result" 431 | } 432 | ], 433 | "source": [ 434 | "pd.crosstab(df[\"slope\"], df[\"sex\"])\n" 435 | ] 436 | }, 437 | { 438 | "cell_type": "code", 439 | "execution_count": 21, 440 | "id": "8d329868-1faf-4f7b-8399-e1600d5f2891", 441 | "metadata": {}, 442 | "outputs": [], 443 | "source": [ 444 | "result = pd.crosstab(df[\"age\"], df[\"sex\"]).mean()\n" 445 | ] 446 | }, 447 | { 448 | "cell_type": "code", 449 | "execution_count": 22, 450 | "id": "d5e58d2a-91e7-4409-ac1c-a8a1dadd5689", 451 | "metadata": {}, 452 | "outputs": [ 453 | { 454 | "data": { 455 | "text/plain": [ 456 | "sex\n", 457 | "0 2.341463\n", 458 | "1 5.048780\n", 459 | "dtype: float64" 460 | ] 461 | }, 462 | "execution_count": 22, 463 | "metadata": {}, 464 | "output_type": "execute_result" 465 | } 466 | ], 467 | "source": [ 468 | "result" 469 | ] 470 | }, 471 | { 472 | "cell_type": "code", 473 | "execution_count": null, 474 | "id": "4637dd7b-861d-4214-882a-68e21b8f842a", 475 | "metadata": {}, 476 | "outputs": [], 477 | "source": [] 478 | } 479 | ], 480 | "metadata": { 481 | "kernelspec": { 482 | "display_name": "Python 3 (ipykernel)", 483 | "language": "python", 484 | "name": "python3" 485 | }, 486 | "language_info": { 487 | "codemirror_mode": { 488 | "name": "ipython", 489 | "version": 3 490 | }, 491 | "file_extension": ".py", 492 | "mimetype": "text/x-python", 493 | "name": "python", 494 | "nbconvert_exporter": "python", 495 | "pygments_lexer": "ipython3", 496 | "version": "3.11.2" 497 | } 498 | }, 499 | "nbformat": 4, 500 | "nbformat_minor": 5 501 | } 502 | -------------------------------------------------------------------------------- /Numpy-Nut-Butter-Store-Sale.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "2fe43d1b-9e65-4b3e-8041-76b6ba338824", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import numpy as np" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "id": "2d5b079f-46d8-4daf-9571-52ea7a518666", 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import pandas as pd" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "id": "a2e7f90f-006b-4300-aa47-c55ac41b9e9f", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "a = np.array([2, 4, 6, 8, 10, 12])" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 4, 36 | "id": "e9158626-e10f-4dfd-9062-4e50724849b2", 37 | "metadata": {}, 38 | "outputs": [], 39 | "source": [ 40 | "b = np.array([1, 50, 100, 400, 2000, 4000])" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 5, 46 | "id": "5512476c-8253-4a76-875a-3fe6513999ea", 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "data": { 51 | "text/plain": [ 52 | "(3.415650255319866, 2169983.4722222225)" 53 | ] 54 | }, 55 | "execution_count": 5, 56 | "metadata": {}, 57 | "output_type": "execute_result" 58 | } 59 | ], 60 | "source": [ 61 | "a.std(), b.var()" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": 6, 67 | "id": "653fe400-8599-4b24-896b-f8e06affa293", 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "data": { 72 | "image/png": "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/EJer1czZ87UqVOnWpzj9/vldrsji9fr7ewyAQCAJQ5jjGn3ZIdDO3fuVH5+fkzzZsyYoSFDhui///u/m90eDocVDocjj0OhkLxer4LBoFwuV3vLbdawx/Z26P5uh3fX5NkuAQCAmwqFQnK73Td9/Y75npGOMHnyZB09erTF7U6nU06n8zZWBAAAbLHyPSNVVVVKS0uzcWgAANDFxHxl5MqVKzp79mzk8blz51RVVaUBAwZoyJAhKioq0vvvv6+f/OQnkqTnnntOw4cP17333qvPP/9cL7zwgg4dOqRf/vKXHdcFAACIWzGHkYqKCn3rW9+KPF65cqUkaeHChdq2bZvq6upUW1sb2X716lU9+uijev/999W7d29lZmbqV7/6VdQ+AADAneuWbmC9Xdp6A0x7cAMrAACdo62v3/w2DQAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALAq5jBy5MgRPfTQQxo0aJAcDod27dp10zllZWWaOHGinE6nMjIytG3btnaUCgAAElHMYaShoUFZWVnasGFDm8afO3dOeXl5+ta3vqWqqiqtWLFCDz/8sA4ePBhzsQAAIPH0iHXCnDlzNGfOnDaP37Rpk4YPH65169ZJkkaPHq2jR4/q2WefVW5ubqyHBwAACabT7xkpLy9XTk5O1Lrc3FyVl5e3OCccDisUCkUtAAAgMcV8ZSRWgUBAqampUetSU1MVCoX02WefqVevXjfM8fv9evLJJzu7NCAhDXtsr+0SYvbumjzbJQAdhr/B2HXJT9MUFRUpGAxGlgsXLtguCQAAdJJOvzLi8XhUX18fta6+vl4ul6vZqyKS5HQ65XQ6O7s0AADQBXT6lRGfz6fS0tKodSUlJfL5fJ19aAAAEAdiDiNXrlxRVVWVqqqqJH350d2qqirV1tZK+vItloKCgsj4pUuX6ve//72+973v6e2339aPfvQj/fznP9c//dM/dUwHAAAgrsUcRioq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lJGRoezsbPn9fmVlZWn9+vUJc/5a6q858XbuTp48qYsXL2rixInq0aOHevToocOHD+s///M/1aNHD6Wmpnb5c3hHhpGkpCRlZ2ertLQ0sq6pqUmlpaVR7yHGgytXruidd95RWlqasrOz1bNnz6i+ampqVFtbG+nL5/Pp9OnTUS9uJSUlcrlckUuWXcnw4cPl8XiiegqFQnr99dejerp06ZJOnjwZGXPo0CE1NTVF/qfi8/l05MgRXbt2LTKmpKREI0eOtPoWTXPee+89ffTRR0pLS5PU9fszxmjZsmXauXOnDh06dMPbRR31vPT5fFH7uD7mdvzN3qzH5lRVVUlS1Hnsyj1+XVNTk8LhcEKcv+Zc76858XbuZs2apdOnT6uqqiqyTJo0SQsWLIj8u8ufw1u+BTZOFRcXG6fTabZt22beeust893vftf069cv6k7irujRRx81ZWVl5ty5c+bXv/61ycnJMQMHDjQXL140xnz58a0hQ4aYQ4cOmYqKCuPz+YzP54vMv/7xrQcffNBUVVWZAwcOmLvvvtvqR3svX75sKisrTWVlpZFknnnmGVNZWWnOnz9vjPnyo739+vUzu3fvNm+++aaZO3dusx/tnTBhgnn99dfN0aNHzYgRI6I++nrp0iWTmppq/v7v/95UV1eb4uJi07t379vy0dfW+rt8+bL553/+Z1NeXm7OnTtnfvWrX5mJEyeaESNGmM8//zwu+nvkkUeM2+02ZWVlUR+N/PTTTyNjOuJ5ef1jhatWrTK//e1vzYYNG27bRydv1uPZs2fNU089ZSoqKsy5c+fM7t27zT333GOmT58eFz0+9thj5vDhw+bcuXPmzTffNI899phxOBzml7/8pTEm/s9fa/3F+7lrydc/IdTVz+EdG0aMMeaHP/yhGTJkiElKSjKTJ082x48ft13STc2bN8+kpaWZpKQkk56ebubNm2fOnj0b2f7ZZ5+Zf/zHfzT9+/c3vXv3Nn/1V39l6urqovbx7rvvmjlz5phevXqZgQMHmkcffdRcu3btdrcS8dprrxlJNywLFy40xnz58d5//dd/NampqcbpdJpZs2aZmpqaqH189NFHZv78+aZPnz7G5XKZRYsWmcuXL0eN+c1vfmP+7M/+zDidTpOenm7WrFljvb9PP/3UPPjgg+buu+82PXv2NEOHDjVLliy5IRR35f6a602SefHFFyNjOup5+dprr5nx48ebpKQkc88990QdozPdrMfa2lozffp0M2DAAON0Ok1GRoZZtWpV1HdVdOUe/+Ef/sEMHTrUJCUlmbvvvtvMmjUrEkSMif/z11p/8X7uWvL1MNLVz6HDGGNu/foKAABA+9yR94wAAICugzACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijAAAAKsIIwAAwCrCCAAAsIowAgAArCKMAAAAqwgjAADAqv8H8/RBrOFtMEQAAAAASUVORK5CYII=", 73 | "text/plain": [ 74 | "
" 75 | ] 76 | }, 77 | "metadata": {}, 78 | "output_type": "display_data" 79 | } 80 | ], 81 | "source": [ 82 | "import matplotlib.pyplot as plt\n", 83 | "plt.hist(b)\n", 84 | "plt.show()" 85 | ] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": 7, 90 | "id": "71c657da-e6af-4f37-a45a-1fc6fdb91dfa", 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": [ 94 | "a_4_3 = np.random.randint(10 , size= (4,3))" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 8, 100 | "id": "ce2ae801-8fa1-4f49-977d-dc01601f4a35", 101 | "metadata": {}, 102 | "outputs": [ 103 | { 104 | "data": { 105 | "text/plain": [ 106 | "array([[0, 6, 0],\n", 107 | " [4, 4, 3],\n", 108 | " [9, 9, 1],\n", 109 | " [0, 7, 2]])" 110 | ] 111 | }, 112 | "execution_count": 8, 113 | "metadata": {}, 114 | "output_type": "execute_result" 115 | } 116 | ], 117 | "source": [ 118 | "a_4_3" 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "execution_count": 9, 124 | "id": "00fb496b-d741-49e5-a447-1e4cdb290bf1", 125 | "metadata": {}, 126 | "outputs": [], 127 | "source": [ 128 | "a_2_3_2 = a_4_3.reshape(2,3, 2)" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 10, 134 | "id": "c3c73a0e-9d8c-4c6b-b5e4-558bddc5b33a", 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "a_6_2 = a_2_3_2.reshape(2, 6)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 11, 144 | "id": "2d32b33a-6085-4962-a4fa-38a307320b27", 145 | "metadata": {}, 146 | "outputs": [ 147 | { 148 | "data": { 149 | "text/plain": [ 150 | "(array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", 151 | " [0., 0., 0., 0., 0., 0., 1., 0., 0., 1.],\n", 152 | " [1., 1., 0., 0., 0., 0., 0., 0., 0., 0.],\n", 153 | " [1., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", 154 | " [0., 0., 0., 0., 1., 0., 0., 1., 0., 0.],\n", 155 | " [0., 0., 1., 1., 0., 0., 0., 0., 0., 0.]]),\n", 156 | " array([0. , 0.9, 1.8, 2.7, 3.6, 4.5, 5.4, 6.3, 7.2, 8.1, 9. ]),\n", 157 | " )" 158 | ] 159 | }, 160 | "execution_count": 11, 161 | "metadata": {}, 162 | "output_type": "execute_result" 163 | }, 164 | { 165 | "data": { 166 | "image/png": "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Zs1KW1tb/1pvb2/a2tpSX18/6DFvvPHGEcFRVVWVJOnr66t0XgDgNFPRlZEkaW5uzuLFizN79uzMmTMna9euzaFDh9LY2JgkWbRoUSZPnpzW1tYkyYIFC7JmzZrMnDkzc+fOzbe//e3cdtttWbBgQX+UAADDV8UxsnDhwuzfvz8rV65MR0dHZsyYka1bt/a/qXXPnj0DroTceuutGTFiRG699da88sor+emf/uksWLAgd9555zv3KACAIaviGEmSpqamNDU1DXrb9u3bB57gjDPS0tKSlpaWEzkVAHCa8900AEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARZ1QjKxbty5TpkxJTU1N5s6dmx07dhxz///5n//J0qVLc95556W6ujo///M/n0ceeeSEBgYATi9nVHrAli1b0tzcnPXr12fu3LlZu3Zt5s+fnxdeeCETJkw4Yv/Dhw/nV37lVzJhwoR85StfyeTJk/Od73wnZ5999jsxPwAwxFUcI2vWrMmSJUvS2NiYJFm/fn0efvjhbNq0KcuXLz9i/02bNuXVV1/N448/njPPPDNJMmXKlLc3NQBw2qjoZZrDhw9n586daWhoeOsORo5MQ0ND2tvbBz3ma1/7Wurr67N06dLU1tbmoosuyqpVq9LT03PU83R3d6erq2vABgCcniqKkQMHDqSnpye1tbUD1mtra9PR0THoMS+99FK+8pWvpKenJ4888khuu+22rF69Op/97GePep7W1taMGzeuf6urq6tkTABgCDnpn6bp7e3NhAkTsmHDhsyaNSsLFy7MLbfckvXr1x/1mBUrVuTgwYP92969e0/2mABAIRW9Z2T8+PGpqqpKZ2fngPXOzs5MnDhx0GPO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8sorC082tJyS39r7Tjpw4EB6enr6f0Psj9TW1ub5558vNBX/W29vb2644YbMmzevyG/n5S0PPPBAdu3alSeffLL0KPyYl156Kffdd1+am5tz880358knn8wf/dEfZdSoUVm8eHHp8Yat5cuXp6urK1OnTk1VVVV6enpy55135rrrris92pBy2scIQ8PSpUvz7LPP5rHHHis9yrC2d+/eLFu2LNu2bUtNTU3pcfgxvb29mT17dlatWpUkmTlzZp599tmsX79ejBT04IMP5stf/nI2b96cD37wg9m9e3duuOGGTJo0yfNSgdM+RsaPH5+qqqp0dnYOWO/s7MzEiRMLTcWPa2pqyte//vU8+uijed/73ld6nGFt586d2bdvXy699NL+tZ6enjz66KO555570t3dnaqqqoITDl/nnXdepk2bNmDtwgsvzN/+7d8Wmogkuemmm7J8+fL8zu/8TpLk4osvzne+8520traKkQqc9u8ZGTVqVGbNmpW2trb+td7e3rS1taW+vr7gZPT19aWpqSlf/epX881vfjMXXHBB6ZGGvV/+5V/OM888k927d/dvs2fPznXXXZfdu3cLkYLmzZt3xEffX3zxxfzMz/xMoYlIkjfeeGPAl8MmSVVVVXp7ewtNNDSd9ldGkqS5uTmLFy/O7NmzM2fOnKxduzaHDh1KY2Nj6dGGtaVLl2bz5s35+7//+4wZMyYdHR1JknHjxmX06NGFpxuexowZc8R7dn7qp34q5557rvfyFHbjjTfmsssuy6pVq/Lbv/3b2bFjRzZs2JANGzaUHm1YW7BgQe68886cf/75+eAHP5inn346a9asye/93u+VHm1o6RsmPv/5z/edf/75faNGjeqbM2dO3xNPPFF6pGEvyaDbX/3VX5UejR/zkY98pG/ZsmWlx6Cvr+8f/uEf+i666KK+6urqvqlTp/Zt2LCh9EjDXldXV9+yZcv6zj///L6ampq+97///X233HJLX3d3d+nRhpRh8XtGAIBT12n/nhEA4NQmRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIr6f6w8ZRRTo8IJAAAAAElFTkSuQmCC", 167 | "text/plain": [ 168 | "
" 169 | ] 170 | }, 171 | "metadata": {}, 172 | "output_type": "display_data" 173 | } 174 | ], 175 | "source": [ 176 | "plt.hist(a_6_2)" 177 | ] 178 | }, 179 | { 180 | "cell_type": "code", 181 | "execution_count": 12, 182 | "id": "7c0ffc80-b0e6-4753-8bcc-279f28db30ee", 183 | "metadata": {}, 184 | "outputs": [], 185 | "source": [ 186 | "mat1 = np.random.randint(10, size = (3, 4))\n", 187 | "mat2 = np.random.randint(10, size = (3, 4))" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 13, 193 | "id": "40bbefaf-4804-48cd-9ad1-e4c3498a6d44", 194 | "metadata": {}, 195 | "outputs": [ 196 | { 197 | "data": { 198 | "text/plain": [ 199 | "array([[ 0, 21, 48, 16],\n", 200 | " [30, 0, 0, 30],\n", 201 | " [25, 0, 5, 0]])" 202 | ] 203 | }, 204 | "execution_count": 13, 205 | "metadata": {}, 206 | "output_type": "execute_result" 207 | } 208 | ], 209 | "source": [ 210 | "mat1 * mat2" 211 | ] 212 | }, 213 | { 214 | "cell_type": "code", 215 | "execution_count": 14, 216 | "id": "27dc390d-d042-476a-b7b4-8d297f3297f2", 217 | "metadata": {}, 218 | "outputs": [ 219 | { 220 | "ename": "ValueError", 221 | "evalue": "shapes (3,4) and (3,4) not aligned: 4 (dim 1) != 3 (dim 0)", 222 | "output_type": "error", 223 | "traceback": [ 224 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 225 | "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", 226 | "Cell \u001b[1;32mIn[14], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mmat1\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmat2\u001b[49m\u001b[43m)\u001b[49m\n", 227 | "\u001b[1;31mValueError\u001b[0m: shapes (3,4) and (3,4) not aligned: 4 (dim 1) != 3 (dim 0)" 228 | ] 229 | } 230 | ], 231 | "source": [ 232 | "mat1.dot(mat2)" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": null, 238 | "id": "e1ed4d76-218a-405e-9a0d-7cfd1c90949c", 239 | "metadata": {}, 240 | "outputs": [], 241 | "source": [ 242 | "mat2 = mat2.T" 243 | ] 244 | }, 245 | { 246 | "cell_type": "code", 247 | "execution_count": null, 248 | "id": "f9d4016c-f499-42d3-8a9d-80c3e7ca9df6", 249 | "metadata": {}, 250 | "outputs": [], 251 | "source": [ 252 | "mat1.dot(mat2)" 253 | ] 254 | }, 255 | { 256 | "cell_type": "code", 257 | "execution_count": 20, 258 | "id": "e3fe15f1-b748-4c71-98c0-99e3cf9b173d", 259 | "metadata": {}, 260 | "outputs": [ 261 | { 262 | "data": { 263 | "text/plain": [ 264 | "array([[1, 5, 9],\n", 265 | " [2, 7, 7],\n", 266 | " [8, 1, 6],\n", 267 | " [2, 1, 6],\n", 268 | " [0, 3, 8]])" 269 | ] 270 | }, 271 | "execution_count": 20, 272 | "metadata": {}, 273 | "output_type": "execute_result" 274 | } 275 | ], 276 | "source": [ 277 | "sales = np.random.randint(10, size = (5, 3))\n", 278 | "sales" 279 | ] 280 | }, 281 | { 282 | "cell_type": "code", 283 | "execution_count": 22, 284 | "id": "ecfc598e-36fd-49b0-a516-c820d2014b1a", 285 | "metadata": {}, 286 | "outputs": [], 287 | "source": [ 288 | "df = pd.DataFrame(sales, index = [\"Mon\", \"Tues\", \"Wed\",\"Thurs\",\"Fri\"], columns = [\"peanut\", \"jelly\", \"honey\"])" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 23, 294 | "id": "202c3774-dac1-42b1-ac0c-3d59e06cb06a", 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "text/html": [ 300 | "
\n", 301 | "\n", 314 | "\n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | "
peanutjellyhoney
Mon159
Tues277
Wed816
Thurs216
Fri038
\n", 356 | "
" 357 | ], 358 | "text/plain": [ 359 | " peanut jelly honey\n", 360 | "Mon 1 5 9\n", 361 | "Tues 2 7 7\n", 362 | "Wed 8 1 6\n", 363 | "Thurs 2 1 6\n", 364 | "Fri 0 3 8" 365 | ] 366 | }, 367 | "execution_count": 23, 368 | "metadata": {}, 369 | "output_type": "execute_result" 370 | } 371 | ], 372 | "source": [ 373 | "df" 374 | ] 375 | }, 376 | { 377 | "cell_type": "code", 378 | "execution_count": 42, 379 | "id": "b55c3612-ea49-4f6b-85a6-c236414fb95c", 380 | "metadata": {}, 381 | "outputs": [], 382 | "source": [ 383 | "sale_price = np.array([10, 8, 12])\n", 384 | "sale_price\n", 385 | "prices = pd.DataFrame(sale_price.reshape(1,3), index = [\"Price\"], columns = [\"Price peanut\", \"Price jelly\", \"Price honey\"])" 386 | ] 387 | }, 388 | { 389 | "cell_type": "code", 390 | "execution_count": 43, 391 | "id": "031d42fd-97e0-423f-be5a-653b4aadb87c", 392 | "metadata": {}, 393 | "outputs": [ 394 | { 395 | "data": { 396 | "text/html": [ 397 | "
\n", 398 | "\n", 411 | "\n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | "
peanutjellyhoney
Mon159
Tues277
Wed816
Thurs216
Fri038
\n", 453 | "
" 454 | ], 455 | "text/plain": [ 456 | " peanut jelly honey\n", 457 | "Mon 1 5 9\n", 458 | "Tues 2 7 7\n", 459 | "Wed 8 1 6\n", 460 | "Thurs 2 1 6\n", 461 | "Fri 0 3 8" 462 | ] 463 | }, 464 | "execution_count": 43, 465 | "metadata": {}, 466 | "output_type": "execute_result" 467 | } 468 | ], 469 | "source": [ 470 | "df" 471 | ] 472 | }, 473 | { 474 | "cell_type": "code", 475 | "execution_count": 32, 476 | "id": "62a045e7-ae9d-4c61-9bf6-0b93168f4eb7", 477 | "metadata": {}, 478 | "outputs": [ 479 | { 480 | "data": { 481 | "text/html": [ 482 | "
\n", 483 | "\n", 496 | "\n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | "
Price peanutPrice jellyPrice honey
Price10812
\n", 514 | "
" 515 | ], 516 | "text/plain": [ 517 | " Price peanut Price jelly Price honey\n", 518 | "Price 10 8 12" 519 | ] 520 | }, 521 | "execution_count": 32, 522 | "metadata": {}, 523 | "output_type": "execute_result" 524 | } 525 | ], 526 | "source": [ 527 | "prices" 528 | ] 529 | }, 530 | { 531 | "cell_type": "code", 532 | "execution_count": 46, 533 | "id": "1329ac6c-ec72-44b8-ba07-843b6dfc189a", 534 | "metadata": {}, 535 | "outputs": [], 536 | "source": [ 537 | "total_sale_of_day = np.dot(df, prices.T)" 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 47, 543 | "id": "c2b8c99f-ccf4-4766-9ac4-08e8f79c9e9e", 544 | "metadata": {}, 545 | "outputs": [ 546 | { 547 | "data": { 548 | "text/plain": [ 549 | "array([[158],\n", 550 | " [160],\n", 551 | " [160],\n", 552 | " [100],\n", 553 | " [120]])" 554 | ] 555 | }, 556 | "execution_count": 47, 557 | "metadata": {}, 558 | "output_type": "execute_result" 559 | } 560 | ], 561 | "source": [ 562 | "total_sale_of_day" 563 | ] 564 | }, 565 | { 566 | "cell_type": "code", 567 | "execution_count": 49, 568 | "id": "568434d9-1e83-4520-a538-57d3658daec0", 569 | "metadata": {}, 570 | "outputs": [], 571 | "source": [ 572 | "df[\"Total sale of day\"] = total_sale_of_day" 573 | ] 574 | }, 575 | { 576 | "cell_type": "code", 577 | "execution_count": 50, 578 | "id": "40dfcb56-5fc1-4ff3-a7e1-4294dc692faf", 579 | "metadata": {}, 580 | "outputs": [ 581 | { 582 | "data": { 583 | "text/html": [ 584 | "
\n", 585 | "\n", 598 | "\n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | "
peanutjellyhoneyTotal sale of day
Mon159158
Tues277160
Wed816160
Thurs216100
Fri038120
\n", 646 | "
" 647 | ], 648 | "text/plain": [ 649 | " peanut jelly honey Total sale of day\n", 650 | "Mon 1 5 9 158\n", 651 | "Tues 2 7 7 160\n", 652 | "Wed 8 1 6 160\n", 653 | "Thurs 2 1 6 100\n", 654 | "Fri 0 3 8 120" 655 | ] 656 | }, 657 | "execution_count": 50, 658 | "metadata": {}, 659 | "output_type": "execute_result" 660 | } 661 | ], 662 | "source": [ 663 | "df" 664 | ] 665 | }, 666 | { 667 | "cell_type": "code", 668 | "execution_count": null, 669 | "id": "581426e4-94c8-46e3-bd22-5043c8bb2ba6", 670 | "metadata": {}, 671 | "outputs": [], 672 | "source": [] 673 | } 674 | ], 675 | "metadata": { 676 | "kernelspec": { 677 | "display_name": "Python 3 (ipykernel)", 678 | "language": "python", 679 | "name": "python3" 680 | }, 681 | "language_info": { 682 | "codemirror_mode": { 683 | "name": "ipython", 684 | "version": 3 685 | }, 686 | "file_extension": ".py", 687 | "mimetype": "text/x-python", 688 | "name": "python", 689 | "nbconvert_exporter": "python", 690 | "pygments_lexer": "ipython3", 691 | "version": "3.11.2" 692 | } 693 | }, 694 | "nbformat": 4, 695 | "nbformat_minor": 5 696 | } 697 | --------------------------------------------------------------------------------