Copy disabled (too large)
Download .txt
Showing preview only (34,477K chars total). Download the full file to get everything.
Repository: Abdullah-khan0/100-DaysOf-Code-dataScience
Branch: master
Commit: d89871dcdfba
Files: 62
Total size: 32.9 MB
Directory structure:
gitextract_wsbu4mgw/
├── 01. Day 1 - introduction to Python/
│ ├── Dictionaries.ipynb
│ ├── List.ipynb
│ ├── Sets.ipynb
│ └── Touples.ipynb
├── 02. Day 2 - Python Loops and If-else/
│ └── loop-if-else.ipynb
├── 03. Day 3- Python Functions/
│ └── Python Functions .ipynb
├── 04. Day 4 - Python oops/
│ └── Python Oops.ipynb
├── 05. Day 5 - Python Modules/
│ └── Python Modules.ipynb
├── 07. Day 7 - NumPy Random/
│ └── NumPy Random.ipynb
├── 08. Day 8 - Pandas Introduction/
│ └── Pandas Introduction.ipynb
├── 09. Day 9 - Pandas - ipl data analysis/
│ └── Pandas -Analysis of ipl data.ipynb
├── 10. Day 10 - Data Manipulation in Pandas/
│ └── Data Manipulation.ipynb
├── 100. Day 100 - Brain Tumor Classification/
│ └── brain-tumor-classification.ipynb
├── 11. Day 11 - Matplotlib Introduction/
│ └── Matplotlib Introduction.ipynb
├── 12. Day 12 - Matplotlib Line/
│ └── Matplotlib Line.ipynb
├── 13. Day 13 -Matplotlib Bar-pie-Scatter Plot/
│ └── Matplotlib Bar Plot.ipynb
├── 14. Day 14 - Seaborn Introduction/
│ └── Seaborn Introduction.ipynb
├── 15. Day 15 - Seaborn Plots Types/
│ └── Seaborn Plots.ipynb
├── 22. Day 22 - Evaluation Metrics/
│ └── Performance Metrics.ipynb
├── 23. Day 23 - Train-Test-Split/
│ └── Train-Test_Split.ipynb
├── 25. Day 25 - Implementation Cross-Validation Techniques/
│ └── Techniques For cross validation.ipynb
├── 29. Day 29 - Simple Linear Regression/
│ └── simple-linear-regression.ipynb
├── 31. Day 31 - Implementation Of Multiple Linear Regression/
│ └── multiple-linear-regression.ipynb
├── 33. Day 33 - Logistic Regression/
│ └── logistic-regression.ipynb
├── 35. Day 35 - Implementation Of SVM/
│ └── svm-for-classification.ipynb
├── 37. Day 37 - Implementation Of KNN/
│ └── knn-for-classification-mobile-price-prediction.ipynb
├── 39. Day 39 - Implementation Of Decision Tree Algorithm/
│ └── decision-tree-algorithm.ipynb
├── 41. Day 41 - Random Forest Implementation/
│ └── random-forest.ipynb
├── 42. Day 42 - Hyperparameter Tuning Random Forest/
│ └── hyperparameter-tuning.ipynb
├── 43. Day 43 - Ensamble Learning Implementation/
│ └── ensamble-learning.ipynb
├── 45. Day 45 - Implementation of Naive Bayes/
│ └── gaussian-naive-bayes.ipynb
├── 47. Day 47 - Implementation of K Mean Clustering/
│ └── k-mean-clustering.ipynb
├── 49. Day 49 - DBSCAN Clustering Algorithm Implementation/
│ └── dbscan-clustering.ipynb
├── 50. Day 50 - Implementation of Hierarchical Clustering/
│ └── hierarchical-clustering.ipynb
├── 52. Day 52 - implementation of Gaussian Mixture Model/
│ └── gaussian-mixture-model.ipynb
├── 53. Day 53 - Fuzzy C-Mean Clustering implementation/
│ └── fuzzy-c-mean.ipynb
├── 56. Day 56 - Implementation of Apriori Algorithm/
│ └── apriori-algorithm.ipynb
├── 58. Day 58 - PCA Breast Cancer Dataset/
│ └── pca-cancer-dataset.ipynb
├── 60. Day 60 - LDA - WineQuality/
│ └── lda-wine-quality.ipynb
├── 62. Day 62 - Q - Learning BTC Dataset/
│ └── q-learning-bitcoins.ipynb
├── 63. Day 63 - DQN Algorithm Salesforce dataset/
│ └── dqn-algorithm.ipynb
├── 65. Day 65 - Implementation of Genetic Algorithm/
│ └── genetic-algorithm.ipynb
├── 67. Day 67 - Ridge Regression implementation/
│ └── ridge-regression.ipynb
├── 68. Day 68 - Lasso Regression implementation/
│ └── lasso-regression.ipynb
├── 69. Day 69 - ElasticNet Regression/
│ └── elasticnet-regression.ipynb
├── 71. Day 71 - Time Series Analysis implement/
│ └── time-series-analysis.ipynb
├── 72. Day 72 - SimpleTime Series Method/
│ └── simple-time-series-methods.ipynb
├── 73. Day 73 - Exponential smoothing methods/
│ └── exponential-smoothing-methods.ipynb
├── 74. Day 74 - Auto Regressive Methods/
│ └── auto-regressive-methods.ipynb
├── 76. Day 76 - Explainable AI-Shap/
│ └── explainable-ai-shap.ipynb
├── 79. Day 79 - NLP Text Classification/
│ └── nlp-text-classification.ipynb
├── 80. Day 80 - NLP Password Strength/
│ └── nlp-password-strength.ipynb
├── 81. Day 81 - NLP - Spam Detection/
│ └── nlp-spam-detection.ipynb
├── 82. Day 82 - Oversampling - Undersampling/
│ └── oversampling-undersampling.ipynb
├── 83. Day 83 - Twitter Sentiment Analysis/
│ └── twitter-sentiment-analysis.ipynb
├── 84. Day 84 - Emotion Detection - NLP/
│ └── emotion-detection-nlp.ipynb
├── 85. Day 85 - Language Detection - NLP/
│ └── language-detection-nlp.ipynb
├── 95. Day 95 - computer Vision Image processing/
│ └── image-processing.ipynb
├── 96. Day 96 - Image Processing/
│ └── image-processing.ipynb
├── 97. Day 97 - Watermark Using CV/
│ └── watermark-using-cv.ipynb
├── 98. Day 98 - Texture Features Extraction/
│ └── texture-features-extraction.ipynb
└── 99. Day 99 - Lane Detection/
└── lane-detection-using-cv.ipynb
================================================
FILE CONTENTS
================================================
================================================
FILE: 01. Day 1 - introduction to Python/Dictionaries.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "93ac7a94",
"metadata": {},
"source": [
"# -----------Python Dictionaries------------\n",
"Dictionaries are used to store data values in key:value pairs.\n",
"A dictionary is a collection which is ordered*, changeable and do not allow duplicates.\n",
"Dictionaries are written with curly brackets, and have keys and values:\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "db063f31",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colors': ['red', 'white', 'blue']}\n",
"4\n",
"<class 'dict'>\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964,\n",
" \"colors\": [\"red\", \"white\", \"blue\"]\n",
"}\n",
"print(dictt)\n",
"print(len(dictt))\n",
"print(type(dictt))"
]
},
{
"cell_type": "markdown",
"id": "26c30efc",
"metadata": {},
"source": [
"# --------Access Dictionary Items----------\n",
"You can access the items of a dictionary by referring to its key name, inside square brackets:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "69f847f2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mustang\n",
"Mustang\n",
"dict_keys(['brand', 'model', 'year'])\n",
"dict_values(['Ford', 'Mustang', 1964])\n",
"dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 1964)])\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"x = dictt[\"model\"]\n",
"y = dictt.get(\"model\")\n",
"z = dictt.keys()\n",
"a = dictt.values()\n",
"b = dictt.items()\n",
"\n",
"print(x)\n",
"print(y)\n",
"print(z)\n",
"print(a)\n",
"print(b)"
]
},
{
"cell_type": "markdown",
"id": "7b4342df",
"metadata": {},
"source": [
"# ----------Change Dictionary Items-----------\n",
"You can change the value of a specific item by referring to its key name:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "ce633a06",
"metadata": {},
"outputs": [],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt[\"year\"] = 2018"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5fd5f790",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'model': 'Mustang', 'year': 2018}\n"
]
}
],
"source": [
"print(dictt)"
]
},
{
"cell_type": "markdown",
"id": "3bd2f5a6",
"metadata": {},
"source": [
"# --------Adding Items----------\n",
"Adding an item to the dictionary is done by using a new index key and assigning a value to it"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "a8cc7778",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt[\"color\"] = \"red\"\n",
"print(dictt)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e0b8b0c8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt.update({\"color\": \"red\"})\n",
"print(dictt)"
]
},
{
"cell_type": "markdown",
"id": "0edaaf37",
"metadata": {},
"source": [
"# ---------Remove Dictionary Items----------\n",
"The pop() method removes the item with the specified key name:\n",
"The popitem() method removes the last inserted item (in versions before 3.7, a random item is removed instead):\n",
"The del keyword removes the item with the specified key name:\n",
"The del keyword can also delete the dictionary completely:\n",
"The clear() method empties the dictionary:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "6c35908b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'year': 1964}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt.pop(\"model\")\n",
"print(dictt)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "658605fc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'model': 'Mustang'}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt.popitem()\n",
"print(dictt)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "65e03d36",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'brand': 'Ford', 'year': 1964}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"del dictt[\"model\"]\n",
"print(dictt)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "56ffb489",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{}\n"
]
}
],
"source": [
"dictt = {\n",
" \"brand\": \"Ford\",\n",
" \"model\": \"Mustang\",\n",
" \"year\": 1964\n",
"}\n",
"dictt.clear()\n",
"print(dictt)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e8c6f972",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 01. Day 1 - introduction to Python/List.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "8297fde3",
"metadata": {},
"source": [
"# Python Lists\n",
"List items are ordered, changeable, and allow duplicate values.\n",
"Tuples are written with Square brackets.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "5f93ebc3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'cherry']\n"
]
}
],
"source": [
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "bdaa51e4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"<class 'list'>\n"
]
}
],
"source": [
"print(len(fruits))\n",
"print(type(fruits))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "9cf629df",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cherry\n",
"['banana']\n",
"['banana', 'cherry']\n"
]
}
],
"source": [
"print(fruits[-1])\n",
"print(fruits[1:2])\n",
"print(fruits[1:])\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "b19a918b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Yes, 'apple' is in the fruits list\n"
]
}
],
"source": [
"if \"apple\" in fruits:\n",
" print(\"Yes, 'apple' is in the fruits list\")"
]
},
{
"cell_type": "markdown",
"id": "d315ebcf",
"metadata": {},
"source": [
"# ------Add List Items-----\n",
"append()\n",
"insert()\n",
"extend()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f2dfa086",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'watermelon', 'cherry']\n"
]
}
],
"source": [
"#Insert \"watermelon\" as the third item:\n",
"fruits.insert(2, \"watermelon\")\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "fe7a8485",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'watermelon', 'cherry', 'orange']\n"
]
}
],
"source": [
"#Using the append() method to append an item:\n",
"fruits.append(\"orange\")\n",
"print(fruits)\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "83fe72d0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'cherry', 'mango', 'pineapple', 'papaya']\n"
]
}
],
"source": [
"#Add the elements of tropical to thislist:\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"fruits2 = [\"mango\", \"pineapple\", \"papaya\"]\n",
"fruits.extend(fruits2)\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "25d7c38e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'cherry', 'kiwi', 'orange']\n"
]
}
],
"source": [
"#Add elements of a tuple to a list:\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"fruits2 = (\"kiwi\", \"orange\")\n",
"fruits.extend(fruits2)\n",
"print(fruits)"
]
},
{
"cell_type": "markdown",
"id": "f5fababe",
"metadata": {},
"source": [
"# ------Remove List Items--------\n",
"remove(): it removes the specified item.\n",
"pop(): it removes the specified index.\n",
"del: this keyword also removes the specified index:(can also delete the list completely.)\n",
"clear(): this method empties the list (The list still remains, but it has no content)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "09337ed4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'cherry', 'banana', 'kiwi']\n"
]
}
],
"source": [
"#Remove the first occurance of \"banana\":\n",
"#Remove Specified Item\n",
"fruits = [\"apple\", \"banana\", \"cherry\", \"banana\", \"kiwi\"]\n",
"fruits.remove(\"banana\")\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "57487639",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'cherry']\n"
]
}
],
"source": [
"#Remove Specified Index\n",
"#The pop() method removes the specified index.\n",
"\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"fruits.pop(1)\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "ed219792",
"metadata": {},
"outputs": [],
"source": [
"#The del keyword also removes the specified index:\n",
"#The del keyword can also delete the list completely.\n",
"\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"del fruits[0]"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "847391c3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['banana', 'cherry']\n"
]
}
],
"source": [
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "876b3021",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[]\n"
]
}
],
"source": [
"#The clear() method empties the list.\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"fruits.clear()\n",
"print(fruits)\n"
]
},
{
"cell_type": "markdown",
"id": "eefe5632",
"metadata": {},
"source": [
"# ------Sort Lists------\n",
"sort():\n",
"To sort descending, use the keyword argument reverse = True:\n",
"\n",
"reverse(): this method reverses the current sorting order of the elements."
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "b8307e7c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['banana', 'kiwi', 'mango', 'orange', 'pineapple']\n"
]
}
],
"source": [
"fruits = [\"orange\", \"mango\", \"kiwi\", \"pineapple\", \"banana\"]\n",
"fruits.sort()\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "2a298226",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['pineapple', 'orange', 'mango', 'kiwi', 'banana']\n"
]
}
],
"source": [
"fruits = [\"orange\", \"mango\", \"kiwi\", \"pineapple\", \"banana\"]\n",
"fruits.sort(reverse=True)\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "9667d9a2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['cherry', 'Kiwi', 'Orange', 'banana']\n"
]
}
],
"source": [
"fruits = [\"banana\", \"Orange\", \"Kiwi\", \"cherry\"]\n",
"fruits.reverse()\n",
"print(fruits)"
]
},
{
"cell_type": "markdown",
"id": "0a5c65af",
"metadata": {},
"source": [
"# ---------Join Two Lists--------\n",
"using the + operator.\n",
"Append list2 into list1:\n",
"Use the extend() method to add list2 at the end of list1:\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "bfb34d16",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 1, 2, 3]\n"
]
}
],
"source": [
"list1 = [\"a\", \"b\", \"c\"]\n",
"list2 = [1, 2, 3]\n",
"\n",
"list3 = list1 + list2\n",
"print(list3)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "ab4d80b8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 1, 2, 3]\n"
]
}
],
"source": [
"list1 = [\"a\", \"b\" , \"c\"]\n",
"list2 = [1, 2, 3]\n",
"\n",
"for x in list2:\n",
" list1.append(x)\n",
"\n",
"print(list1)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "ffc7617a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['a', 'b', 'c', 1, 2, 3]\n"
]
}
],
"source": [
"list1 = [\"a\", \"b\" , \"c\"]\n",
"list2 = [1, 2, 3]\n",
"\n",
"list1.extend(list2)\n",
"print(list1)"
]
},
{
"cell_type": "markdown",
"id": "5fc519b5",
"metadata": {},
"source": [
"# ---------Copy Lists---------\n",
"Make a copy of a list with the copy() method:\n",
"built-in method list()."
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "8309521d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'cherry']\n"
]
}
],
"source": [
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"Newlist = fruits.copy()\n",
"print(Newlist)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "41581f52",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['apple', 'banana', 'cherry']\n"
]
}
],
"source": [
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"Newlist = list(fruits)\n",
"print(Newlist)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b420c42",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 01. Day 1 - introduction to Python/Sets.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "d66abaed",
"metadata": {},
"source": [
"# ---------Python Sets----------\n",
"A set is a collection which is unordered, unchangeable*, and Duplicates Not Allowed.\n",
"Sets are used to store multiple items in a single variable.\n",
"* Note: Set items are unchangeable, but you can remove items and add new items.\n",
"Sets are written with curly brackets.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "fb261ecc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'cherry', 'apple', 'banana'}\n",
"3\n",
"<class 'set'>\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\", \"apple\"}\n",
"\n",
"print(fruits)\n",
"print(len(fruits))\n",
"print(type(fruits))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e9a91847",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{True, 'cherry', 2, 'apple', 'banana'}\n"
]
}
],
"source": [
"#Note: The values True and 1 are considered the same value in sets, and are treated as duplicates:\n",
"fruits = {\"apple\", \"banana\", \"cherry\", True, 1, 2}\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ae13b0d5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'banana', 'cherry', 'apple'}\n"
]
}
],
"source": [
"#Using the set() constructor to make a set:\n",
"fruits = set((\"apple\", \"banana\", \"cherry\")) # note the double round-brackets\n",
"print(fruits)"
]
},
{
"cell_type": "markdown",
"id": "5cb7db91",
"metadata": {},
"source": [
"# -------Access Set Items----------\n",
"You cannot access items in a set by referring to an index or a key.\n",
"\n",
"But you can loop through the set items using a for loop, or ask if a specified value is present in a set, by using the in keyword."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "71eb3585",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"print(\"banana\" in fruits)"
]
},
{
"cell_type": "markdown",
"id": "7d5398f1",
"metadata": {},
"source": [
"# -----Add Set Items-----------\n",
"Once a set is created, you cannot change its items, but you can add new items.\n",
"\n",
"#Add an item to a set, using the add() method:\n",
"#To add items from another set into the current set, use the update() method."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b235b595",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'banana', 'cherry', 'orange', 'apple'}\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"fruits.add(\"orange\")\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4f9f60a7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'cherry', 'pineapple', 'papaya', 'mango', 'apple', 'banana'}\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"fruits2 = {\"pineapple\", \"mango\", \"papaya\"}\n",
"fruits.update(fruits2)\n",
"print(fruits)"
]
},
{
"cell_type": "markdown",
"id": "857b5260",
"metadata": {},
"source": [
"# ---------Remove Set Items-----------\n",
"Remove \"banana\" by using the remove() method:\n",
"Remove \"banana\" by using the discard() method:\n",
"Remove a random item by using the pop() method:\n",
"The clear() method empties the set:\n",
"The del keyword will delete the set completely:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "02ec77b3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'cherry', 'apple'}\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"fruits.remove(\"banana\")\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e2808d90",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'cherry', 'apple'}\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"fruits.discard(\"banana\")\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ab8ecde2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"banana\n",
"{'cherry', 'apple'}\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"x = fruits.pop()\n",
"print(x)\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "0de0c3b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"set()\n"
]
}
],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"fruits.clear()\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "bb664ac3",
"metadata": {},
"outputs": [],
"source": [
"fruits = {\"apple\", \"banana\", \"cherry\"}\n",
"del fruits"
]
},
{
"cell_type": "markdown",
"id": "9c1881dd",
"metadata": {},
"source": [
"# --------Join Two Sets--------\n",
"The union() method returns a new set with all items from both sets:\n",
"The update() method inserts the items in set2 into set1:\n",
"(Keep ONLY the Duplicates): The intersection_update() method will keep only the items that are present in both sets.\n",
"(Keep All, But NOT the Duplicates):The symmetric_difference_update() method will keep only the elements that are NOT present in both sets.\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "c2805145",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{1, 'b', 2, 3, 'a', 'c'}\n"
]
}
],
"source": [
"set1 = {\"a\", \"b\" , \"c\"}\n",
"set2 = {1, 2, 3}\n",
"set3 = set1.union(set2)\n",
"print(set3)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "1c0da92a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'apple'}\n"
]
}
],
"source": [
"x = {\"apple\", \"banana\", \"cherry\"}\n",
"y = {\"google\", \"microsoft\", \"apple\"}\n",
"x.intersection_update(y)\n",
"print(x)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "a0b400f6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'cherry', 'banana', 'microsoft', 'google'}\n"
]
}
],
"source": [
"x = {\"apple\", \"banana\", \"cherry\"}\n",
"y = {\"google\", \"microsoft\", \"apple\"}\n",
"x.symmetric_difference_update(y)\n",
"print(x)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "5ea9560d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{1, 'b', 2, 3, 'a', 'c'}\n"
]
}
],
"source": [
"set1 = {\"a\", \"b\" , \"c\"}\n",
"set2 = {1, 2, 3}\n",
"set1.update(set2)\n",
"print(set1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "252f3423",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 01. Day 1 - introduction to Python/Touples.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "4e4a3687",
"metadata": {},
"source": [
"# --------Touples-------\n",
"Tuple items are ordered, unchangeable, and allow duplicate values.\n",
"\n",
"Tuples are written with round brackets."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5d48e81c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('apple', 'banana', 'cherry', 'apple', 'cherry')\n",
"5\n",
"<class 'tuple'>\n"
]
}
],
"source": [
"fruits = (\"apple\", \"banana\", \"cherry\", \"apple\", \"cherry\")\n",
"print(fruits)\n",
"print(len(fruits))\n",
"print(type(fruits))\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "66d32d29",
"metadata": {},
"source": [
"The tuple() Constructor\n",
"It is also possible to use the tuple() constructor to make a tuple."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "575340e8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('apple', 'banana', 'cherry')\n"
]
}
],
"source": [
"fruits = tuple((\"apple\", \"banana\", \"cherry\")) # note the double round-brackets\n",
"print(fruits)"
]
},
{
"cell_type": "markdown",
"id": "81218e63",
"metadata": {},
"source": [
"# ---------Access Tuple Items---------------"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "6cd4edf0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"banana\n",
"mango\n",
"('cherry', 'orange', 'kiwi')\n",
"('apple', 'banana', 'cherry', 'orange')\n",
"('cherry', 'orange', 'kiwi', 'melon', 'mango')\n",
"('orange', 'kiwi', 'melon')\n"
]
}
],
"source": [
"fruits = (\"apple\", \"banana\", \"cherry\", \"orange\", \"kiwi\", \"melon\", \"mango\")\n",
"print(fruits[1])\n",
"print(fruits[-1])\n",
"print(fruits[2:5])\n",
"print(fruits[:4])\n",
"print(fruits[2:])\n",
"print(fruits[-4:-1])\n"
]
},
{
"cell_type": "markdown",
"id": "95113540",
"metadata": {},
"source": [
"# -------------Update Tuples-------------\n",
"Once a tuple is created, you cannot change its values. Tuples are unchangeable, or immutable as it also is called.\n",
"\n",
"But there is a workaround. You can convert the tuple into a list, change the list, and convert the list back into a tuple.\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "668ae966",
"metadata": {},
"outputs": [],
"source": [
"#Convert the tuple into a list, add \"orange\", and convert it back into a tuple:\n",
"fruits = (\"apple\", \"banana\", \"cherry\")\n",
"y = list(fruits)\n",
"y.append(\"orange\")\n",
"fruits= tuple(y)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "251e140a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('apple', 'banana', 'cherry', 'orange')\n"
]
}
],
"source": [
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "d4080cb0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('banana', 'cherry')\n"
]
}
],
"source": [
"#Convert the tuple into a list, remove \"apple\", and convert it back into a tuple:\n",
"fruits = (\"apple\", \"banana\", \"cherry\")\n",
"y = list(fruits)\n",
"y.remove(\"apple\")\n",
"fruits = tuple(y)\n",
"print(fruits)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "7f7b310d",
"metadata": {},
"outputs": [],
"source": [
"#The del keyword can delete the tuple completely:\n",
"fruits = (\"apple\", \"banana\", \"cherry\")\n",
"del fruits"
]
},
{
"cell_type": "markdown",
"id": "09c80463",
"metadata": {},
"source": [
"# --------Unpack Tuples----------------\n",
"When we create a tuple, we normally assign values to it. This is called \"packing\" a tuple:\n",
"But, in Python, we are also allowed to extract the values back into variables. This is called \"unpacking\":"
]
},
{
"cell_type": "markdown",
"id": "fc7c2c4d",
"metadata": {},
"source": [
"#unpacking\n",
"fruits = (\"apple\", \"banana\", \"cherry\")#packing\n",
"\n",
"(green, yellow, red) = fruits\n",
"\n",
"print(green)\n",
"print(yellow)\n",
"print(red)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "08779720",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"banana\n",
"['cherry', 'strawberry', 'raspberry']\n"
]
}
],
"source": [
"#Using Asterisk*\n",
"#Assign the rest of the values as a list called \"red\":\n",
"\n",
"fruits = (\"apple\", \"banana\", \"cherry\", \"strawberry\", \"raspberry\")\n",
"\n",
"(green, yellow, *red) = fruits\n",
"\n",
"print(green)\n",
"print(yellow)\n",
"print(red)"
]
},
{
"cell_type": "markdown",
"id": "b5097c4b",
"metadata": {},
"source": [
"# ------------Loop Tuples-----------\n",
"Print all items by referring to their index number:\n",
"Print all items, using a while loop to go through all the index numbers:\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f14d84ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"banana\n",
"cherry\n"
]
}
],
"source": [
"fruits = (\"apple\", \"banana\", \"cherry\")\n",
"for i in range(len(fruits)):\n",
" print(fruits[i])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "fe5fe838",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"banana\n",
"cherry\n"
]
}
],
"source": [
"fruits = (\"apple\", \"banana\", \"cherry\")\n",
"i = 0\n",
"while i < len(fruits):\n",
" print(fruits[i])\n",
" i = i + 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7a1d691b",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 02. Day 2 - Python Loops and If-else/loop-if-else.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "5430ac25",
"metadata": {},
"source": [
"# -----------If ... Else------------"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5e4d74c8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b is greater than a\n"
]
}
],
"source": [
"a = 45\n",
"b = 100\n",
"if b > a:\n",
" print(\"b is greater than a\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7d673b55",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"a and b are equal\n"
]
}
],
"source": [
"a = 24\n",
"b = 24\n",
"if b > a:\n",
" print(\"b is greater than a\")\n",
"elif a == b:\n",
" print(\"a and b are equal\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b358f0d6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"a is greater than b\n"
]
}
],
"source": [
"a = 100\n",
"b = 45\n",
"if b > a:\n",
" print(\"b is greater than a\")\n",
"elif a == b:\n",
" print(\"a and b are equal\")\n",
"else:\n",
" print(\"a is greater than b\")"
]
},
{
"cell_type": "markdown",
"id": "3b8ce23b",
"metadata": {},
"source": [
"# --------------Python Loops-------------\n",
"Python has two primitive loop commands:\n",
"while loops\n",
"for loops"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3c266164",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n",
"3\n"
]
}
],
"source": [
"x = 1\n",
"while x < 4:\n",
" print(x)\n",
" x = x + 1\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1611b5a4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n",
"3\n"
]
}
],
"source": [
"#With the break statement we can stop the loop even if the while condition is true:\n",
"x = 1\n",
"while x < 4:\n",
" print(x)\n",
" if x == 3:\n",
" break\n",
" x = x + 1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "261163c9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n",
"4\n",
"5\n"
]
}
],
"source": [
"#With the continue statement we can stop the current iteration, and continue with the next:\n",
"x = 0\n",
"while x < 5:\n",
" x += 1\n",
" if x == 3:\n",
" continue\n",
" print(x)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "edec7b3a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"New number: 10\n",
"Choose Upper Value\n",
"New number: 15\n",
"Choose Lower value\n",
"New number: 12\n",
"Choose Upper Value\n",
"New number: 14\n",
"Congratulations. You made it!\n"
]
}
],
"source": [
"#Number Guessing Game Program In Python\n",
"import random\n",
"Max = 20\n",
"Min = 1\n",
"adaptive_Max = Max\n",
"adaptive_Min = Min\n",
"guessed = random.randint(Min, Max)\n",
"guess = 0\n",
"while guess != guessed:\n",
" guess = int(input(\"New number: \"))\n",
" if guess == 0: \n",
" print(\"Sorry that you're giving up!\")\n",
" break \n",
" elif guess > guessed:\n",
" adaptive_Max = guess - 1\n",
" print(\"Choose Lower value\")\n",
" elif guess < guessed:\n",
" adaptive_Max = guess + 1\n",
" print(\"Choose Upper Value\") \n",
"else:\n",
" print(\"Congratulations. You made it!\")"
]
},
{
"cell_type": "markdown",
"id": "c592ffe6",
"metadata": {},
"source": [
"# ------------for Loop--------------"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9ee0a568",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"banana\n",
"cherry\n"
]
}
],
"source": [
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"for x in fruits:\n",
" print(x)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b46e414f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"banana\n"
]
}
],
"source": [
"#With the break statement we can stop the loop before it has looped through all the items:\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"for x in fruits:\n",
" print(x)\n",
" if x == \"banana\":\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e9cca064",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"apple\n",
"cherry\n"
]
}
],
"source": [
"#With the continue statement we can stop the current iteration of the loop, and continue with the next:\n",
"fruits = [\"apple\", \"banana\", \"cherry\"]\n",
"for x in fruits:\n",
" if x == \"banana\":\n",
" continue\n",
" print(x)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1648f51f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n",
"3\n",
"4\n",
"5\n"
]
}
],
"source": [
"for x in range(2, 6):\n",
" print(x)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "97aab179",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" * \n",
" * * \n",
" * * * \n",
" * * * * \n",
" * * * * * \n",
" * * * * * * \n",
" * * * * * * * \n",
" * * * * * * * * \n",
" * * * * * * * * * \n",
" * * * * * * * * * * \n",
" * * * * * * * * * * * \n",
" * * * * * * * * * * * * \n",
" * * * * * * * * * * * * * \n",
" * * * * * * * * * * * * * * \n",
" * * * * * * * * * * * * * * * \n"
]
}
],
"source": [
"#triangle pattern of star\n",
"def pattern(n):\n",
" k = 2 * n - 2\n",
" for i in range(0,n):\n",
" for j in range(0,k):\n",
" print(end=\" \")\n",
" k = k - 1\n",
" for j in range(0, i+1):\n",
" print(\"*\", end=\" \")\n",
" print(\" \")\n",
" \n",
"pattern(15)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "096433a7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* \r\n",
"* * \r\n",
"* * * \r\n",
"* * * * \r\n",
"* * * * * \r\n",
"* * * * \r\n",
"* * * \r\n",
"* * \r\n",
"* \r\n",
"\r\n"
]
}
],
"source": [
"#Right start pattern of star\n",
"rows = 5\n",
"for i in range(0, rows):\n",
" for j in range(0, i + 1):\n",
" print(\"*\", end=' ')\n",
" print(\"\\r\")\n",
"\n",
"for i in range(rows, 0, -1):\n",
" for j in range(0, i - 1):\n",
" print(\"*\", end=' ')\n",
" print(\"\\r\")"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "9bce24f7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* * * * * \n",
" * * * * \n",
" * * * \n",
" * * \n",
" * \n",
" * \n",
" * * \n",
" * * * \n",
" * * * * \n",
"* * * * * \n"
]
}
],
"source": [
"#Sandglass pattern of star\n",
"rows = 5\n",
"i = 0\n",
"while i <= rows - 1:\n",
" j = 0\n",
" while j < i:\n",
" # display space\n",
" print('', end=' ')\n",
" j += 1\n",
" k = i\n",
" while k <= rows - 1:\n",
" print('*', end=' ')\n",
" k += 1\n",
" print()\n",
" i += 1\n",
"\n",
"i = rows - 1\n",
"while i >= 0:\n",
" j = 0\n",
" while j < i:\n",
" print('', end=' ')\n",
" j += 1\n",
" k = i\n",
" while k <= rows - 1:\n",
" print('*', end=' ')\n",
" k += 1\n",
" print('')\n",
" i -= 1"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "acb6ef76",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"**************\n",
"******__******\n",
"*****____*****\n",
"****______****\n",
"***________***\n",
"**__________**\n",
"*____________*\n"
]
}
],
"source": [
"#Pant style pattern of stars\n",
"rows = 14\n",
"print(\"*\" * rows, end=\"\\n\")\n",
"i = (rows // 2) - 1\n",
"j = 2\n",
"while i != 0:\n",
" while j <= (rows - 2):\n",
" print(\"*\" * i, end=\"\")\n",
" print(\"_\" * j, end=\"\")\n",
" print(\"*\" * i, end=\"\\n\")\n",
" i = i - 1\n",
" j = j + 2"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 03. Day 3- Python Functions/Python Functions .ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "f88e343c",
"metadata": {},
"source": [
"# -----------Python Functions-----------\n",
"A function is a block of code that performs a specific task whenever it is called. \n",
"There are two types of functions:\n",
"built-in functions\n",
"user-defined functions\n",
"\n",
"1. built-in functions:\n",
"These functions are defined and pre-coded in python. examples:\n",
"min(), max(), len(), sum(), type(), range(), dict(), list(), tuple(), set(), print(), etc\n",
"\n",
"2. user-defined functions:\n",
"We can create functions to perform specific tasks as per our needs. Such functions are called user-defined functions."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "34333d32",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, Jack David\n"
]
}
],
"source": [
"def name(fname, lname):\n",
" print(\"Hello,\", fname, lname)\n",
"\n",
"name(\"Jack\", \"David\")"
]
},
{
"cell_type": "markdown",
"id": "8f034ccd",
"metadata": {},
"source": [
"# Function Arguments\n",
"There are four types of arguments that we can provide in a function:\n",
"1). Default Arguments\n",
"2). Keyword Arguments\n",
"3). Required Arguments\n",
"4). Variable-length Arguments"
]
},
{
"cell_type": "markdown",
"id": "c7c03b57",
"metadata": {},
"source": [
"Default arguments:\n",
"We can provide a default value while creating a function.\n",
"This way the function assumes a default value even if a value is not provided in the function call for that argument."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "bbc8612e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, Amy Jack David\n"
]
}
],
"source": [
"def name(fname, mname = \"Jack\", lname = \"David\"):\n",
" print(\"Hello,\", fname, mname, lname)\n",
"\n",
"name(\"Amy\")"
]
},
{
"cell_type": "markdown",
"id": "c9f9ddfd",
"metadata": {},
"source": [
"Keyword arguments:\n",
"We can provide arguments with key = value, this way the interpreter recognizes the arguments by the parameter name. Hence, the the order in which the arguments are passed does not matter."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "36a857c0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, Jade Peter Wesker\n"
]
}
],
"source": [
"def name(fname, mname, lname):\n",
" print(\"Hello,\", fname, mname, lname)\n",
"\n",
"name(mname = \"Peter\", lname = \"Wesker\", fname = \"Jade\")"
]
},
{
"cell_type": "markdown",
"id": "f88909a4",
"metadata": {},
"source": [
"Required arguments:\n",
"In case we don’t pass the arguments with a key = value syntax, then it is necessary to pass the arguments in the correct positional order and the number of arguments passed should match with actual function definition."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e7fb927b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, Peter Ego Quill\n"
]
}
],
"source": [
"def name(fname, mname, lname):\n",
" print(\"Hello,\", fname, mname, lname)\n",
"\n",
"name(\"Peter\", \"Ego\", \"Quill\")"
]
},
{
"cell_type": "markdown",
"id": "640c8afa",
"metadata": {},
"source": [
"Variable-length arguments:\n",
"Sometimes we may need to pass more arguments than those defined in the actual function. This can be done using variable-length arguments.\n",
"\n",
"There are two ways to achieve this:\n",
"Arbitrary Arguments:\n",
"While creating a function, pass a * before the parameter name while defining the function."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "cbf7b9c2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, James Buchanan Barnes\n"
]
}
],
"source": [
"def name(*name):\n",
" print(\"Hello,\", name[0], name[1], name[2])\n",
"\n",
"name(\"James\", \"Buchanan\", \"Barnes\")"
]
},
{
"cell_type": "markdown",
"id": "487a120b",
"metadata": {},
"source": [
"Keyword Arbitrary Arguments:\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "abd12682",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, James Buchanan Barnes\n"
]
}
],
"source": [
"def name(**name):\n",
" print(\"Hello,\", name[\"fname\"], name[\"mname\"], name[\"lname\"])\n",
"\n",
"name(mname = \"Buchanan\", lname = \"Barnes\", fname = \"James\")"
]
},
{
"cell_type": "markdown",
"id": "f1db70d0",
"metadata": {},
"source": [
"# return Statement\n",
"The return statement is used to return the value of the expression back to the main function."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "446dbd28",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, James Buchanan Barnes\n"
]
}
],
"source": [
"def name(fname, mname, lname):\n",
" return \"Hello, \" + fname + \" \" + mname + \" \" + lname\n",
"\n",
"print(name(\"James\", \"Buchanan\", \"Barnes\"))"
]
},
{
"cell_type": "markdown",
"id": "c5246f95",
"metadata": {},
"source": [
"# Python Recursion\n",
"We can let the function call itself, such a process is known as calling a function recursively in python."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "6ce1d916",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter The Number5\n",
"number: 5\n",
"Factorial: 120\n"
]
}
],
"source": [
"def factorial(num): \n",
" if (num == 1 or num == 0):\n",
" return 1\n",
" else:\n",
" return (num * factorial(num - 1)) \n",
" \n",
"num = int(input(\"Enter The Number\"))\n",
"print(\"number: \",num)\n",
"print(\"Factorial: \",factorial(num))"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "77667ae1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter the password length: 10\n",
"Enter the number of passwords: 5\n",
"+b]}}%j,.:\n",
"TJ4x.Ha<t*\n",
"3P~cN;7326\n",
"ayEB@HA\"w0\n",
".tYpw#3.{R\n"
]
}
],
"source": [
"#random Password Generator\n",
"import random\n",
"import string\n",
"\n",
"def generate_password(length=12):\n",
" characters = string.ascii_letters + string.digits + string.punctuation\n",
" password = ''.join(random.choice(characters) for _ in range(length))\n",
"\n",
" return password\n",
"try:\n",
" password_length = int(input(\"Enter the password length: \"))\n",
" num_passwords = int(input(\"Enter the number of passwords: \"))\n",
" for _ in range(num_passwords):\n",
" password = generate_password(password_length)\n",
" print(password)\n",
"\n",
"except ValueError:\n",
" print(\"Invalid input. Please enter valid numbers for password length and number of passwords.\")\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "72807bf7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter a time in seconds: 10\n",
"countdown off!\n"
]
}
],
"source": [
"#Countdown Timer\n",
"\n",
"import time\n",
"def countdown(user_time):\n",
" while user_time >= 0:\n",
" mins, secs = divmod(user_time, 60)\n",
" timer = '{:02d}:{:02d}'.format(mins, secs)\n",
" print(timer, end='\\r')\n",
" time.sleep(1)\n",
" user_time -= 1\n",
" print('countdown off!')\n",
"\n",
"if __name__ == '__main__':\n",
" user_time = int(input(\"Enter a time in seconds: \"))\n",
" countdown(user_time)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1f855326",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1 \n",
" 1 1 \n",
" 1 2 1 \n",
" 1 3 3 1 \n",
" 1 4 6 4 1 \n",
" 1 5 10 10 5 1 \n",
" 1 6 15 20 15 6 1 \n",
" 1 7 21 35 35 21 7 1 \n"
]
}
],
"source": [
"#Pascal's Triangle\n",
"from math import factorial\n",
"def pascal_triangle(n):\n",
" for i in range(n):\n",
" for j in range(n-i+1):\n",
" print(end=' ')\n",
" for j in range(i+1): \n",
" print(factorial(i)//(factorial(j)*factorial(i-j)), end=' ')\n",
" print()\n",
"\n",
"if __name__ == '__main__':\n",
" pascal_triangle(8)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 04. Day 4 - Python oops/Python Oops.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "406a68cc",
"metadata": {},
"source": [
"# --------------Python Oops---------------"
]
},
{
"cell_type": "markdown",
"id": "b7d89771",
"metadata": {},
"source": [
"# Creating a Class:\n",
"A class is a blueprint or a template for creating objects while an object is an instance or a copy of the class with actual values. \n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "711695a7",
"metadata": {},
"outputs": [],
"source": [
"#Create a class using the class keyword.\n",
"class Details:\n",
" name = \"Aryan\"\n",
" address = \"Delhi\"\n",
" age = 25"
]
},
{
"cell_type": "markdown",
"id": "3d7cdd69",
"metadata": {},
"source": [
"# Creating an Object:\n",
"create object of the class."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0b239a61",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Aryan\n",
"Delhi\n",
"25\n"
]
}
],
"source": [
"class Details:\n",
" name = \"Aryan\"\n",
" address = \"Delhi\"\n",
" age = 25\n",
"\n",
"obj1 = Details()\n",
"print(obj1.name)\n",
"print(obj1.address)\n",
"print(obj1.age)"
]
},
{
"cell_type": "markdown",
"id": "8e63c263",
"metadata": {},
"source": [
"# self method\n",
"The self parameter is a reference to the current instance of the class, and is used to access variables that belong to the class.\n",
"\n",
"It must be provided as the extra parameter inside the method definition. "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9a90b671",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"My name is Aryan I'm from Delhi and I'm 25 years old.\n"
]
}
],
"source": [
"class Details:\n",
" name = \"Aryan\"\n",
" address = \"Delhi\"\n",
" age = 25\n",
"\n",
" def desc(self):\n",
" print(\"My name is\", self.name,\n",
" \"I'm from\",self.address,\n",
" \"and I'm\", self.age, \"years old.\")\n",
"\n",
"obj1 = Details()\n",
"obj1.desc()"
]
},
{
"cell_type": "markdown",
"id": "27154158",
"metadata": {},
"source": [
"# __init__ method\n",
"The __init__ method is used to initialize the object’s state and contains statements that are executed at the time of object creation.\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "9ee0df95",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello my name is John\n"
]
}
],
"source": [
"#The string representation of an object WITHOUT the __str__() function:\n",
"class Details:\n",
" def __init__(self, name, age):\n",
" self.name = name\n",
" self.age = age\n",
"\n",
"obj1 = Details(\"John\", 36)\n",
"print(\"Hello my name is \" + obj1.name)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "51cec7fc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"John(36)\n"
]
}
],
"source": [
"#The string representation of an object WITH the __str__() function:\n",
"class Details:\n",
" def __init__(self, name, age):\n",
" self.name = name\n",
" self.age = age\n",
"\n",
" def __str__(self):\n",
" return f\"{self.name}({self.age})\"\n",
"\n",
"obj1 = Details(\"John\", 36)\n",
"\n",
"print(obj1)"
]
},
{
"cell_type": "markdown",
"id": "102b4166",
"metadata": {},
"source": [
"# Python Iterators\n",
"Iterators in python are used to iterate over iterable objects or container datatypes like lists, tuples, dictionaries, sets, etc.\n",
"\n",
"It consists of __iter__() and __next__() methods.\n",
"\n",
"__iter__() : to initialize an iterator, use the __iter__() method.\n",
"\n",
"__next__() : This method returns the next item of the sequence.\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "3bfd9ea2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"H\n",
"e\n",
"l\n",
"l\n",
"o\n",
" \n",
"W\n",
"o\n",
"r\n",
"l\n",
"d\n"
]
}
],
"source": [
"#Using inbuilt iterators:\n",
"string = 'Hello World'\n",
"iterObj = iter(string)\n",
"\n",
"while True:\n",
" try:\n",
" char1 = next(iterObj)\n",
" print(char1)\n",
" except StopIteration:\n",
" break"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "98e61679",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0\n",
"10\n",
"20\n",
"30\n",
"40\n",
"50\n",
"60\n",
"70\n",
"80\n",
"90\n",
"100\n"
]
}
],
"source": [
"#Creating Custom iterators:\n",
"class multipleOf4:\n",
" def __iter__(self):\n",
" self.count = 0\n",
" return self\n",
"\n",
" def __next__(self):\n",
" if self.count <= 100:\n",
" x = self.count\n",
" self.count += 10\n",
" return x\n",
" else:\n",
" raise StopIteration\n",
"\n",
"obj1 = multipleOf4()\n",
"number = iter(obj1)\n",
"\n",
"for x in number:\n",
" print(x)"
]
},
{
"cell_type": "markdown",
"id": "024b8953",
"metadata": {},
"source": [
"# --------------Python Try Except----------------"
]
},
{
"cell_type": "markdown",
"id": "a157b92d",
"metadata": {},
"source": [
"The try block lets you test a block of code for errors.\n",
"\n",
"The except block lets you handle the error.\n",
"\n",
"The else block lets you execute code when there is no error.\n",
"\n",
"The finally block lets you execute code, regardless of the result of the try- and except blocks."
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "5bde744d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter an integer: abcd\n",
"Number entered is not an integer.\n"
]
}
],
"source": [
"try:\n",
" num = int(input(\"Enter an integer: \"))\n",
"except ValueError:\n",
" print(\"Number entered is not an integer.\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "de4044c3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter an integer: 55\n",
"Integer Accepted.\n"
]
}
],
"source": [
"try:\n",
" num = int(input(\"Enter an integer: \"))\n",
"except ValueError:\n",
" print(\"Number entered is not an integer.\")\n",
"else:\n",
" print(\"Integer Accepted.\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "81b22063",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter an integer: -90\n",
"Integer Accepted.\n",
"This block is always executed.\n"
]
}
],
"source": [
"try:\n",
" num = int(input(\"Enter an integer: \"))\n",
"except ValueError:\n",
" print(\"Number entered is not an integer.\")\n",
"else:\n",
" print(\"Integer Accepted.\")\n",
"finally:\n",
" print(\"This block is always executed.\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 05. Day 5 - Python Modules/Python Modules.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "7a97688c",
"metadata": {},
"source": [
"# Python Modules\n",
"There are two types of python modules:\n",
"\n",
"**Built-in modules\n",
"\n",
"**User-defined modules"
]
},
{
"cell_type": "markdown",
"id": "1f6ca2ae",
"metadata": {},
"source": [
"1. Built-in modules:\n",
"\n",
"math\n",
"\n",
"date\n",
"\n",
"os\n",
"\n",
"sys"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e044f553",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Value of cos90 is: -0.4480736161291701\n",
"Value of sin0 is: 0.0\n",
"Value of tan45 is: 1.6197751905438615\n",
"Value of pie is: 3.141592653589793\n"
]
}
],
"source": [
"import math\n",
"cos90 = math.cos(90)\n",
"sin0 = math.sin(0)\n",
"tan45 = math.tan(45)\n",
"pie = math.pi\n",
"print(\"Value of cos90 is:\", cos90)\n",
"print(\"Value of sin0 is:\", sin0)\n",
"print(\"Value of tan45 is:\", tan45)\n",
"print(\"Value of pie is:\",pie)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "228f43e7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The value of tau is: 6.283185307179586\n",
"euler's number is: 2.718281828459045\n"
]
}
],
"source": [
"from math import e, tau \n",
"print( \"The value of tau is: \", tau ) \n",
"print( \"euler's number is: \", e ) "
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "d0388ce3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10.0\n",
"120\n",
"3.141592653589793\n"
]
}
],
"source": [
"from math import sqrt, factorial, pi\n",
"print(sqrt(100))\n",
"print(factorial(5))\n",
"print(pi)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2624b11b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"6\n",
"5\n"
]
}
],
"source": [
"import math\n",
"x = math.ceil(5.7) #math.ceil() method rounds a number upwards to its nearest integer.\n",
"y = math.floor(5.7) #math.floor() method rounds a number downwards to its nearest integer,\n",
"print(x)\n",
"print(y) "
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "d559f025",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4 to the power of 3: 64\n"
]
}
],
"source": [
"# The pow(x, y) function returns the value of x to the power of y (x^y).\n",
"import math\n",
"x = pow(4, 3)\n",
"print(\"4 to the power of 3:\",x)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "2b43a103",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Minimum value in x: 5\n",
"Maximum value in y: 25\n"
]
}
],
"source": [
"import math \n",
"x = min(5, 10, 25)\n",
"y = max(5, 10, 25)\n",
"\n",
"print(\"Minimum value in x: \",x)\n",
"print('Maximum value in y:',y)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "b10dc22e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"49.25\n"
]
}
],
"source": [
"#The abs() function returns the absolute (positive) value of the specified number:\n",
"import math\n",
"x = abs(-49.25)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"id": "b76e42d1",
"metadata": {},
"source": [
"# Data & Time\n"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "a0608836",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2023-09-27 23:36:08.875430\n",
"2023\n",
"9\n",
"27\n"
]
}
],
"source": [
"#using the datetime module\n",
"import datetime\n",
"now = datetime.datetime.now()\n",
"print(now)\n",
"print(now.year)\n",
"print(now.month)\n",
"print(now.day)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "59750299",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1695836110.0214937\n"
]
}
],
"source": [
"import time\n",
"print(time.time())"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "96724317",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wed Sep 27 23:08:18 2023\n"
]
}
],
"source": [
"#print the current time in human readable format\n",
"import time\n",
"print(time.ctime())"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "c6d73b27",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wed Sep 27 23:09:05 2023\n"
]
}
],
"source": [
"#the sleep() function inside time module is used to delay execution of current time thread by the given number of seconds.\n",
"import time\n",
"time.sleep(10)\n",
"print(time.ctime())"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "2809b70b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=19, tm_min=59, tm_sec=16, tm_wday=6, tm_yday=205, tm_isdst=0)\n"
]
}
],
"source": [
"#To get the output of local time in struct_time format, use the localtime() function. \n",
"import time\n",
"\n",
"print(time.localtime(1658672956.8853111))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "8c25e37d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=14, tm_min=29, tm_sec=16, tm_wday=6, tm_yday=205, tm_isdst=0)\n"
]
}
],
"source": [
"#To get the output of Coordinated Universal Time in struct_time format, use the gmtime() function.\n",
"import time\n",
"print(time.gmtime(1658672956.8853111))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "9e740fba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1658673879.0\n"
]
}
],
"source": [
"#time.mktime():\n",
"#We also have the reverse of localtime() function that prints seconds passed since epoch in local time. \n",
"import time\n",
"local_time = (2022, 7, 24, 20, 14, 39, 6, 205, 0)\n",
"print(time.mktime(local_time))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "d0038380",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sun Jul 24 20:14:39 2022\n"
]
}
],
"source": [
"#The asctime() function takes struct_time and prints a single string representing it.\n",
"import time\n",
"local_time = (2022, 7, 24, 20, 14, 39, 6, 205, 0)\n",
"print(time.asctime(local_time))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "71938a63",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=205, tm_isdst=-1)\n"
]
}
],
"source": [
"#time.strptime():\n",
"#This function parses string based on given format and returns it in struct_time format.\n",
"import time\n",
"local_time = \"24 July, 2022\"\n",
"print(time.strptime(local_time, \"%d %B, %Y\"))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "60539943",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" July 2022\n",
"Mo Tu We Th Fr Sa Su\n",
" 1 2 3\n",
" 4 5 6 7 8 9 10\n",
"11 12 13 14 15 16 17\n",
"18 19 20 21 22 23 24\n",
"25 26 27 28 29 30 31\n",
"\n"
]
}
],
"source": [
"#Calendar:\n",
"#We can even print a calendar for a particular month. This can be done using the calendar module.\n",
"import calendar\n",
"print(calendar.month(2022, 7))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "12073630",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"C:\\Users\\ABDULLAH KHAN\n",
"Khan Abdullah\n"
]
}
],
"source": [
"import os\n",
"print(os.getcwd())\n",
"print(os.getlogin())"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "11308b86",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.11.3 | packaged by Anaconda, Inc. | (main, Apr 19 2023, 23:46:34) [MSC v.1916 64 bit (AMD64)]\n",
"['C:\\\\Users\\\\ABDULLAH KHAN\\\\anaconda3\\\\Lib\\\\site-packages\\\\ipykernel_launcher.py', '-f', 'C:\\\\Users\\\\ABDULLAH KHAN\\\\AppData\\\\Roaming\\\\jupyter\\\\runtime\\\\kernel-37533992-db44-407b-b2f0-cdb41b923174.json']\n"
]
}
],
"source": [
"# using the sys module\n",
"import sys\n",
"print(sys.version)\n",
"print(sys.argv)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "7fea41fd",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\"name\": \"John Doe\", \"age\": 30, \"city\": \"New York\"}\n"
]
}
],
"source": [
"# using the json module\n",
"import json\n",
"data = {\n",
" \"name\": \"John Doe\",\n",
" \"age\": 30,\n",
" \"city\": \"New York\"\n",
"}\n",
"json_data = json.dumps(data)\n",
"print(json_data)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "5ab91b59",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"14\n",
"1\n"
]
}
],
"source": [
"#using the random module\n",
"import random\n",
"print(random.randint(1, 100))\n",
"print(random.choice([1, 2, 3, 4, 5]))"
]
},
{
"cell_type": "markdown",
"id": "4f89d57b",
"metadata": {},
"source": [
"# User-defined modules in Python\n",
"it is created by the user to simplify their project. These modules can contain functions, classes, variables, and other code that you can reuse across multiple scripts."
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "1f0f683d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter first number:4\n",
"Enter second number:2\n",
"Addition 6\n",
"Subtraction 2\n",
"Multiplication 8\n",
"Division 2.0\n"
]
}
],
"source": [
"import math \n",
"\n",
"num1 = int(input(\"Enter first number:\"))\n",
"num2 = int(input(\"Enter second number:\"))\n",
"\n",
"print(\"Addition\",num1 + num2)\n",
"print(\"Subtraction\", num1-num2)\n",
"print(\"Multiplication\",num1 * num2)\n",
"print(\"Division\", num1/num2)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "1c2db554",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The number is: 204\n",
"The number is: 404\n"
]
}
],
"source": [
"Number = 204 \n",
"def AddNumber(): \n",
" global Number \n",
" Number = Number + 200 \n",
"print(\"The number is:\", Number) \n",
"# here, we are printing the number after performing the addition \n",
"AddNumber() \n",
"print(\"The number is:\", Number) "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c89a960c",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
================================================
FILE: 07. Day 7 - NumPy Random/NumPy Random.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"id": "bac89c8b",
"metadata": {},
"source": [
"# ------------NumPy Random--------------"
]
},
{
"cell_type": "markdown",
"id": "60cd2caf",
"metadata": {},
"source": [
"Random number does NOT mean a different number every time. Random means something that can not be predicted logically.\n",
"\n",
"Example:\n",
"\n",
"x1: rand() method returns a random float between 0 and 1.\n",
"\n",
"x2: Generate a 1-D array containing 5 random floats:\n",
"\n",
"x3: Generate a 2-D array with 3 rows, each row containing 5 random numbers:\n",
"\n",
"x4: The choice() method allows you to generate a random value based on an array of values.\n",
"\n",
"x5: The choice() method also allows you to return an array of values.Add a size parameter to specify the shape of the array.\n",
"\n",
"x6: Generate a random integer from 0 to 100:\n",
"\n",
"x7: The randint() method takes a size parameter where you can specify the shape of an array.\n",
"\n",
"x8: Generate a 2-D array with 3 rows, each row containing 5 random integers from 0 to 100:\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a5924994",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6420626437552102\n",
"----------***----------\n",
"[0.14277928 0.51592968 0.03466499 0.32079076 0.81690386]\n",
"----------***----------\n",
"[[0.77115377 0.14559649 0.67952816 0.63087458 0.66081908]\n",
" [0.12365142 0.42673273 0.48259759 0.99800023 0.79003666]\n",
" [0.14348286 0.71427619 0.69492459 0.40122435 0.96524042]]\n",
"----------***----------\n",
"9\n",
"----------***----------\n",
"[[3 7 3 7 9]\n",
" [5 5 9 9 9]\n",
" [7 9 3 5 3]]\n",
"----------***----------\n",
"31\n",
"----------***----------\n",
"[23 85 18 48 82]\n",
"----------***----------\n",
"[[47 56 48 59 0]\n",
" [64 88 33 70 8]\n",
" [ 6 89 31 49 51]]\n"
]
}
],
"source": [
"from numpy import random\n",
"x1 = random.rand()\n",
"x2 = random.rand(5)\n",
"x3 = random.rand(3, 5)\n",
"x4 = random.choice([3, 5, 7, 9])\n",
"x5 = random.choice([3, 5, 7, 9], size=(3, 5))\n",
"x6 = random.randint(100)\n",
"x7 = random.randint(100, size=(5))\n",
"x8 = random.randint(100, size=(3, 5))\n",
"\n",
"print(x1)\n",
"print(\"----------***----------\")\n",
"print(x2)\n",
"print(\"----------***----------\")\n",
"print(x3)\n",
"print(\"----------***----------\")\n",
"print(x4)\n",
"print(\"----------***----------\")\n",
"print(x5)\n",
"print(\"----------***----------\")\n",
"print(x6)\n",
"print(\"----------***----------\")\n",
"print(x7)\n",
"print(\"----------***----------\")\n",
"print(x8)"
]
},
{
"cell_type": "markdown",
"id": "03077a63",
"metadata": {},
"source": [
"# Normal (Gaussian) Distribution\n",
"It fits the probability distribution of many events, eg. IQ Scores, Heartbeat etc.\n",
"\n",
"Binomial Distribution:\n",
"\n",
"Poisson Distribution\n",
"\n",
"Uniform Distribution\n",
"\n",
"Logistic Distribution\n",
"\n",
"Multinomial Distribution\n",
"\n",
"Exponential Distribution\n",
"\n",
"Chi Square Distribution\n",
"\n",
"Rayleigh Distribution\n",
"\n",
"Pareto Distribution\n",
"\n",
"Zipf Distribution\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "daa3f379",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.46831222 1.85429718 2.32701823]\n",
" [5.14501762 1.85631046 0.55583493]]\n",
"----------***----------\n",
"[6 4 4 4 6 6 6 9 8 5]\n",
"----------***----------\n",
"[3 1 2 2 1 1 3 1 0 2]\n",
"----------***----------\n",
"[[0.4484118 0.30197194 0.96890467]\n",
" [0.54854555 0.95066253 0.59543629]]\n",
"----------***----------\n",
"[[-1.09051331 0.80187832 -1.78843078]\n",
" [ 0.54567334 -5.09685903 -1.11567729]]\n",
"----------***----------\n",
"[2 1 0 1 0 2]\n",
"----------***----------\n",
"[[1.37249255 2.33685167 2.55651578]\n",
" [0.01356232 0.4687617 1.6651629 ]]\n",
"----------***----------\n",
"[[0.14493347 1.0267001 2.44671402]\n",
" [1.05874351 1.69163538 0.66813062]]\n",
"----------***----------\n",
"[[1.20658832 2.5696103 1.63401152]\n",
" [3.05331025 4.51676379 0.82912664]]\n",
"----------***----------\n",
"[[0.51837108 0.60779479 0.33870461]\n",
" [0.00440749 0.36757406 0.60439129]]\n",
"----------***----------\n",
"[[ 1 9 15]\n",
" [ 2 2 1]]\n"
]
}
],
"source": [
"from numpy import random\n",
"\n",
"y1 = random.normal(loc=1, scale=2, size=(2, 3))\n",
"y2 = random.binomial(n=10, p=0.5, size=10)\n",
"y3 = random.poisson(lam=2, size=10)\n",
"y4 = random.uniform(size=(2, 3))\n",
"y5 = random.logistic(loc=1, scale=2, size=(2, 3))\n",
"y6 = random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])\n",
"y7 = random.exponential(scale=2, size=(2, 3))\n",
"y8 = random.chisquare(df=2, size=(2, 3))\n",
"y9 = random.rayleigh(scale=2, size=(2, 3))\n",
"y10 = random.pareto(a=2, size=(2, 3))\n",
"y11 = random.zipf(a=2, size=(2, 3))\n",
"\n",
"\n",
"print(y1)\n",
"print(\"----------***----------\")\n",
"print(y2)\n",
"print(\"----------***----------\")\n",
"print(y3)\n",
"print(\"----------***----------\")\n",
"print(y4)\n",
"print(\"----------***----------\")\n",
"print(y5)\n",
"print(\"----------***----------\")\n",
"print(y6)\n",
"print(\"----------***----------\")\n",
"print(y7)\n",
"print(\"----------***----------\")\n",
"print(y8)\n",
"print(\"----------***----------\")\n",
"print(y9)\n",
"print(\"----------***----------\")\n",
"print(y10)\n",
"print(\"----------***----------\")\n",
"print(y11)"
]
},
{
"cell_type": "markdown",
"id": "36a2f131",
"metadata": {},
"source": [
"# Visualization of Distribution\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9ae3722f",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:11: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.normal(size=1000), hist=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:16: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `histplot` (an axes-level function for histograms).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:22: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `histplot` (an axes-level function for histograms).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.poisson(lam=2, size=1000), kde=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:27: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.uniform(size=1000), hist=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:32: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.logistic(size=1000), hist=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:37: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `histplot` (an axes-level function for histograms).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6]))\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:42: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.exponential(size=1000), hist=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:47: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.chisquare(df=1, size=1000), hist=False)\n",
"C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:52: UserWarning: \n",
"\n",
"`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
"\n",
"Please adapt your code to use either `displot` (a figure-level function with\n",
"similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
"\n",
"For a guide to updating your code to use the new functions, please see\n",
"https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
"\n",
" sns.distplot(random.rayleigh(size=1000), hist=False)\n"
]
},
{
"data": {
"image/png": "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CcuWLcNTTz2F/fv34+GHH4Zarca8efOkDs8mPPnkkygtLUXv3r2hUCig1+vx4osv4o477pA6NLJBfO9oGRzjOo/joflw7GyISSkLWrlyJVatWtXiPgcOHMDevXtRVlaGFStWWCkyy2rr446LizP9fPHiRdx44424/fbbsWjRIkuHaHUymazBz4IgNNrmqB588EEcPXoUe/bskToUi8vMzMQjjzyC77//HhqNRupwiNrFmV6rbcXXdOsMBgPi4uLw0ksvAQCGDBmC48ePIykpySnfWDclOTkZH330EbZs2YJ+/fohNTUVS5cuRVhYGObPny91eGSjnPm9oyVwjOscjofmxbGzISalLOjBBx/E3/72txb3iYqKwgsvvIDffvsNarW6we/i4uJw55134t///rclwzS7tj5u0cWLFzF+/HiMGjUK69evt3B01hUQEACFQtHom628vLxG34A5ooceeghffvkldu3aha5du0odjsUdOnQIeXl5iI2NNW3T6/XYtWsX3n77bWi1WigUCgkjJGqas71W24qv6daFhoaib9++Dbb16dMHn332mUQR2Z4nnngCy5cvN703GjBgANLT05GQkMCkFDXi7O8dLYFjXOdxPDQvjp0NMSllQQEBAQgICGh1vzfffBMvvPCC6eeLFy9i0qRJSE5OxogRIywZokW09XEDxqUwx48fj9jYWGzcuBFyuWO1OVOpVIiNjUVKSgpmzJhh2p6SkoJp06ZJGJllCYKAhx56CNu3b8cvv/yC6OhoqUOyiuuvvx5//vlng2133303evfujSeffJKDNdkcZ32tthVf062Lj49vtMT6mTNnEBkZKVFEtqeqqqrR+xuFQgGDwSBRRGTLnPW9oyVwjDMfjofmxbGzISalbEBERESDnz08PAAAMTExDp3Nv3jxIq699lpERETg1VdfRX5+vul3ISEhEkZmXsuWLcPcuXMRFxdnqgbLyMjA4sWLpQ7NYh544AFs2bIFX3zxBTw9PU3f9nl7e8PV1VXi6CzH09OzUZ8Cd3d3+Pv7s38B2SRnfa22FV/TrXv00UcxevRovPTSS5g1axb279+P9evXO1zlc2dMnToVL774IiIiIkyrK69duxb33HOP1KGRjXLG946WwDHOfDgemhfHzqsIZHMuXLggABAOHz4sdSgWtXHjRgFAkzdH88477wiRkZGCSqUShg4dKuzcuVPqkCyquX/XjRs3Sh2a1V1zzTXCI488InUYRE3ia7X9+Jpu7KuvvhL69+8vqNVqoXfv3sL69eulDsmmlJWVCY888ogQEREhaDQaoVu3bsLTTz8taLVaqUMjG+Zs7x0tgWOcZXE87ByOnZfJBEEQrJYBIyIiIiIiIiIiAuBYDXyIiIiIiIiIiMguMClFRERERERERERWx6QUERERERERERFZHZNSRERERERERERkdUxKERERERERERGR1TEpRUREREREREREVsekFBERERERERERWR2TUkREREREREREZHVMShERERERERERkdUxKUVERERERERERFbHpBQREREREREREVkdk1JERERERERERGR1TEoREREREREREZHVMSlFRERERERERERWx6QUERERERERERFZHZNSRERERERERERkdUxKERERERERERGR1TEpRWa1cuVKyGQyFBQUNPn7/v3749prr+3QsRcsWICoqKgG24qKivC3v/0NQUFBkMlkmD59eoeOLbWoqCgsWLDA9PMvv/wCmUyGX375pV3HWbduHTZt2tSu+zR1rgULFsDDw6Ndx2nN3r17sXLlSpSUlDT63bXXXtvhvwsism+bNm2CTCZDWlqaRc8jk8mwcuXKdt1nx44dzd7n6uu2JXBs4NhARK1r6jPCSy+9hM8//7zRvh29jlpbU4/JGvcFGl9709LSIJPJ2j2ObNmyBYmJie26T1Pnau3zZUecOHECK1eubPK9R2efP2o/pdQBELXVM888g0ceeaTBtueffx7bt2/Hhg0bEBMTAz8/P4miM6+hQ4di37596Nu3b7vut27dOgQEBLTrg1JHz9Vee/fuxapVq7BgwQL4+Pg0+N26dessem4ion379qFr167tus+OHTvwzjvvNJmY2r59O7y8vMwUXdtwbCAiapuXXnoJM2fObPSFtbWubZ3V1OceqYSGhmLfvn2IiYlp1/22bNmCY8eOYenSpRY/V3udOHECq1atwrXXXtsoAWVLz72zYFKK7EZTF6djx44hJiYGd955p1nOIQgCampq4OrqapbjdZSXlxdGjhxp0XPU1dVBJpNZ5VytsfU3BkRk/8x9nRsyZIhZj9cWHBuIiDrHFq5tbWHppEx7qNVqiz9ner0eOp3OKudqjS09986C0/dIUmIJ7datW/H0008jLCwMXl5euOGGG3D69OkG+15ZSimWdv7www84efIkZDJZg1LcoqIiLFmyBF26dIFKpUK3bt3w9NNPQ6vVNjimTCbDgw8+iHfffRd9+vSBWq3Gv//9b9N0kp9++gn33nsv/P394eXlhXnz5qGyshK5ubmYNWsWfHx8EBoaiscffxx1dXWtPt66ujr8/e9/R0hICNzc3DBmzBjs37+/2eflytLi8+fP429/+xvCwsKgVqsRHByM66+/HqmpqQCM0zyOHz+OnTt3mp4P8fkSj/fhhx/iscceQ5cuXaBWq/HXX3+1WMZ8/PhxXH/99XB3d0dgYCAefPBBVFVVmX7fUjnvlVNlVq5ciSeeeAIAEB0d3ejfq6kpGu39N/zwww/Rp08fuLm5YdCgQfjf//7X/D8EEdm8DRs2YNCgQdBoNPDz88OMGTNw8uTJRvv961//Qs+ePaFWq9G3b19s2bKlydL7q6fvVVVV4fHHH0d0dLTpHHFxcdi6dSsA45jzzjvvmO4r3sRS/6am75WUlOCxxx5Dt27doFarERQUhClTpuDUqVMtPlaODRwbiByNOOXq6NGjuP322+Ht7Q0/Pz8sW7YMOp0Op0+fxo033ghPT09ERUVhzZo1De7f3NTutky/k8lkqKysxL///W/TdUW8lrQ0Nfmvv/7ClClT4OHhgfDwcDz22GONri3tvQZt3LgRvXr1gqurK+Li4vDbb79BEAS88soriI6OhoeHB6677jr89ddfDe7f1Dj2zjvvYNy4cQgKCoK7uzsGDBiANWvWtOkzSFMEQcCaNWsQGRkJjUaDoUOH4ptvvmm0X1PX9Pz8fNx3330IDw+HWq1GYGAg4uPj8cMPPwAwXr+//vprpKenNxhDrzzemjVr8MILLyA6OhpqtRo///xzi+NHZmYmbr31Vnh5ecHb2xt33XUX8vPzG+zT3FT9K8fsTZs24fbbbwcAjB8/3hSbeM6mnvuamhqsWLEC0dHRUKlU6NKlCx544IFGU8+joqJw880349tvv8XQoUPh6uqK3r17Y8OGDc38KxDASimyEU899RTi4+Px/vvvo6ysDE8++SSmTp2KkydPQqFQNNpfLO1csmQJSktL8fHHHwMwfqtaU1OD8ePH49y5c1i1ahUGDhyI3bt3IyEhAampqfj6668bHOvzzz/H7t278eyzzyIkJARBQUE4cOAAAGDRokW49dZb8cknn+Dw4cN46qmnTAPprbfeivvuuw8//PADXn75ZYSFhWHZsmUtPs57770XmzdvxuOPP44JEybg2LFjuPXWW1FeXt7qczRlyhTo9XqsWbMGERERKCgowN69e00Xw+3bt2PmzJnw9vY2TXlQq9UNjrFixQqMGjUK7777LuRyOYKCgpCbm9vk+erq6jBlyhTcf//9WL58Ofbu3YsXXngB6enp+Oqrr1qN90qLFi1CUVER3nrrLWzbtg2hoaEAmv8WvL3/hl9//TUOHDiA1atXw8PDA2vWrMGMGTNw+vRpdOvWrV2xEpH0EhIS8NRTT+GOO+5AQkICCgsLsXLlSowaNQoHDhxAjx49AADr16/H/fffj9tuuw2vv/46SktLsWrVqkYfDpqybNkyfPjhh3jhhRcwZMgQVFZW4tixYygsLARgLN+vrKzEf//7X+zbt890P/H6dbXy8nKMGTMGaWlpePLJJzFixAhUVFRg165dyMnJQe/evZuNhWMDxwYiRzVr1izcdddduP/++5GSkmJKovzwww9YsmQJHn/8cWzZsgVPPvkkunfvjltvvbXT59y3bx+uu+46jB8/Hs888wwAtDrduq6uDrfccgsWLlyIxx57DLt27cLzzz8Pb29vPPvsswDafw363//+h8OHD+Of//wnZDIZnnzySdx0002YP38+zp8/j7fffhulpaVYtmwZbrvtNqSmppoSN005d+4c5syZY0qMHDlyBC+++CJOnTrVoaTHqlWrsGrVKixcuBAzZ85EZmYm7r33Xuj1evTq1avF+86dOxd//PEHXnzxRfTs2RMlJSX4448/TGPounXrcN999+HcuXPYvn17k8d488030bNnT7z66qvw8vIyje3NmTFjBmbNmoXFixfj+PHjeOaZZ3DixAn8/vvvcHFxafPjvummm/DSSy/hqaeewjvvvIOhQ4cCaL5CShAETJ8+HT/++CNWrFiBsWPH4ujRo3juueewb98+7Nu3r8G4euTIETz22GNYvnw5goOD8f7772PhwoXo3r07xo0b1+Y4nYpAZEbPPfecAEDIz89v8vf9+vUTrrnmGtPPP//8swBAmDJlSoP9Pv30UwGAsG/fPtO2+fPnC5GRkQ32u+aaa4R+/fo12Pbuu+8KAIRPP/20wfaXX35ZACB8//33pm0ABG9vb6GoqKjBvhs3bhQACA899FCD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YIHQu3dvwd3dXfDw8BAGDhwovP7664JOpzPdLy0tTZg4caLg6ekpADA9X809z02d68rHc/ToUeHaa68VXF1dBT8/P+H//u//GqwiIgiCUFpaKixatEgIDg4W3N3dhalTpwppaWlNrn6xYsUKISwsTJDL5Q3OefUKS4LQ+X/Dq59TIrJNza2w9P777wsDBw4UVCqV4O3tLUybNk04fvx4o/uvX79e6N69u6BSqYSePXsKGzZsEKZNmyYMGTKkwX5XX5OWL18uxMXFCb6+voJarRa6desmPProo0JBQYFpH61WKyxatEgIDAwUZDJZgzibusYUFxcLjzzyiBARESG4uLgIQUFBwk033SScOnWqxeeAYwPHBiJH0973zE29pz9z5owwceJEwcvLSwgMDBQeeugh4euvv27T6nupqalCfHy84Obm1mA1uZaubc09hit15hokfr555ZVXGmxv6lrc1GP66quvhEGDBgkajUbo0qWL8MQTTwjffPNNm56PphgMBiEhIUEIDw8XVCqVMHDgQOGrr75qdO29+nNZTU2NsHjxYmHgwIGCl5eX4OrqKvTq1Ut47rnnhMrKStP9ioqKhJkzZwo+Pj6mMbSl56GpcwnC5X+HQ4cOCVOnThU8PDwET09P4Y477hAuXbrU4P5arVb4+9//LoSHhwuurq7CNddcI6SmpjZ57U9MTBSio6MFhULR4JxNPX/V1dXCk08+KURGRgouLi5CaGio8H//939CcXFxg/0iIyOFm266qdHjamo8o8tkgnDVpFgiIiIiO1VSUoKePXti+vTpWL9+vdThEBEREVELOH2PiIiI7FJubi5efPFFjB8/Hv7+/khPT8frr7+O8vJyPPLII1KHR0REREStYFKKiIiI7JJarUZaWhqWLFmCoqIiuLm5YeTIkXj33XfRr18/qcMjIiIiolZw+h4REREREREREVldy0vTEBERERERERERWQCTUkREREREREREZHVMShERERERERERkdWx0XkTDAYDLl68CE9PT8hkMqnDISKyGkEQUF5ejrCwMMjltvO9xbp16/DKK68gJycH/fr1Q2JiIsaOHdvkvtu2bUNSUhJSU1Oh1WrRr18/rFy5EpMmTTLts2nTJtx9992N7ltdXQ2NRtOmmDhWEJGzstWxwhZxrCAiZ9XWsYJJqSZcvHgR4eHhUodBRCSZzMxM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
gitextract_wsbu4mgw/
├── 01. Day 1 - introduction to Python/
│ ├── Dictionaries.ipynb
│ ├── List.ipynb
│ ├── Sets.ipynb
│ └── Touples.ipynb
├── 02. Day 2 - Python Loops and If-else/
│ └── loop-if-else.ipynb
├── 03. Day 3- Python Functions/
│ └── Python Functions .ipynb
├── 04. Day 4 - Python oops/
│ └── Python Oops.ipynb
├── 05. Day 5 - Python Modules/
│ └── Python Modules.ipynb
├── 07. Day 7 - NumPy Random/
│ └── NumPy Random.ipynb
├── 08. Day 8 - Pandas Introduction/
│ └── Pandas Introduction.ipynb
├── 09. Day 9 - Pandas - ipl data analysis/
│ └── Pandas -Analysis of ipl data.ipynb
├── 10. Day 10 - Data Manipulation in Pandas/
│ └── Data Manipulation.ipynb
├── 100. Day 100 - Brain Tumor Classification/
│ └── brain-tumor-classification.ipynb
├── 11. Day 11 - Matplotlib Introduction/
│ └── Matplotlib Introduction.ipynb
├── 12. Day 12 - Matplotlib Line/
│ └── Matplotlib Line.ipynb
├── 13. Day 13 -Matplotlib Bar-pie-Scatter Plot/
│ └── Matplotlib Bar Plot.ipynb
├── 14. Day 14 - Seaborn Introduction/
│ └── Seaborn Introduction.ipynb
├── 15. Day 15 - Seaborn Plots Types/
│ └── Seaborn Plots.ipynb
├── 22. Day 22 - Evaluation Metrics/
│ └── Performance Metrics.ipynb
├── 23. Day 23 - Train-Test-Split/
│ └── Train-Test_Split.ipynb
├── 25. Day 25 - Implementation Cross-Validation Techniques/
│ └── Techniques For cross validation.ipynb
├── 29. Day 29 - Simple Linear Regression/
│ └── simple-linear-regression.ipynb
├── 31. Day 31 - Implementation Of Multiple Linear Regression/
│ └── multiple-linear-regression.ipynb
├── 33. Day 33 - Logistic Regression/
│ └── logistic-regression.ipynb
├── 35. Day 35 - Implementation Of SVM/
│ └── svm-for-classification.ipynb
├── 37. Day 37 - Implementation Of KNN/
│ └── knn-for-classification-mobile-price-prediction.ipynb
├── 39. Day 39 - Implementation Of Decision Tree Algorithm/
│ └── decision-tree-algorithm.ipynb
├── 41. Day 41 - Random Forest Implementation/
│ └── random-forest.ipynb
├── 42. Day 42 - Hyperparameter Tuning Random Forest/
│ └── hyperparameter-tuning.ipynb
├── 43. Day 43 - Ensamble Learning Implementation/
│ └── ensamble-learning.ipynb
├── 45. Day 45 - Implementation of Naive Bayes/
│ └── gaussian-naive-bayes.ipynb
├── 47. Day 47 - Implementation of K Mean Clustering/
│ └── k-mean-clustering.ipynb
├── 49. Day 49 - DBSCAN Clustering Algorithm Implementation/
│ └── dbscan-clustering.ipynb
├── 50. Day 50 - Implementation of Hierarchical Clustering/
│ └── hierarchical-clustering.ipynb
├── 52. Day 52 - implementation of Gaussian Mixture Model/
│ └── gaussian-mixture-model.ipynb
├── 53. Day 53 - Fuzzy C-Mean Clustering implementation/
│ └── fuzzy-c-mean.ipynb
├── 56. Day 56 - Implementation of Apriori Algorithm/
│ └── apriori-algorithm.ipynb
├── 58. Day 58 - PCA Breast Cancer Dataset/
│ └── pca-cancer-dataset.ipynb
├── 60. Day 60 - LDA - WineQuality/
│ └── lda-wine-quality.ipynb
├── 62. Day 62 - Q - Learning BTC Dataset/
│ └── q-learning-bitcoins.ipynb
├── 63. Day 63 - DQN Algorithm Salesforce dataset/
│ └── dqn-algorithm.ipynb
├── 65. Day 65 - Implementation of Genetic Algorithm/
│ └── genetic-algorithm.ipynb
├── 67. Day 67 - Ridge Regression implementation/
│ └── ridge-regression.ipynb
├── 68. Day 68 - Lasso Regression implementation/
│ └── lasso-regression.ipynb
├── 69. Day 69 - ElasticNet Regression/
│ └── elasticnet-regression.ipynb
├── 71. Day 71 - Time Series Analysis implement/
│ └── time-series-analysis.ipynb
├── 72. Day 72 - SimpleTime Series Method/
│ └── simple-time-series-methods.ipynb
├── 73. Day 73 - Exponential smoothing methods/
│ └── exponential-smoothing-methods.ipynb
├── 74. Day 74 - Auto Regressive Methods/
│ └── auto-regressive-methods.ipynb
├── 76. Day 76 - Explainable AI-Shap/
│ └── explainable-ai-shap.ipynb
├── 79. Day 79 - NLP Text Classification/
│ └── nlp-text-classification.ipynb
├── 80. Day 80 - NLP Password Strength/
│ └── nlp-password-strength.ipynb
├── 81. Day 81 - NLP - Spam Detection/
│ └── nlp-spam-detection.ipynb
├── 82. Day 82 - Oversampling - Undersampling/
│ └── oversampling-undersampling.ipynb
├── 83. Day 83 - Twitter Sentiment Analysis/
│ └── twitter-sentiment-analysis.ipynb
├── 84. Day 84 - Emotion Detection - NLP/
│ └── emotion-detection-nlp.ipynb
├── 85. Day 85 - Language Detection - NLP/
│ └── language-detection-nlp.ipynb
├── 95. Day 95 - computer Vision Image processing/
│ └── image-processing.ipynb
├── 96. Day 96 - Image Processing/
│ └── image-processing.ipynb
├── 97. Day 97 - Watermark Using CV/
│ └── watermark-using-cv.ipynb
├── 98. Day 98 - Texture Features Extraction/
│ └── texture-features-extraction.ipynb
└── 99. Day 99 - Lane Detection/
└── lane-detection-using-cv.ipynb
Copy disabled (too large)
Download .json
Condensed preview — 62 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (34,594K chars).
[
{
"path": "01. Day 1 - introduction to Python/Dictionaries.ipynb",
"chars": 6974,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"93ac7a94\",\n \"metadata\": {},\n \"source\": [\n \"# -----------P"
},
{
"path": "01. Day 1 - introduction to Python/List.ipynb",
"chars": 10580,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"8297fde3\",\n \"metadata\": {},\n \"source\": [\n \"# Python Lists"
},
{
"path": "01. Day 1 - introduction to Python/Sets.ipynb",
"chars": 8540,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"d66abaed\",\n \"metadata\": {},\n \"source\": [\n \"# ---------Pyt"
},
{
"path": "01. Day 1 - introduction to Python/Touples.ipynb",
"chars": 7025,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"4e4a3687\",\n \"metadata\": {},\n \"source\": [\n \"# --------Toup"
},
{
"path": "02. Day 2 - Python Loops and If-else/loop-if-else.ipynb",
"chars": 10498,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5430ac25\",\n \"metadata\": {},\n \"source\": [\n \"# -----------"
},
{
"path": "03. Day 3- Python Functions/Python Functions .ipynb",
"chars": 9984,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"f88e343c\",\n \"metadata\": {},\n \"source\": [\n \"# -----------P"
},
{
"path": "04. Day 4 - Python oops/Python Oops.ipynb",
"chars": 8483,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"406a68cc\",\n \"metadata\": {},\n \"source\": [\n \"# ------------"
},
{
"path": "05. Day 5 - Python Modules/Python Modules.ipynb",
"chars": 13077,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"7a97688c\",\n \"metadata\": {},\n \"source\": [\n \"# Python Modul"
},
{
"path": "07. Day 7 - NumPy Random/NumPy Random.ipynb",
"chars": 195585,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"bac89c8b\",\n \"metadata\": {},\n \"source\": [\n \"# ------------"
},
{
"path": "08. Day 8 - Pandas Introduction/Pandas Introduction.ipynb",
"chars": 11810,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"e79fb075\",\n \"metadata\": {},\n \"source\": [\n \"# ------------"
},
{
"path": "09. Day 9 - Pandas - ipl data analysis/Pandas -Analysis of ipl data.ipynb",
"chars": 75475,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"bdbf75b8\",\n \"metadata\": {},\n \"source\": [\n \"# ------------"
},
{
"path": "10. Day 10 - Data Manipulation in Pandas/Data Manipulation.ipynb",
"chars": 8118,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"724f45a4\",\n \"metadata\": {},\n \"source\": [\n \"# Data Manipul"
},
{
"path": "100. Day 100 - Brain Tumor Classification/brain-tumor-classification.ipynb",
"chars": 358852,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "11. Day 11 - Matplotlib Introduction/Matplotlib Introduction.ipynb",
"chars": 260765,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"4f7aed13\",\n \"metadata\": {},\n \"source\": [\n \"# Matplotlib\"\n"
},
{
"path": "12. Day 12 - Matplotlib Line/Matplotlib Line.ipynb",
"chars": 561323,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"20322ba7\",\n \"metadata\": {},\n \"source\": [\n \"### Matplotlib"
},
{
"path": "13. Day 13 -Matplotlib Bar-pie-Scatter Plot/Matplotlib Bar Plot.ipynb",
"chars": 344154,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"eb8f5f7b\",\n \"metadata\": {},\n \"source\": [\n \"# Matplotlib S"
},
{
"path": "14. Day 14 - Seaborn Introduction/Seaborn Introduction.ipynb",
"chars": 854274,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"0eb603a0\",\n \"metadata\": {},\n \"source\": [\n \"# Python Seabo"
},
{
"path": "15. Day 15 - Seaborn Plots Types/Seaborn Plots.ipynb",
"chars": 916715,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"e83c3397\",\n \"metadata\": {},\n \"source\": [\n \"# Seaborn Diff"
},
{
"path": "22. Day 22 - Evaluation Metrics/Performance Metrics.ipynb",
"chars": 3190,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"18c77747\",\n \"metadata\": {},\n \"source\": [\n \"# Performance "
},
{
"path": "23. Day 23 - Train-Test-Split/Train-Test_Split.ipynb",
"chars": 7102,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"5882df1f\",\n \"metadata\": {},\n \"source\": [\n \"# Train Test S"
},
{
"path": "25. Day 25 - Implementation Cross-Validation Techniques/Techniques For cross validation.ipynb",
"chars": 6613,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"id\": \"f42b9871\",\n \"metadata\": {},\n \"source\": [\n \"# Cross-Valida"
},
{
"path": "29. Day 29 - Simple Linear Regression/simple-linear-regression.ipynb",
"chars": 59077,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "31. Day 31 - Implementation Of Multiple Linear Regression/multiple-linear-regression.ipynb",
"chars": 85980,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "33. Day 33 - Logistic Regression/logistic-regression.ipynb",
"chars": 42929,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "35. Day 35 - Implementation Of SVM/svm-for-classification.ipynb",
"chars": 378902,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "37. Day 37 - Implementation Of KNN/knn-for-classification-mobile-price-prediction.ipynb",
"chars": 460019,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "39. Day 39 - Implementation Of Decision Tree Algorithm/decision-tree-algorithm.ipynb",
"chars": 644224,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "41. Day 41 - Random Forest Implementation/random-forest.ipynb",
"chars": 36836,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "42. Day 42 - Hyperparameter Tuning Random Forest/hyperparameter-tuning.ipynb",
"chars": 31676,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "43. Day 43 - Ensamble Learning Implementation/ensamble-learning.ipynb",
"chars": 54056,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "45. Day 45 - Implementation of Naive Bayes/gaussian-naive-bayes.ipynb",
"chars": 63469,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "47. Day 47 - Implementation of K Mean Clustering/k-mean-clustering.ipynb",
"chars": 494485,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "49. Day 49 - DBSCAN Clustering Algorithm Implementation/dbscan-clustering.ipynb",
"chars": 2901297,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "50. Day 50 - Implementation of Hierarchical Clustering/hierarchical-clustering.ipynb",
"chars": 648871,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "52. Day 52 - implementation of Gaussian Mixture Model/gaussian-mixture-model.ipynb",
"chars": 544986,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "53. Day 53 - Fuzzy C-Mean Clustering implementation/fuzzy-c-mean.ipynb",
"chars": 310468,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "56. Day 56 - Implementation of Apriori Algorithm/apriori-algorithm.ipynb",
"chars": 325857,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "58. Day 58 - PCA Breast Cancer Dataset/pca-cancer-dataset.ipynb",
"chars": 1073889,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "60. Day 60 - LDA - WineQuality/lda-wine-quality.ipynb",
"chars": 4742867,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "62. Day 62 - Q - Learning BTC Dataset/q-learning-bitcoins.ipynb",
"chars": 342688,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "63. Day 63 - DQN Algorithm Salesforce dataset/dqn-algorithm.ipynb",
"chars": 834430,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "65. Day 65 - Implementation of Genetic Algorithm/genetic-algorithm.ipynb",
"chars": 69775,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "67. Day 67 - Ridge Regression implementation/ridge-regression.ipynb",
"chars": 2072466,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "68. Day 68 - Lasso Regression implementation/lasso-regression.ipynb",
"chars": 508761,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "69. Day 69 - ElasticNet Regression/elasticnet-regression.ipynb",
"chars": 888023,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "71. Day 71 - Time Series Analysis implement/time-series-analysis.ipynb",
"chars": 639820,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "72. Day 72 - SimpleTime Series Method/simple-time-series-methods.ipynb",
"chars": 804903,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "73. Day 73 - Exponential smoothing methods/exponential-smoothing-methods.ipynb",
"chars": 901909,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "74. Day 74 - Auto Regressive Methods/auto-regressive-methods.ipynb",
"chars": 1143290,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "76. Day 76 - Explainable AI-Shap/explainable-ai-shap.ipynb",
"chars": 736645,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "79. Day 79 - NLP Text Classification/nlp-text-classification.ipynb",
"chars": 227206,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "80. Day 80 - NLP Password Strength/nlp-password-strength.ipynb",
"chars": 74833,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "81. Day 81 - NLP - Spam Detection/nlp-spam-detection.ipynb",
"chars": 1282236,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "82. Day 82 - Oversampling - Undersampling/oversampling-undersampling.ipynb",
"chars": 51166,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "83. Day 83 - Twitter Sentiment Analysis/twitter-sentiment-analysis.ipynb",
"chars": 810261,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "84. Day 84 - Emotion Detection - NLP/emotion-detection-nlp.ipynb",
"chars": 134692,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "85. Day 85 - Language Detection - NLP/language-detection-nlp.ipynb",
"chars": 501525,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "95. Day 95 - computer Vision Image processing/image-processing.ipynb",
"chars": 3513475,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "96. Day 96 - Image Processing/image-processing.ipynb",
"chars": 524109,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "97. Day 97 - Watermark Using CV/watermark-using-cv.ipynb",
"chars": 104953,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "98. Day 98 - Texture Features Extraction/texture-features-extraction.ipynb",
"chars": 308866,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
},
{
"path": "99. Day 99 - Lane Detection/lane-detection-using-cv.ipynb",
"chars": 1401170,
"preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
}
]
About this extraction
This page contains the full source code of the Abdullah-khan0/100-DaysOf-Code-dataScience GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 62 files (32.9 MB), approximately 8.6M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.