├── .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 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 |
4 |
5 |
10 |
11 |
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 | " Make | \n",
61 | " Colour | \n",
62 | " Odometer (KM) | \n",
63 | " Doors | \n",
64 | " Price | \n",
65 | "
\n",
66 | " \n",
67 | " \n",
68 | " \n",
69 | " | 0 | \n",
70 | " Toyota | \n",
71 | " White | \n",
72 | " 150043 | \n",
73 | " 4 | \n",
74 | " $4,000.00 | \n",
75 | "
\n",
76 | " \n",
77 | " | 1 | \n",
78 | " Honda | \n",
79 | " Red | \n",
80 | " 87899 | \n",
81 | " 4 | \n",
82 | " $5,000.00 | \n",
83 | "
\n",
84 | " \n",
85 | " | 2 | \n",
86 | " Toyota | \n",
87 | " Blue | \n",
88 | " 32549 | \n",
89 | " 3 | \n",
90 | " $7,000.00 | \n",
91 | "
\n",
92 | " \n",
93 | " | 3 | \n",
94 | " BMW | \n",
95 | " Black | \n",
96 | " 11179 | \n",
97 | " 5 | \n",
98 | " $22,000.00 | \n",
99 | "
\n",
100 | " \n",
101 | " | 4 | \n",
102 | " Nissan | \n",
103 | " White | \n",
104 | " 213095 | \n",
105 | " 4 | \n",
106 | " $3,500.00 | \n",
107 | "
\n",
108 | " \n",
109 | " | 5 | \n",
110 | " Toyota | \n",
111 | " Green | \n",
112 | " 99213 | \n",
113 | " 4 | \n",
114 | " $4,500.00 | \n",
115 | "
\n",
116 | " \n",
117 | " | 6 | \n",
118 | " Honda | \n",
119 | " Blue | \n",
120 | " 45698 | \n",
121 | " 4 | \n",
122 | " $7,500.00 | \n",
123 | "
\n",
124 | " \n",
125 | " | 7 | \n",
126 | " Honda | \n",
127 | " Blue | \n",
128 | " 54738 | \n",
129 | " 4 | \n",
130 | " $7,000.00 | \n",
131 | "
\n",
132 | " \n",
133 | " | 8 | \n",
134 | " Toyota | \n",
135 | " White | \n",
136 | " 60000 | \n",
137 | " 4 | \n",
138 | " $6,250.00 | \n",
139 | "
\n",
140 | " \n",
141 | " | 9 | \n",
142 | " Nissan | \n",
143 | " White | \n",
144 | " 31600 | \n",
145 | " 4 | \n",
146 | " $9,700.00 | \n",
147 | "
\n",
148 | " \n",
149 | "
\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 | " | Doors | \n",
202 | " 3 | \n",
203 | " 4 | \n",
204 | " 5 | \n",
205 | "
\n",
206 | " \n",
207 | " | Make | \n",
208 | " | \n",
209 | " | \n",
210 | " | \n",
211 | "
\n",
212 | " \n",
213 | " \n",
214 | " \n",
215 | " | BMW | \n",
216 | " 0 | \n",
217 | " 0 | \n",
218 | " 1 | \n",
219 | "
\n",
220 | " \n",
221 | " | Honda | \n",
222 | " 0 | \n",
223 | " 3 | \n",
224 | " 0 | \n",
225 | "
\n",
226 | " \n",
227 | " | Nissan | \n",
228 | " 0 | \n",
229 | " 2 | \n",
230 | " 0 | \n",
231 | "
\n",
232 | " \n",
233 | " | Toyota | \n",
234 | " 1 | \n",
235 | " 3 | \n",
236 | " 0 | \n",
237 | "
\n",
238 | " \n",
239 | "
\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 | " Make | \n",
298 | " Colour | \n",
299 | " Odometer (KM) | \n",
300 | " Doors | \n",
301 | " Price | \n",
302 | "
\n",
303 | " \n",
304 | " \n",
305 | " \n",
306 | " | 0 | \n",
307 | " Toyota | \n",
308 | " White | \n",
309 | " 150043 | \n",
310 | " 4 | \n",
311 | " $4,000.00 | \n",
312 | "
\n",
313 | " \n",
314 | " | 1 | \n",
315 | " Honda | \n",
316 | " Red | \n",
317 | " 87899 | \n",
318 | " 4 | \n",
319 | " $5,000.00 | \n",
320 | "
\n",
321 | " \n",
322 | " | 2 | \n",
323 | " Toyota | \n",
324 | " Blue | \n",
325 | " 32549 | \n",
326 | " 3 | \n",
327 | " $7,000.00 | \n",
328 | "
\n",
329 | " \n",
330 | " | 3 | \n",
331 | " BMW | \n",
332 | " Black | \n",
333 | " 11179 | \n",
334 | " 5 | \n",
335 | " $22,000.00 | \n",
336 | "
\n",
337 | " \n",
338 | " | 4 | \n",
339 | " Nissan | \n",
340 | " White | \n",
341 | " 213095 | \n",
342 | " 4 | \n",
343 | " $3,500.00 | \n",
344 | "
\n",
345 | " \n",
346 | " | 5 | \n",
347 | " Toyota | \n",
348 | " Green | \n",
349 | " 99213 | \n",
350 | " 4 | \n",
351 | " $4,500.00 | \n",
352 | "
\n",
353 | " \n",
354 | " | 6 | \n",
355 | " Honda | \n",
356 | " Blue | \n",
357 | " 45698 | \n",
358 | " 4 | \n",
359 | " $7,500.00 | \n",
360 | "
\n",
361 | " \n",
362 | " | 7 | \n",
363 | " Honda | \n",
364 | " Blue | \n",
365 | " 54738 | \n",
366 | " 4 | \n",
367 | " $7,000.00 | \n",
368 | "
\n",
369 | " \n",
370 | " | 8 | \n",
371 | " Toyota | \n",
372 | " White | \n",
373 | " 60000 | \n",
374 | " 4 | \n",
375 | " $6,250.00 | \n",
376 | "
\n",
377 | " \n",
378 | " | 9 | \n",
379 | " Nissan | \n",
380 | " White | \n",
381 | " 31600 | \n",
382 | " 4 | \n",
383 | " $9,700.00 | \n",
384 | "
\n",
385 | " \n",
386 | "
\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 | " age | \n",
59 | " sex | \n",
60 | " cp | \n",
61 | " trestbps | \n",
62 | " chol | \n",
63 | " fbs | \n",
64 | " restecg | \n",
65 | " thalach | \n",
66 | " exang | \n",
67 | " oldpeak | \n",
68 | " slope | \n",
69 | " ca | \n",
70 | " thal | \n",
71 | " target | \n",
72 | "
\n",
73 | " \n",
74 | " \n",
75 | " \n",
76 | " | 0 | \n",
77 | " 63 | \n",
78 | " 1 | \n",
79 | " 3 | \n",
80 | " 145 | \n",
81 | " 233 | \n",
82 | " 1 | \n",
83 | " 0 | \n",
84 | " 150 | \n",
85 | " 0 | \n",
86 | " 2.3 | \n",
87 | " 0 | \n",
88 | " 0 | \n",
89 | " 1 | \n",
90 | " 1 | \n",
91 | "
\n",
92 | " \n",
93 | " | 1 | \n",
94 | " 37 | \n",
95 | " 1 | \n",
96 | " 2 | \n",
97 | " 130 | \n",
98 | " 250 | \n",
99 | " 0 | \n",
100 | " 1 | \n",
101 | " 187 | \n",
102 | " 0 | \n",
103 | " 3.5 | \n",
104 | " 0 | \n",
105 | " 0 | \n",
106 | " 2 | \n",
107 | " 1 | \n",
108 | "
\n",
109 | " \n",
110 | " | 2 | \n",
111 | " 41 | \n",
112 | " 0 | \n",
113 | " 1 | \n",
114 | " 130 | \n",
115 | " 204 | \n",
116 | " 0 | \n",
117 | " 0 | \n",
118 | " 172 | \n",
119 | " 0 | \n",
120 | " 1.4 | \n",
121 | " 2 | \n",
122 | " 0 | \n",
123 | " 2 | \n",
124 | " 1 | \n",
125 | "
\n",
126 | " \n",
127 | " | 3 | \n",
128 | " 56 | \n",
129 | " 1 | \n",
130 | " 1 | \n",
131 | " 120 | \n",
132 | " 236 | \n",
133 | " 0 | \n",
134 | " 1 | \n",
135 | " 178 | \n",
136 | " 0 | \n",
137 | " 0.8 | \n",
138 | " 2 | \n",
139 | " 0 | \n",
140 | " 2 | \n",
141 | " 1 | \n",
142 | "
\n",
143 | " \n",
144 | " | 4 | \n",
145 | " 57 | \n",
146 | " 0 | \n",
147 | " 0 | \n",
148 | " 120 | \n",
149 | " 354 | \n",
150 | " 0 | \n",
151 | " 1 | \n",
152 | " 163 | \n",
153 | " 1 | \n",
154 | " 0.6 | \n",
155 | " 2 | \n",
156 | " 0 | \n",
157 | " 2 | \n",
158 | " 1 | \n",
159 | "
\n",
160 | " \n",
161 | "
\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 | " age | \n",
291 | " sex | \n",
292 | " cp | \n",
293 | " trestbps | \n",
294 | " chol | \n",
295 | " fbs | \n",
296 | " restecg | \n",
297 | " thalach | \n",
298 | " exang | \n",
299 | " oldpeak | \n",
300 | " slope | \n",
301 | " ca | \n",
302 | " thal | \n",
303 | " target | \n",
304 | "
\n",
305 | " \n",
306 | " \n",
307 | " \n",
308 | " | 144 | \n",
309 | " 76 | \n",
310 | " 0 | \n",
311 | " 2 | \n",
312 | " 140 | \n",
313 | " 197 | \n",
314 | " 0 | \n",
315 | " 2 | \n",
316 | " 116 | \n",
317 | " 0 | \n",
318 | " 1.1 | \n",
319 | " 1 | \n",
320 | " 0 | \n",
321 | " 2 | \n",
322 | " 1 | \n",
323 | "
\n",
324 | " \n",
325 | " | 151 | \n",
326 | " 71 | \n",
327 | " 0 | \n",
328 | " 0 | \n",
329 | " 112 | \n",
330 | " 149 | \n",
331 | " 0 | \n",
332 | " 1 | \n",
333 | " 125 | \n",
334 | " 0 | \n",
335 | " 1.6 | \n",
336 | " 1 | \n",
337 | " 0 | \n",
338 | " 2 | \n",
339 | " 1 | \n",
340 | "
\n",
341 | " \n",
342 | "
\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 | " | sex | \n",
391 | " 0 | \n",
392 | " 1 | \n",
393 | "
\n",
394 | " \n",
395 | " | slope | \n",
396 | " | \n",
397 | " | \n",
398 | "
\n",
399 | " \n",
400 | " \n",
401 | " \n",
402 | " | 0 | \n",
403 | " 5 | \n",
404 | " 16 | \n",
405 | "
\n",
406 | " \n",
407 | " | 1 | \n",
408 | " 45 | \n",
409 | " 95 | \n",
410 | "
\n",
411 | " \n",
412 | " | 2 | \n",
413 | " 46 | \n",
414 | " 96 | \n",
415 | "
\n",
416 | " \n",
417 | "
\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 | " age | \n",
59 | " sex | \n",
60 | " cp | \n",
61 | " trestbps | \n",
62 | " chol | \n",
63 | " fbs | \n",
64 | " restecg | \n",
65 | " thalach | \n",
66 | " exang | \n",
67 | " oldpeak | \n",
68 | " slope | \n",
69 | " ca | \n",
70 | " thal | \n",
71 | " target | \n",
72 | "
\n",
73 | " \n",
74 | " \n",
75 | " \n",
76 | " | 0 | \n",
77 | " 63 | \n",
78 | " 1 | \n",
79 | " 3 | \n",
80 | " 145 | \n",
81 | " 233 | \n",
82 | " 1 | \n",
83 | " 0 | \n",
84 | " 150 | \n",
85 | " 0 | \n",
86 | " 2.3 | \n",
87 | " 0 | \n",
88 | " 0 | \n",
89 | " 1 | \n",
90 | " 1 | \n",
91 | "
\n",
92 | " \n",
93 | " | 1 | \n",
94 | " 37 | \n",
95 | " 1 | \n",
96 | " 2 | \n",
97 | " 130 | \n",
98 | " 250 | \n",
99 | " 0 | \n",
100 | " 1 | \n",
101 | " 187 | \n",
102 | " 0 | \n",
103 | " 3.5 | \n",
104 | " 0 | \n",
105 | " 0 | \n",
106 | " 2 | \n",
107 | " 1 | \n",
108 | "
\n",
109 | " \n",
110 | " | 2 | \n",
111 | " 41 | \n",
112 | " 0 | \n",
113 | " 1 | \n",
114 | " 130 | \n",
115 | " 204 | \n",
116 | " 0 | \n",
117 | " 0 | \n",
118 | " 172 | \n",
119 | " 0 | \n",
120 | " 1.4 | \n",
121 | " 2 | \n",
122 | " 0 | \n",
123 | " 2 | \n",
124 | " 1 | \n",
125 | "
\n",
126 | " \n",
127 | " | 3 | \n",
128 | " 56 | \n",
129 | " 1 | \n",
130 | " 1 | \n",
131 | " 120 | \n",
132 | " 236 | \n",
133 | " 0 | \n",
134 | " 1 | \n",
135 | " 178 | \n",
136 | " 0 | \n",
137 | " 0.8 | \n",
138 | " 2 | \n",
139 | " 0 | \n",
140 | " 2 | \n",
141 | " 1 | \n",
142 | "
\n",
143 | " \n",
144 | " | 4 | \n",
145 | " 57 | \n",
146 | " 0 | \n",
147 | " 0 | \n",
148 | " 120 | \n",
149 | " 354 | \n",
150 | " 0 | \n",
151 | " 1 | \n",
152 | " 163 | \n",
153 | " 1 | \n",
154 | " 0.6 | \n",
155 | " 2 | \n",
156 | " 0 | \n",
157 | " 2 | \n",
158 | " 1 | \n",
159 | "
\n",
160 | " \n",
161 | "
\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 | " age | \n",
291 | " sex | \n",
292 | " cp | \n",
293 | " trestbps | \n",
294 | " chol | \n",
295 | " fbs | \n",
296 | " restecg | \n",
297 | " thalach | \n",
298 | " exang | \n",
299 | " oldpeak | \n",
300 | " slope | \n",
301 | " ca | \n",
302 | " thal | \n",
303 | " target | \n",
304 | "
\n",
305 | " \n",
306 | " \n",
307 | " \n",
308 | " | 144 | \n",
309 | " 76 | \n",
310 | " 0 | \n",
311 | " 2 | \n",
312 | " 140 | \n",
313 | " 197 | \n",
314 | " 0 | \n",
315 | " 2 | \n",
316 | " 116 | \n",
317 | " 0 | \n",
318 | " 1.1 | \n",
319 | " 1 | \n",
320 | " 0 | \n",
321 | " 2 | \n",
322 | " 1 | \n",
323 | "
\n",
324 | " \n",
325 | " | 151 | \n",
326 | " 71 | \n",
327 | " 0 | \n",
328 | " 0 | \n",
329 | " 112 | \n",
330 | " 149 | \n",
331 | " 0 | \n",
332 | " 1 | \n",
333 | " 125 | \n",
334 | " 0 | \n",
335 | " 1.6 | \n",
336 | " 1 | \n",
337 | " 0 | \n",
338 | " 2 | \n",
339 | " 1 | \n",
340 | "
\n",
341 | " \n",
342 | "
\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 | " | sex | \n",
391 | " 0 | \n",
392 | " 1 | \n",
393 | "
\n",
394 | " \n",
395 | " | slope | \n",
396 | " | \n",
397 | " | \n",
398 | "
\n",
399 | " \n",
400 | " \n",
401 | " \n",
402 | " | 0 | \n",
403 | " 5 | \n",
404 | " 16 | \n",
405 | "
\n",
406 | " \n",
407 | " | 1 | \n",
408 | " 45 | \n",
409 | " 95 | \n",
410 | "
\n",
411 | " \n",
412 | " | 2 | \n",
413 | " 46 | \n",
414 | " 96 | \n",
415 | "
\n",
416 | " \n",
417 | "
\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 | " peanut | \n",
319 | " jelly | \n",
320 | " honey | \n",
321 | "
\n",
322 | " \n",
323 | " \n",
324 | " \n",
325 | " | Mon | \n",
326 | " 1 | \n",
327 | " 5 | \n",
328 | " 9 | \n",
329 | "
\n",
330 | " \n",
331 | " | Tues | \n",
332 | " 2 | \n",
333 | " 7 | \n",
334 | " 7 | \n",
335 | "
\n",
336 | " \n",
337 | " | Wed | \n",
338 | " 8 | \n",
339 | " 1 | \n",
340 | " 6 | \n",
341 | "
\n",
342 | " \n",
343 | " | Thurs | \n",
344 | " 2 | \n",
345 | " 1 | \n",
346 | " 6 | \n",
347 | "
\n",
348 | " \n",
349 | " | Fri | \n",
350 | " 0 | \n",
351 | " 3 | \n",
352 | " 8 | \n",
353 | "
\n",
354 | " \n",
355 | "
\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 | " peanut | \n",
416 | " jelly | \n",
417 | " honey | \n",
418 | "
\n",
419 | " \n",
420 | " \n",
421 | " \n",
422 | " | Mon | \n",
423 | " 1 | \n",
424 | " 5 | \n",
425 | " 9 | \n",
426 | "
\n",
427 | " \n",
428 | " | Tues | \n",
429 | " 2 | \n",
430 | " 7 | \n",
431 | " 7 | \n",
432 | "
\n",
433 | " \n",
434 | " | Wed | \n",
435 | " 8 | \n",
436 | " 1 | \n",
437 | " 6 | \n",
438 | "
\n",
439 | " \n",
440 | " | Thurs | \n",
441 | " 2 | \n",
442 | " 1 | \n",
443 | " 6 | \n",
444 | "
\n",
445 | " \n",
446 | " | Fri | \n",
447 | " 0 | \n",
448 | " 3 | \n",
449 | " 8 | \n",
450 | "
\n",
451 | " \n",
452 | "
\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 | " Price peanut | \n",
501 | " Price jelly | \n",
502 | " Price honey | \n",
503 | "
\n",
504 | " \n",
505 | " \n",
506 | " \n",
507 | " | Price | \n",
508 | " 10 | \n",
509 | " 8 | \n",
510 | " 12 | \n",
511 | "
\n",
512 | " \n",
513 | "
\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 | " peanut | \n",
603 | " jelly | \n",
604 | " honey | \n",
605 | " Total sale of day | \n",
606 | "
\n",
607 | " \n",
608 | " \n",
609 | " \n",
610 | " | Mon | \n",
611 | " 1 | \n",
612 | " 5 | \n",
613 | " 9 | \n",
614 | " 158 | \n",
615 | "
\n",
616 | " \n",
617 | " | Tues | \n",
618 | " 2 | \n",
619 | " 7 | \n",
620 | " 7 | \n",
621 | " 160 | \n",
622 | "
\n",
623 | " \n",
624 | " | Wed | \n",
625 | " 8 | \n",
626 | " 1 | \n",
627 | " 6 | \n",
628 | " 160 | \n",
629 | "
\n",
630 | " \n",
631 | " | Thurs | \n",
632 | " 2 | \n",
633 | " 1 | \n",
634 | " 6 | \n",
635 | " 100 | \n",
636 | "
\n",
637 | " \n",
638 | " | Fri | \n",
639 | " 0 | \n",
640 | " 3 | \n",
641 | " 8 | \n",
642 | " 120 | \n",
643 | "
\n",
644 | " \n",
645 | "
\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 |
--------------------------------------------------------------------------------