From cd0f48abb4cf05f758d2069e1fedfc5533e931f1 Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Wed, 19 Jun 2024 12:07:33 +0530 Subject: [PATCH 1/7] Add files via upload --- 3-Data Structures/3.3-Sets.ipynb | 502 +++++++++++++++++++++++++++++++ 1 file changed, 502 insertions(+) diff --git a/3-Data Structures/3.3-Sets.ipynb b/3-Data Structures/3.3-Sets.ipynb index e69de29bb..f70bef65a 100644 --- a/3-Data Structures/3.3-Sets.ipynb +++ b/3-Data Structures/3.3-Sets.ipynb @@ -0,0 +1,502 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sets\n", + "Sets are a built-in data type in Python used to store collections of unique items. They are unordered, meaning that the elements do not follow a specific order, and they do not allow duplicate elements. Sets are useful for membership tests, eliminating duplicate entries, and performing mathematical set operations like union, intersection, difference, and symmetric difference." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5}\n", + "\n" + ] + } + ], + "source": [ + "##create a set\n", + "my_set={1,2,3,4,5}\n", + "print(my_set)\n", + "print(type(my_set))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "my_empty_set=set()\n", + "print(type(my_empty_set))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6}\n" + ] + } + ], + "source": [ + "my_set=set([1,2,3,4,5,6])\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6}\n" + ] + } + ], + "source": [ + "my_empty_set=set([1,2,3,6,5,4,5,6])\n", + "print(my_empty_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6, 7}\n", + "{1, 2, 3, 4, 5, 6, 7}\n" + ] + } + ], + "source": [ + "## Basics Sets Operation\n", + "## Adiing and Removing Elements\n", + "my_set.add(7)\n", + "print(my_set)\n", + "my_set.add(7)\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 4, 5, 6, 7}\n" + ] + } + ], + "source": [ + "## Remove the elements from a set\n", + "my_set.remove(3)\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "10", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[11], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[43mmy_set\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mremove\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mKeyError\u001b[0m: 10" + ] + } + ], + "source": [ + "my_set.remove(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 4, 5, 6, 7}\n" + ] + } + ], + "source": [ + "my_set.discard(11)\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "{2, 4, 5, 6, 7}\n" + ] + } + ], + "source": [ + "## pop method\n", + "removed_element=my_set.pop()\n", + "print(removed_element)\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set()\n" + ] + } + ], + "source": [ + "## clear all the elements\n", + "my_set.clear()\n", + "print(my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "## Set Memebership test\n", + "my_set={1,2,3,4,5}\n", + "print(3 in my_set)\n", + "print(10 in my_set)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3, 4, 5, 6, 7, 8, 9}\n", + "{4, 5, 6}\n", + "{4, 5, 6}\n" + ] + } + ], + "source": [ + "## MAthematical Operation\n", + "set1={1,2,3,4,5,6}\n", + "set2={4,5,6,7,8,9}\n", + "\n", + "### Union\n", + "union_set=set1.union(set2)\n", + "print(union_set)\n", + "\n", + "## Intersection\n", + "intersection_set=set1.intersection(set2)\n", + "print(intersection_set)\n", + "\n", + "set1.intersection_update(set2)\n", + "print(set1)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{1, 2, 3}\n" + ] + } + ], + "source": [ + "set1={1,2,3,4,5,6}\n", + "set2={4,5,6,7,8,9}\n", + "\n", + "## Difference \n", + "print(set1.difference(set2))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2, 3, 4, 5, 6}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set1" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{7, 8, 9}" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set2.difference(set1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2, 3, 7, 8, 9}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Symmetric Difference\n", + "set1.symmetric_difference(set2)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n", + "True\n" + ] + } + ], + "source": [ + "## Sets Methods\n", + "set1={1,2,3,4,5}\n", + "set2={3,4,5}\n", + "\n", + "## is subset\n", + "print(set1.issubset(set2))\n", + "\n", + "print(set1.issuperset(set2))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2, 3, 4, 5}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lst=[1,2,2,3,4,4,5]\n", + "\n", + "set(lst)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'tutorial', 'we', 'discussing', 'this', 'In', 'about', 'sets', 'are'}\n", + "8\n" + ] + } + ], + "source": [ + "### Counting Unique words in text\n", + "\n", + "text=\"In this tutorial we are discussing about sets\"\n", + "words=text.split()\n", + "\n", + "## convert list of words to set to get unique words\n", + "\n", + "unique_words=set(words)\n", + "print(unique_words)\n", + "print(len(unique_words))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Conclusion\n", + "Sets are a powerful and flexible data type in Python that provide a way to store collections of unique elements. They support various operations such as union, intersection, difference, and symmetric difference, which are useful for mathematical computations. Understanding how to use sets and their associated methods can help you write more efficient and clean Python code, especially when dealing with unique collections and membership tests." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From c3ea9f0fce424b7c3f188f52314c893ff1bfd761 Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Wed, 19 Jun 2024 15:14:52 +0530 Subject: [PATCH 2/7] Add files via upload --- 10-Data Analysis With Python/10.1-numpy.ipynb | 569 +++++ .../10.2-pandas.ipynb | 1451 +++++++++++ .../10.3-datamanipulation.ipynb | 2150 +++++++++++++++++ .../10.4-readdata.ipynb | 953 ++++++++ .../10.5-matplotlib.ipynb | 597 +++++ .../10.6-seaborn.ipynb | 948 ++++++++ 10-Data Analysis With Python/data.csv | 51 + 10-Data Analysis With Python/data.xlsx | Bin 0 -> 8145 bytes 10-Data Analysis With Python/df_excel | Bin 0 -> 794 bytes 10-Data Analysis With Python/sales1_data.csv | 26 + 10-Data Analysis With Python/sales_data.csv | 241 ++ 10-Data Analysis With Python/sample_data.xlsx | 0 10-Data Analysis With Python/wine.csv | 179 ++ 13 files changed, 7165 insertions(+) create mode 100644 10-Data Analysis With Python/10.1-numpy.ipynb create mode 100644 10-Data Analysis With Python/10.2-pandas.ipynb create mode 100644 10-Data Analysis With Python/10.3-datamanipulation.ipynb create mode 100644 10-Data Analysis With Python/10.4-readdata.ipynb create mode 100644 10-Data Analysis With Python/10.5-matplotlib.ipynb create mode 100644 10-Data Analysis With Python/10.6-seaborn.ipynb create mode 100644 10-Data Analysis With Python/data.csv create mode 100644 10-Data Analysis With Python/data.xlsx create mode 100644 10-Data Analysis With Python/df_excel create mode 100644 10-Data Analysis With Python/sales1_data.csv create mode 100644 10-Data Analysis With Python/sales_data.csv create mode 100644 10-Data Analysis With Python/sample_data.xlsx create mode 100644 10-Data Analysis With Python/wine.csv diff --git a/10-Data Analysis With Python/10.1-numpy.ipynb b/10-Data Analysis With Python/10.1-numpy.ipynb new file mode 100644 index 000000000..f508f35e3 --- /dev/null +++ b/10-Data Analysis With Python/10.1-numpy.ipynb @@ -0,0 +1,569 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Numpy\n", + "NumPy is a fundamental library for scientific computing in Python. It provides support for arrays and matrices, along with a collection of mathematical functions to operate on these data structures. In this lesson, we will cover the basics of NumPy, focusing on arrays and vectorized operations." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: numpy in e:\\udemy final\\python\\venv\\lib\\site-packages (1.26.4)\n" + ] + } + ], + "source": [ + "!pip install numpy" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2 3 4 5]\n", + "\n", + "(5,)\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "\n", + "## create array using numpy\n", + "##create a 1D array\n", + "arr1=np.array([1,2,3,4,5])\n", + "print(arr1)\n", + "print(type(arr1))\n", + "print(arr1.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3, 4, 5]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## 1 d array\n", + "arr2=np.array([1,2,3,4,5])\n", + "arr2.reshape(1,5) ##1 row and 5 columns" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 5)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr2=np.array([[1,2,3,4,5]])\n", + "arr2.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3 4 5]\n", + " [2 3 4 5 6]]\n", + "(2, 5)\n" + ] + } + ], + "source": [ + "## 2d array\n", + "arr2=np.array([[1,2,3,4,5],[2,3,4,5,6]])\n", + "print(arr2)\n", + "print(arr2.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0],\n", + " [2],\n", + " [4],\n", + " [6],\n", + " [8]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.arange(0,10,2).reshape(5,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 1., 1., 1.],\n", + " [1., 1., 1., 1.],\n", + " [1., 1., 1., 1.]])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.ones((3,4))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0.],\n", + " [0., 1., 0.],\n", + " [0., 0., 1.]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## identity matrix\n", + "np.eye(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Array:\n", + " [[1 2 3]\n", + " [4 5 6]]\n", + "Shape: (2, 3)\n", + "Number of dimensions: 2\n", + "Size (number of elements): 6\n", + "Data type: int32\n", + "Item size (in bytes): 4\n" + ] + } + ], + "source": [ + "## Attributes of Numpy Array\n", + "arr = np.array([[1, 2, 3], [4, 5, 6]])\n", + "\n", + "print(\"Array:\\n\", arr)\n", + "print(\"Shape:\", arr.shape) # Output: (2, 3)\n", + "print(\"Number of dimensions:\", arr.ndim) # Output: 2\n", + "print(\"Size (number of elements):\", arr.size) # Output: 6\n", + "print(\"Data type:\", arr.dtype) # Output: int32 (may vary based on platform)\n", + "print(\"Item size (in bytes):\", arr.itemsize) # Output: 8 (may vary based on platform)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Addition: [11 22 33 44 55]\n", + "Substraction: [ -9 -18 -27 -36 -45]\n", + "Multiplication: [ 10 40 90 160 250]\n", + "Division: [0.1 0.1 0.1 0.1 0.1]\n" + ] + } + ], + "source": [ + "### Numpy Vectorized Operation\n", + "arr1=np.array([1,2,3,4,5])\n", + "arr2=np.array([10,20,30,40,50])\n", + "\n", + "### Element Wise addition\n", + "print(\"Addition:\", arr1+arr2)\n", + "\n", + "## Element Wise Substraction\n", + "print(\"Substraction:\", arr1-arr2)\n", + "\n", + "# Element-wise multiplication\n", + "print(\"Multiplication:\", arr1 * arr2)\n", + "\n", + "# Element-wise division\n", + "print(\"Division:\", arr1 / arr2)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1.41421356 1.73205081 2. 2.23606798 2.44948974]\n", + "[ 7.3890561 20.08553692 54.59815003 148.4131591 403.42879349]\n", + "[ 0.90929743 0.14112001 -0.7568025 -0.95892427 -0.2794155 ]\n", + "[0.69314718 1.09861229 1.38629436 1.60943791 1.79175947]\n" + ] + } + ], + "source": [ + "## Universal Function\n", + "arr=np.array([2,3,4,5,6])\n", + "## square root\n", + "print(np.sqrt(arr))\n", + "\n", + "## Exponential\n", + "print(np.exp(arr))\n", + "\n", + "## Sine\n", + "print(np.sin(arr))\n", + "\n", + "## natural log\n", + "print(np.log(arr))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Array : \n", + " [[ 1 2 3 4]\n", + " [ 5 6 7 8]\n", + " [ 9 10 11 12]]\n" + ] + } + ], + "source": [ + "## array slicing and Indexing\n", + "\n", + "arr=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])\n", + "print(\"Array : \\n\", arr)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 6 7]\n", + " [10 11]]\n" + ] + } + ], + "source": [ + "print(arr[1:,1:3])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "[[3 4]\n", + " [7 8]]\n" + ] + } + ], + "source": [ + "print(arr[0][0])\n", + "print(arr[0:2,2:])" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 7, 8],\n", + " [11, 12]])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr[1:,2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[100 2 3 4]\n", + " [ 5 6 7 8]\n", + " [ 9 10 11 12]]\n" + ] + } + ], + "source": [ + "## Modify array elements\n", + "arr[0,0]=100\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[100 2 3 4]\n", + " [100 100 100 100]\n", + " [100 100 100 100]]\n" + ] + } + ], + "source": [ + "arr[1:]=100\n", + "print(arr)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized data: [-1.41421356 -0.70710678 0. 0.70710678 1.41421356]\n" + ] + } + ], + "source": [ + "### statistical concepts--Normalization\n", + "##to have a mean of 0 and standard deviation of 1\n", + "data = np.array([1, 2, 3, 4, 5])\n", + "\n", + "# Calculate the mean and standard deviation\n", + "mean = np.mean(data)\n", + "std_dev = np.std(data)\n", + "\n", + "# Normalize the data\n", + "normalized_data = (data - mean) / std_dev\n", + "print(\"Normalized data:\", normalized_data)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean: 5.5\n", + "Median: 5.5\n", + "Standard Deviation: 2.8722813232690143\n", + "Variance: 8.25\n" + ] + } + ], + "source": [ + "data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])\n", + "\n", + "# Mean\n", + "mean = np.mean(data)\n", + "print(\"Mean:\", mean)\n", + "\n", + "# Median\n", + "median = np.median(data)\n", + "print(\"Median:\", median)\n", + "\n", + "# Standard deviation\n", + "std_dev = np.std(data)\n", + "print(\"Standard Deviation:\", std_dev)\n", + "\n", + "# Variance\n", + "variance = np.var(data)\n", + "print(\"Variance:\", variance)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5, 6, 7, 8])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Logical operation\n", + "data=np.array([1,2,3,4,5,6,7,8,9,10])\n", + "\n", + "data[(data>=5) & (data<=8)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/10.2-pandas.ipynb b/10-Data Analysis With Python/10.2-pandas.ipynb new file mode 100644 index 000000000..f63e7efb5 --- /dev/null +++ b/10-Data Analysis With Python/10.2-pandas.ipynb @@ -0,0 +1,1451 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Pandas-DataFrame And Series\n", + "Pandas is a powerful data manipulation library in Python, widely used for data analysis and data cleaning. It provides two primary data structures: Series and DataFrame. A Series is a one-dimensional array-like object, while a DataFrame is a two-dimensional, size-mutable, and potentially heterogeneous tabular data structure with labeled axes (rows and columns)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Series \n", + " 0 1\n", + "1 2\n", + "2 3\n", + "3 4\n", + "4 5\n", + "dtype: int64\n", + "\n" + ] + } + ], + "source": [ + "## Series\n", + "##A Pandas Series is a one-dimensional array-like object that can hold any data type. It is similar to a column in a table.\n", + "\n", + "import pandas as pd\n", + "data=[1,2,3,4,5]\n", + "series=pd.Series(data)\n", + "print(\"Series \\n\",series)\n", + "print(type(series))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a 1\n", + "b 2\n", + "c 3\n", + "dtype: int64\n" + ] + } + ], + "source": [ + "## Create a Series from dictionary\n", + "data={'a':1,'b':2,'c':3}\n", + "series_dict=pd.Series(data)\n", + "print(series_dict)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data=[10,20,30]\n", + "index=['a','b','c']\n", + "pd.Series(data,index=index)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida\n", + "\n" + ] + } + ], + "source": [ + "## Dataframe\n", + "## create a Dataframe from a dictionary oof list\n", + "\n", + "data={\n", + " 'Name':['Krish','John','Jack'],\n", + " 'Age':[25,30,45],\n", + " 'City':['Bangalore','New York','Florida']\n", + "}\n", + "df=pd.DataFrame(data)\n", + "print(df)\n", + "print(type(df))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Name Age City\n", + "0 Krish 32 Bangalore\n", + "1 John 34 Bangalore\n", + "2 Bappy 32 Bangalore\n", + "3 JAck 32 Bangalore\n", + "\n" + ] + } + ], + "source": [ + "## Create a Data frame From a List of Dictionaries\n", + "\n", + "data=[\n", + " {'Name':'Krish','Age':32,'City':'Bangalore'},\n", + " {'Name':'John','Age':34,'City':'Bangalore'},\n", + " {'Name':'Bappy','Age':32,'City':'Bangalore'},\n", + " {'Name':'JAck','Age':32,'City':'Bangalore'}\n", + " \n", + "]\n", + "df=pd.DataFrame(data)\n", + "print(df)\n", + "print(type(df))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDDateProduct CategoryProduct NameUnits SoldUnit PriceTotal RevenueRegionPayment Method
0100012024-01-01ElectronicsiPhone 14 Pro2999.991999.98North AmericaCredit Card
1100022024-01-02Home AppliancesDyson V11 Vacuum1499.99499.99EuropePayPal
2100032024-01-03ClothingLevi's 501 Jeans369.99209.97AsiaDebit Card
3100042024-01-04BooksThe Da Vinci Code415.9963.96North AmericaCredit Card
4100052024-01-05Beauty ProductsNeutrogena Skincare Set189.9989.99EuropePayPal
\n", + "
" + ], + "text/plain": [ + " Transaction ID Date Product Category Product Name \\\n", + "0 10001 2024-01-01 Electronics iPhone 14 Pro \n", + "1 10002 2024-01-02 Home Appliances Dyson V11 Vacuum \n", + "2 10003 2024-01-03 Clothing Levi's 501 Jeans \n", + "3 10004 2024-01-04 Books The Da Vinci Code \n", + "4 10005 2024-01-05 Beauty Products Neutrogena Skincare Set \n", + "\n", + " Units Sold Unit Price Total Revenue Region Payment Method \n", + "0 2 999.99 1999.98 North America Credit Card \n", + "1 1 499.99 499.99 Europe PayPal \n", + "2 3 69.99 209.97 Asia Debit Card \n", + "3 4 15.99 63.96 North America Credit Card \n", + "4 1 89.99 89.99 Europe PayPal " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=pd.read_csv('sales_data.csv')\n", + "df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDDateProduct CategoryProduct NameUnits SoldUnit PriceTotal RevenueRegionPayment Method
235102362024-08-23Home AppliancesNespresso Vertuo Next Coffee and Espresso Maker1159.99159.99EuropePayPal
236102372024-08-24ClothingNike Air Force 1 Sneakers390.00270.00AsiaDebit Card
237102382024-08-25BooksThe Handmaid's Tale by Margaret Atwood310.9932.97North AmericaCredit Card
238102392024-08-26Beauty ProductsSunday Riley Luna Sleeping Night Oil155.0055.00EuropePayPal
239102402024-08-27SportsYeti Rambler 20 oz Tumbler229.9959.98AsiaCredit Card
\n", + "
" + ], + "text/plain": [ + " Transaction ID Date Product Category \\\n", + "235 10236 2024-08-23 Home Appliances \n", + "236 10237 2024-08-24 Clothing \n", + "237 10238 2024-08-25 Books \n", + "238 10239 2024-08-26 Beauty Products \n", + "239 10240 2024-08-27 Sports \n", + "\n", + " Product Name Units Sold Unit Price \\\n", + "235 Nespresso Vertuo Next Coffee and Espresso Maker 1 159.99 \n", + "236 Nike Air Force 1 Sneakers 3 90.00 \n", + "237 The Handmaid's Tale by Margaret Atwood 3 10.99 \n", + "238 Sunday Riley Luna Sleeping Night Oil 1 55.00 \n", + "239 Yeti Rambler 20 oz Tumbler 2 29.99 \n", + "\n", + " Total Revenue Region Payment Method \n", + "235 159.99 Europe PayPal \n", + "236 270.00 Asia Debit Card \n", + "237 32.97 North America Credit Card \n", + "238 55.00 Europe PayPal \n", + "239 59.98 Asia Credit Card " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.tail(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish25Bangalore
1John30New York
2Jack45Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Accessing Data From Dataframe\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Krish\n", + "1 John\n", + "2 Jack\n", + "Name: Name, dtype: object" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['Name']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name Krish\n", + "Age 25\n", + "City Bangalore\n", + "Name: 0, dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.loc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Name Krish\n", + "Age 25\n", + "City Bangalore\n", + "Name: 0, dtype: object" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish25Bangalore
1John30New York
2Jack45Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "45" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Accessing a specified element\n", + "df.at[2,'Age']" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Jack'" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.at[2,'Name']" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Florida'" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Accessing a specified element using iat\n", + "df.iat[2,2]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish25Bangalore
1John30New York
2Jack45Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish25Bangalore
1John30New York
2Jack45Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Data MAnipulation with Dataframe\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCitySalary
0Krish25Bangalore50000
1John30New York60000
2Jack45Florida70000
\n", + "
" + ], + "text/plain": [ + " Name Age City Salary\n", + "0 Krish 25 Bangalore 50000\n", + "1 John 30 New York 60000\n", + "2 Jack 45 Florida 70000" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Adding a column\n", + "df['Salary']=[50000,60000,70000]\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "## Remove a column\n", + "df.drop('Salary',axis=1,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish25Bangalore
1John30New York
2Jack45Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 25 Bangalore\n", + "1 John 30 New York\n", + "2 Jack 45 Florida" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
0Krish26Bangalore
1John31New York
2Jack46Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "0 Krish 26 Bangalore\n", + "1 John 31 New York\n", + "2 Jack 46 Florida" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Add age to the column\n", + "df['Age']=df['Age']+1\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "df.drop(0,inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAgeCity
1John31New York
2Jack46Florida
\n", + "
" + ], + "text/plain": [ + " Name Age City\n", + "1 John 31 New York\n", + "2 Jack 46 Florida" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDDateProduct CategoryProduct NameUnits SoldUnit PriceTotal RevenueRegionPayment Method
0100012024-01-01ElectronicsiPhone 14 Pro2999.991999.98North AmericaCredit Card
1100022024-01-02Home AppliancesDyson V11 Vacuum1499.99499.99EuropePayPal
2100032024-01-03ClothingLevi's 501 Jeans369.99209.97AsiaDebit Card
3100042024-01-04BooksThe Da Vinci Code415.9963.96North AmericaCredit Card
4100052024-01-05Beauty ProductsNeutrogena Skincare Set189.9989.99EuropePayPal
\n", + "
" + ], + "text/plain": [ + " Transaction ID Date Product Category Product Name \\\n", + "0 10001 2024-01-01 Electronics iPhone 14 Pro \n", + "1 10002 2024-01-02 Home Appliances Dyson V11 Vacuum \n", + "2 10003 2024-01-03 Clothing Levi's 501 Jeans \n", + "3 10004 2024-01-04 Books The Da Vinci Code \n", + "4 10005 2024-01-05 Beauty Products Neutrogena Skincare Set \n", + "\n", + " Units Sold Unit Price Total Revenue Region Payment Method \n", + "0 2 999.99 1999.98 North America Credit Card \n", + "1 1 499.99 499.99 Europe PayPal \n", + "2 3 69.99 209.97 Asia Debit Card \n", + "3 4 15.99 63.96 North America Credit Card \n", + "4 1 89.99 89.99 Europe PayPal " + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=pd.read_csv('sales_data.csv')\n", + "df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data types:\n", + " Transaction ID int64\n", + "Date object\n", + "Product Category object\n", + "Product Name object\n", + "Units Sold int64\n", + "Unit Price float64\n", + "Total Revenue float64\n", + "Region object\n", + "Payment Method object\n", + "dtype: object\n", + "Statistical summary:\n", + " Transaction ID Units Sold Unit Price Total Revenue\n", + "count 240.00000 240.000000 240.000000 240.000000\n", + "mean 10120.50000 2.158333 236.395583 335.699375\n", + "std 69.42622 1.322454 429.446695 485.804469\n", + "min 10001.00000 1.000000 6.500000 6.500000\n", + "25% 10060.75000 1.000000 29.500000 62.965000\n", + "50% 10120.50000 2.000000 89.990000 179.970000\n", + "75% 10180.25000 3.000000 249.990000 399.225000\n", + "max 10240.00000 10.000000 3899.990000 3899.990000\n" + ] + } + ], + "source": [ + "# Display the data types of each column\n", + "print(\"Data types:\\n\", df.dtypes)\n", + "\n", + "# Describe the DataFrame\n", + "print(\"Statistical summary:\\n\", df.describe())\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDUnits SoldUnit PriceTotal Revenue
count240.00000240.000000240.000000240.000000
mean10120.500002.158333236.395583335.699375
std69.426221.322454429.446695485.804469
min10001.000001.0000006.5000006.500000
25%10060.750001.00000029.50000062.965000
50%10120.500002.00000089.990000179.970000
75%10180.250003.000000249.990000399.225000
max10240.0000010.0000003899.9900003899.990000
\n", + "
" + ], + "text/plain": [ + " Transaction ID Units Sold Unit Price Total Revenue\n", + "count 240.00000 240.000000 240.000000 240.000000\n", + "mean 10120.50000 2.158333 236.395583 335.699375\n", + "std 69.42622 1.322454 429.446695 485.804469\n", + "min 10001.00000 1.000000 6.500000 6.500000\n", + "25% 10060.75000 1.000000 29.500000 62.965000\n", + "50% 10120.50000 2.000000 89.990000 179.970000\n", + "75% 10180.25000 3.000000 249.990000 399.225000\n", + "max 10240.00000 10.000000 3899.990000 3899.990000" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/10.3-datamanipulation.ipynb b/10-Data Analysis With Python/10.3-datamanipulation.ipynb new file mode 100644 index 000000000..6ea4e35e7 --- /dev/null +++ b/10-Data Analysis With Python/10.3-datamanipulation.ipynb @@ -0,0 +1,2150 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Data Manipulation and Analysis with Pandas\n", + "Data manipulation and analysis are key tasks in any data science or data analysis project. Pandas provides a wide range of functions for data manipulation and analysis, making it easier to clean, transform, and extract insights from data. In this lesson, we will cover various data manipulation and analysis techniques using Pandas." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateCategoryValueProductSalesRegion
02023-01-01A28.0Product1754.0East
12023-01-02B39.0Product3110.0North
22023-01-03C32.0Product2398.0East
32023-01-04B8.0Product1522.0East
42023-01-05B26.0Product3869.0North
\n", + "
" + ], + "text/plain": [ + " Date Category Value Product Sales Region\n", + "0 2023-01-01 A 28.0 Product1 754.0 East\n", + "1 2023-01-02 B 39.0 Product3 110.0 North\n", + "2 2023-01-03 C 32.0 Product2 398.0 East\n", + "3 2023-01-04 B 8.0 Product1 522.0 East\n", + "4 2023-01-05 B 26.0 Product3 869.0 North" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=pd.read_csv('data.csv')\n", + "## fecth the first 5 rows\n", + "df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateCategoryValueProductSalesRegion
452023-02-15B99.0Product2599.0West
462023-02-16B6.0Product1938.0South
472023-02-17B69.0Product3143.0West
482023-02-18C65.0Product3182.0North
492023-02-19C11.0Product3708.0North
\n", + "
" + ], + "text/plain": [ + " Date Category Value Product Sales Region\n", + "45 2023-02-15 B 99.0 Product2 599.0 West\n", + "46 2023-02-16 B 6.0 Product1 938.0 South\n", + "47 2023-02-17 B 69.0 Product3 143.0 West\n", + "48 2023-02-18 C 65.0 Product3 182.0 North\n", + "49 2023-02-19 C 11.0 Product3 708.0 North" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.tail(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ValueSales
count47.00000046.000000
mean51.744681557.130435
std29.050532274.598584
min2.000000108.000000
25%27.500000339.000000
50%54.000000591.500000
75%70.000000767.500000
max99.000000992.000000
\n", + "
" + ], + "text/plain": [ + " Value Sales\n", + "count 47.000000 46.000000\n", + "mean 51.744681 557.130435\n", + "std 29.050532 274.598584\n", + "min 2.000000 108.000000\n", + "25% 27.500000 339.000000\n", + "50% 54.000000 591.500000\n", + "75% 70.000000 767.500000\n", + "max 99.000000 992.000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Date object\n", + "Category object\n", + "Value float64\n", + "Product object\n", + "Sales float64\n", + "Region object\n", + "dtype: object" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Date False\n", + "Category False\n", + "Value True\n", + "Product False\n", + "Sales True\n", + "Region False\n", + "dtype: bool" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Handling Missing Values\n", + "df.isnull().any()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Date 0\n", + "Category 0\n", + "Value 3\n", + "Product 0\n", + "Sales 4\n", + "Region 0\n", + "dtype: int64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "df_filled=df.fillna(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateCategoryValueProductSalesRegionSales_fillNA
02023-01-01A28.0Product1754.0East754.000000
12023-01-02B39.0Product3110.0North110.000000
22023-01-03C32.0Product2398.0East398.000000
32023-01-04B8.0Product1522.0East522.000000
42023-01-05B26.0Product3869.0North869.000000
52023-01-06B54.0Product3192.0West192.000000
62023-01-07A16.0Product1936.0East936.000000
72023-01-08C89.0Product1488.0West488.000000
82023-01-09C37.0Product3772.0West772.000000
92023-01-10A22.0Product2834.0West834.000000
102023-01-11B7.0Product1842.0North842.000000
112023-01-12B60.0Product2NaNWest557.130435
122023-01-13A70.0Product3628.0South628.000000
132023-01-14A69.0Product1423.0East423.000000
142023-01-15A47.0Product2893.0West893.000000
152023-01-16CNaNProduct1895.0North895.000000
162023-01-17C93.0Product2511.0South511.000000
172023-01-18CNaNProduct1108.0West108.000000
182023-01-19A31.0Product2578.0West578.000000
192023-01-20A59.0Product1736.0East736.000000
202023-01-21C82.0Product3606.0South606.000000
212023-01-22C37.0Product2992.0South992.000000
222023-01-23B62.0Product3942.0North942.000000
232023-01-24C92.0Product2342.0West342.000000
242023-01-25A24.0Product2458.0East458.000000
252023-01-26C95.0Product1584.0West584.000000
262023-01-27C71.0Product2619.0North619.000000
272023-01-28C56.0Product2224.0North224.000000
282023-01-29BNaNProduct3617.0North617.000000
292023-01-30C51.0Product2737.0South737.000000
302023-01-31B50.0Product3735.0West735.000000
312023-02-01A17.0Product2189.0West189.000000
322023-02-02B63.0Product3338.0South338.000000
332023-02-03C27.0Product3NaNEast557.130435
342023-02-04C70.0Product3669.0West669.000000
352023-02-05B60.0Product2NaNWest557.130435
362023-02-06C36.0Product3177.0East177.000000
372023-02-07C2.0Product1NaNNorth557.130435
382023-02-08C94.0Product1408.0South408.000000
392023-02-09A62.0Product1155.0West155.000000
402023-02-10B15.0Product1578.0East578.000000
412023-02-11C97.0Product1256.0East256.000000
422023-02-12A93.0Product3164.0West164.000000
432023-02-13A43.0Product3949.0East949.000000
442023-02-14A96.0Product3830.0East830.000000
452023-02-15B99.0Product2599.0West599.000000
462023-02-16B6.0Product1938.0South938.000000
472023-02-17B69.0Product3143.0West143.000000
482023-02-18C65.0Product3182.0North182.000000
492023-02-19C11.0Product3708.0North708.000000
\n", + "
" + ], + "text/plain": [ + " Date Category Value Product Sales Region Sales_fillNA\n", + "0 2023-01-01 A 28.0 Product1 754.0 East 754.000000\n", + "1 2023-01-02 B 39.0 Product3 110.0 North 110.000000\n", + "2 2023-01-03 C 32.0 Product2 398.0 East 398.000000\n", + "3 2023-01-04 B 8.0 Product1 522.0 East 522.000000\n", + "4 2023-01-05 B 26.0 Product3 869.0 North 869.000000\n", + "5 2023-01-06 B 54.0 Product3 192.0 West 192.000000\n", + "6 2023-01-07 A 16.0 Product1 936.0 East 936.000000\n", + "7 2023-01-08 C 89.0 Product1 488.0 West 488.000000\n", + "8 2023-01-09 C 37.0 Product3 772.0 West 772.000000\n", + "9 2023-01-10 A 22.0 Product2 834.0 West 834.000000\n", + "10 2023-01-11 B 7.0 Product1 842.0 North 842.000000\n", + "11 2023-01-12 B 60.0 Product2 NaN West 557.130435\n", + "12 2023-01-13 A 70.0 Product3 628.0 South 628.000000\n", + "13 2023-01-14 A 69.0 Product1 423.0 East 423.000000\n", + "14 2023-01-15 A 47.0 Product2 893.0 West 893.000000\n", + "15 2023-01-16 C NaN Product1 895.0 North 895.000000\n", + "16 2023-01-17 C 93.0 Product2 511.0 South 511.000000\n", + "17 2023-01-18 C NaN Product1 108.0 West 108.000000\n", + "18 2023-01-19 A 31.0 Product2 578.0 West 578.000000\n", + "19 2023-01-20 A 59.0 Product1 736.0 East 736.000000\n", + "20 2023-01-21 C 82.0 Product3 606.0 South 606.000000\n", + "21 2023-01-22 C 37.0 Product2 992.0 South 992.000000\n", + "22 2023-01-23 B 62.0 Product3 942.0 North 942.000000\n", + "23 2023-01-24 C 92.0 Product2 342.0 West 342.000000\n", + "24 2023-01-25 A 24.0 Product2 458.0 East 458.000000\n", + "25 2023-01-26 C 95.0 Product1 584.0 West 584.000000\n", + "26 2023-01-27 C 71.0 Product2 619.0 North 619.000000\n", + "27 2023-01-28 C 56.0 Product2 224.0 North 224.000000\n", + "28 2023-01-29 B NaN Product3 617.0 North 617.000000\n", + "29 2023-01-30 C 51.0 Product2 737.0 South 737.000000\n", + "30 2023-01-31 B 50.0 Product3 735.0 West 735.000000\n", + "31 2023-02-01 A 17.0 Product2 189.0 West 189.000000\n", + "32 2023-02-02 B 63.0 Product3 338.0 South 338.000000\n", + "33 2023-02-03 C 27.0 Product3 NaN East 557.130435\n", + "34 2023-02-04 C 70.0 Product3 669.0 West 669.000000\n", + "35 2023-02-05 B 60.0 Product2 NaN West 557.130435\n", + "36 2023-02-06 C 36.0 Product3 177.0 East 177.000000\n", + "37 2023-02-07 C 2.0 Product1 NaN North 557.130435\n", + "38 2023-02-08 C 94.0 Product1 408.0 South 408.000000\n", + "39 2023-02-09 A 62.0 Product1 155.0 West 155.000000\n", + "40 2023-02-10 B 15.0 Product1 578.0 East 578.000000\n", + "41 2023-02-11 C 97.0 Product1 256.0 East 256.000000\n", + "42 2023-02-12 A 93.0 Product3 164.0 West 164.000000\n", + "43 2023-02-13 A 43.0 Product3 949.0 East 949.000000\n", + "44 2023-02-14 A 96.0 Product3 830.0 East 830.000000\n", + "45 2023-02-15 B 99.0 Product2 599.0 West 599.000000\n", + "46 2023-02-16 B 6.0 Product1 938.0 South 938.000000\n", + "47 2023-02-17 B 69.0 Product3 143.0 West 143.000000\n", + "48 2023-02-18 C 65.0 Product3 182.0 North 182.000000\n", + "49 2023-02-19 C 11.0 Product3 708.0 North 708.000000" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### filling missing values with the mean of the column\n", + "df['Sales_fillNA']=df['Sales'].fillna(df['Sales'].mean())\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Date object\n", + "Category object\n", + "Value float64\n", + "Product object\n", + "Sales float64\n", + "Region object\n", + "Sales_fillNA float64\n", + "dtype: object" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Sales DateCategoryValueProductSalesRegionSales_fillNA
02023-01-01A28.0Product1754.0East754.0
12023-01-02B39.0Product3110.0North110.0
22023-01-03C32.0Product2398.0East398.0
32023-01-04B8.0Product1522.0East522.0
42023-01-05B26.0Product3869.0North869.0
\n", + "
" + ], + "text/plain": [ + " Sales Date Category Value Product Sales Region Sales_fillNA\n", + "0 2023-01-01 A 28.0 Product1 754.0 East 754.0\n", + "1 2023-01-02 B 39.0 Product3 110.0 North 110.0\n", + "2 2023-01-03 C 32.0 Product2 398.0 East 398.0\n", + "3 2023-01-04 B 8.0 Product1 522.0 East 522.0\n", + "4 2023-01-05 B 26.0 Product3 869.0 North 869.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Renaming Columns\n", + "df=df.rename(columns={'Sale Date':'Sales Date'})\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Sales DateCategoryValueProductSalesRegionSales_fillNAValue_new
02023-01-01A28.0Product1754.0East754.028
12023-01-02B39.0Product3110.0North110.039
22023-01-03C32.0Product2398.0East398.032
32023-01-04B8.0Product1522.0East522.08
42023-01-05B26.0Product3869.0North869.026
\n", + "
" + ], + "text/plain": [ + " Sales Date Category Value Product Sales Region Sales_fillNA Value_new\n", + "0 2023-01-01 A 28.0 Product1 754.0 East 754.0 28\n", + "1 2023-01-02 B 39.0 Product3 110.0 North 110.0 39\n", + "2 2023-01-03 C 32.0 Product2 398.0 East 398.0 32\n", + "3 2023-01-04 B 8.0 Product1 522.0 East 522.0 8\n", + "4 2023-01-05 B 26.0 Product3 869.0 North 869.0 26" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## change datatypes\n", + "df['Value_new']=df['Value'].fillna(df['Value'].mean()).astype(int)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Sales DateCategoryValueProductSalesRegionSales_fillNAValue_newNew Value
02023-01-01A28.0Product1754.0East754.02856.0
12023-01-02B39.0Product3110.0North110.03978.0
22023-01-03C32.0Product2398.0East398.03264.0
32023-01-04B8.0Product1522.0East522.0816.0
42023-01-05B26.0Product3869.0North869.02652.0
\n", + "
" + ], + "text/plain": [ + " Sales Date Category Value Product Sales Region Sales_fillNA \\\n", + "0 2023-01-01 A 28.0 Product1 754.0 East 754.0 \n", + "1 2023-01-02 B 39.0 Product3 110.0 North 110.0 \n", + "2 2023-01-03 C 32.0 Product2 398.0 East 398.0 \n", + "3 2023-01-04 B 8.0 Product1 522.0 East 522.0 \n", + "4 2023-01-05 B 26.0 Product3 869.0 North 869.0 \n", + "\n", + " Value_new New Value \n", + "0 28 56.0 \n", + "1 39 78.0 \n", + "2 32 64.0 \n", + "3 8 16.0 \n", + "4 26 52.0 " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['New Value']=df['Value'].apply(lambda x:x*2)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Sales DateCategoryValueProductSalesRegionSales_fillNAValue_newNew Value
02023-01-01A28.0Product1754.0East754.02856.0
12023-01-02B39.0Product3110.0North110.03978.0
22023-01-03C32.0Product2398.0East398.03264.0
32023-01-04B8.0Product1522.0East522.0816.0
42023-01-05B26.0Product3869.0North869.02652.0
\n", + "
" + ], + "text/plain": [ + " Sales Date Category Value Product Sales Region Sales_fillNA \\\n", + "0 2023-01-01 A 28.0 Product1 754.0 East 754.0 \n", + "1 2023-01-02 B 39.0 Product3 110.0 North 110.0 \n", + "2 2023-01-03 C 32.0 Product2 398.0 East 398.0 \n", + "3 2023-01-04 B 8.0 Product1 522.0 East 522.0 \n", + "4 2023-01-05 B 26.0 Product3 869.0 North 869.0 \n", + "\n", + " Value_new New Value \n", + "0 28 56.0 \n", + "1 39 78.0 \n", + "2 32 64.0 \n", + "3 8 16.0 \n", + "4 26 52.0 " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Data Aggregating And Grouping\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Product\n", + "Product1 46.214286\n", + "Product2 52.800000\n", + "Product3 55.166667\n", + "Name: Value, dtype: float64\n" + ] + } + ], + "source": [ + "grouped_mean=df.groupby('Product')['Value'].mean()\n", + "print(grouped_mean)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Product Region\n", + "Product1 East 292.0\n", + " North 9.0\n", + " South 100.0\n", + " West 246.0\n", + "Product2 East 56.0\n", + " North 127.0\n", + " South 181.0\n", + " West 428.0\n", + "Product3 East 202.0\n", + " North 203.0\n", + " South 215.0\n", + " West 373.0\n", + "Name: Value, dtype: float64\n" + ] + } + ], + "source": [ + "grouped_sum=df.groupby(['Product','Region'])['Value'].sum()\n", + "print(grouped_sum)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Product Region\n", + "Product1 East 41.714286\n", + " North 4.500000\n", + " South 50.000000\n", + " West 82.000000\n", + "Product2 East 28.000000\n", + " North 63.500000\n", + " South 60.333333\n", + " West 53.500000\n", + "Product3 East 50.500000\n", + " North 40.600000\n", + " South 71.666667\n", + " West 62.166667\n", + "Name: Value, dtype: float64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby(['Product','Region'])['Value'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
meansumcount
Region
East42.307692550.013
North37.666667339.09
South62.000000496.08
West61.5882351047.017
\n", + "
" + ], + "text/plain": [ + " mean sum count\n", + "Region \n", + "East 42.307692 550.0 13\n", + "North 37.666667 339.0 9\n", + "South 62.000000 496.0 8\n", + "West 61.588235 1047.0 17" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## aggregate multiple functions\n", + "groudped_agg=df.groupby('Region')['Value'].agg(['mean','sum','count'])\n", + "groudped_agg" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "### Merging and joining Dataframes\n", + "# Create sample DataFrames\n", + "df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value1': [1, 2, 3]})\n", + "df2 = pd.DataFrame({'Key': ['A', 'B', 'D'], 'Value2': [4, 5, 6]})" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue1
0A1
1B2
2C3
\n", + "
" + ], + "text/plain": [ + " Key Value1\n", + "0 A 1\n", + "1 B 2\n", + "2 C 3" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue2
0A4
1B5
2D6
\n", + "
" + ], + "text/plain": [ + " Key Value2\n", + "0 A 4\n", + "1 B 5\n", + "2 D 6" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue1Value2
0A14
1B25
\n", + "
" + ], + "text/plain": [ + " Key Value1 Value2\n", + "0 A 1 4\n", + "1 B 2 5" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Merge Datafranme on the 'Key Columns'\n", + "pd.merge(df1,df2,on=\"Key\",how=\"inner\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue1Value2
0A1.04.0
1B2.05.0
2C3.0NaN
3DNaN6.0
\n", + "
" + ], + "text/plain": [ + " Key Value1 Value2\n", + "0 A 1.0 4.0\n", + "1 B 2.0 5.0\n", + "2 C 3.0 NaN\n", + "3 D NaN 6.0" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df1,df2,on=\"Key\",how=\"outer\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue1Value2
0A14.0
1B25.0
2C3NaN
\n", + "
" + ], + "text/plain": [ + " Key Value1 Value2\n", + "0 A 1 4.0\n", + "1 B 2 5.0\n", + "2 C 3 NaN" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df1,df2,on=\"Key\",how=\"left\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
KeyValue1Value2
0A1.04
1B2.05
2DNaN6
\n", + "
" + ], + "text/plain": [ + " Key Value1 Value2\n", + "0 A 1.0 4\n", + "1 B 2.0 5\n", + "2 D NaN 6" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df1,df2,on=\"Key\",how=\"right\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/10.4-readdata.ipynb b/10-Data Analysis With Python/10.4-readdata.ipynb new file mode 100644 index 000000000..5decde33e --- /dev/null +++ b/10-Data Analysis With Python/10.4-readdata.ipynb @@ -0,0 +1,953 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Reading Data From Different Sources\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from io import StringIO\n", + "Data = '{\"employee_name\": \"James\", \"email\": \"james@gmail.com\", \"job_profile\": [{\"title1\":\"Team Lead\", \"title2\":\"Sr. Developer\"}]}'\n", + "df=pd.read_json(StringIO(Data))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
employee_nameemailjob_profile
0Jamesjames@gmail.com{'title1': 'Team Lead', 'title2': 'Sr. Develop...
\n", + "
" + ], + "text/plain": [ + " employee_name email \\\n", + "0 James james@gmail.com \n", + "\n", + " job_profile \n", + "0 {'title1': 'Team Lead', 'title2': 'Sr. Develop... " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"employee_name\":{\"0\":\"James\"},\"email\":{\"0\":\"james@gmail.com\"},\"job_profile\":{\"0\":{\"title1\":\"Team Lead\",\"title2\":\"Sr. Developer\"}}}'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.to_json()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"0\":{\"employee_name\":\"James\",\"email\":\"james@gmail.com\",\"job_profile\":{\"title1\":\"Team Lead\",\"title2\":\"Sr. Developer\"}}}'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.to_json(orient='index')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'[{\"employee_name\":\"James\",\"email\":\"james@gmail.com\",\"job_profile\":{\"title1\":\"Team Lead\",\"title2\":\"Sr. Developer\"}}]'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.to_json(orient='records')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.read_csv(\"https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data\",header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012345678910111213
0114.231.712.4315.61272.803.060.282.295.641.043.921065
1113.201.782.1411.21002.652.760.261.284.381.053.401050
2113.162.362.6718.61012.803.240.302.815.681.033.171185
3114.371.952.5016.81133.853.490.242.187.800.863.451480
4113.242.592.8721.01182.802.690.391.824.321.042.93735
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6 7 8 9 10 11 12 \\\n", + "0 1 14.23 1.71 2.43 15.6 127 2.80 3.06 0.28 2.29 5.64 1.04 3.92 \n", + "1 1 13.20 1.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40 \n", + "2 1 13.16 2.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17 \n", + "3 1 14.37 1.95 2.50 16.8 113 3.85 3.49 0.24 2.18 7.80 0.86 3.45 \n", + "4 1 13.24 2.59 2.87 21.0 118 2.80 2.69 0.39 1.82 4.32 1.04 2.93 \n", + "\n", + " 13 \n", + "0 1065 \n", + "1 1050 \n", + "2 1185 \n", + "3 1480 \n", + "4 735 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_csv(\"wine.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting lxml\n", + " Downloading lxml-5.2.2-cp312-cp312-win_amd64.whl.metadata (3.5 kB)\n", + "Downloading lxml-5.2.2-cp312-cp312-win_amd64.whl (3.8 MB)\n", + " ---------------------------------------- 0.0/3.8 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/3.8 MB ? eta -:--:--\n", + " ---------------------------------------- 0.0/3.8 MB 660.6 kB/s eta 0:00:06\n", + " ---------------------------------------- 0.0/3.8 MB 660.6 kB/s eta 0:00:06\n", + " ---------------------------------------- 0.0/3.8 MB 660.6 kB/s eta 0:00:06\n", + " - -------------------------------------- 0.2/3.8 MB 756.6 kB/s eta 0:00:05\n", + " ---- ----------------------------------- 0.4/3.8 MB 1.8 MB/s eta 0:00:02\n", + " -------- ------------------------------- 0.8/3.8 MB 2.8 MB/s eta 0:00:02\n", + " -------------- ------------------------- 1.3/3.8 MB 3.9 MB/s eta 0:00:01\n", + " --------------- ------------------------ 1.4/3.8 MB 4.1 MB/s eta 0:00:01\n", + " --------------- ------------------------ 1.4/3.8 MB 4.1 MB/s eta 0:00:01\n", + " ---------------- ----------------------- 1.5/3.8 MB 3.3 MB/s eta 0:00:01\n", + " ------------------ --------------------- 1.8/3.8 MB 3.3 MB/s eta 0:00:01\n", + " ---------------------- ----------------- 2.1/3.8 MB 3.6 MB/s eta 0:00:01\n", + " -------------------------- ------------- 2.5/3.8 MB 4.0 MB/s eta 0:00:01\n", + " ---------------------------- ----------- 2.7/3.8 MB 4.2 MB/s eta 0:00:01\n", + " ---------------------------- ----------- 2.7/3.8 MB 4.2 MB/s eta 0:00:01\n", + " ---------------------------- ----------- 2.7/3.8 MB 4.2 MB/s eta 0:00:01\n", + " ------------------------------ --------- 2.9/3.8 MB 3.5 MB/s eta 0:00:01\n", + " --------------------------------- ------ 3.2/3.8 MB 3.7 MB/s eta 0:00:01\n", + " ------------------------------------ --- 3.5/3.8 MB 3.9 MB/s eta 0:00:01\n", + " --------------------------------------- 3.8/3.8 MB 4.1 MB/s eta 0:00:01\n", + " ---------------------------------------- 3.8/3.8 MB 4.0 MB/s eta 0:00:00\n", + "Installing collected packages: lxml\n", + "Successfully installed lxml-5.2.2\n" + ] + } + ], + "source": [ + "!pip install lxml" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: html5lib in e:\\udemy final\\python\\venv\\lib\\site-packages (1.1)\n", + "Requirement already satisfied: six>=1.9 in e:\\udemy final\\python\\venv\\lib\\site-packages (from html5lib) (1.16.0)\n", + "Requirement already satisfied: webencodings in e:\\udemy final\\python\\venv\\lib\\site-packages (from html5lib) (0.5.1)\n", + "Collecting beautifulsoup4\n", + " Using cached beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting soupsieve>1.2 (from beautifulsoup4)\n", + " Using cached soupsieve-2.5-py3-none-any.whl.metadata (4.7 kB)\n", + "Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)\n", + "Using cached soupsieve-2.5-py3-none-any.whl (36 kB)\n", + "Installing collected packages: soupsieve, beautifulsoup4\n", + "Successfully installed beautifulsoup4-4.12.3 soupsieve-2.5\n" + ] + } + ], + "source": [ + "!pip install html5lib\n", + "!pip install beautifulsoup4" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "url=\"https://www.fdic.gov/resources/resolutions/bank-failures/failed-bank-list/\"\n", + "\n", + "df=pd.read_html(url)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Bank NameBankCityCityStateStCertCertAcquiring InstitutionAIClosing DateClosingFundFund
0Republic First Bank dba Republic BankPhiladelphiaPA27332Fulton Bank, National AssociationApril 26, 202410546
1Citizens BankSac CityIA8758Iowa Trust & Savings BankNovember 3, 202310545
2Heartland Tri-State BankElkhartKS25851Dream First Bank, N.A.July 28, 202310544
3First Republic BankSan FranciscoCA59017JPMorgan Chase Bank, N.A.May 1, 202310543
4Signature BankNew YorkNY57053Flagstar Bank, N.A.March 12, 202310540
........................
564Superior Bank, FSBHinsdaleIL32646Superior Federal, FSBJuly 27, 20016004
565Malta National BankMaltaOH6629North Valley BankMay 3, 20014648
566First Alliance Bank & Trust Co.ManchesterNH34264Southern New Hampshire Bank & TrustFebruary 2, 20014647
567National State Bank of MetropolisMetropolisIL3815Banterra Bank of MarionDecember 14, 20004646
568Bank of HonoluluHonoluluHI21029Bank of the OrientOctober 13, 20004645
\n", + "

569 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " Bank NameBank CityCity StateSt CertCert \\\n", + "0 Republic First Bank dba Republic Bank Philadelphia PA 27332 \n", + "1 Citizens Bank Sac City IA 8758 \n", + "2 Heartland Tri-State Bank Elkhart KS 25851 \n", + "3 First Republic Bank San Francisco CA 59017 \n", + "4 Signature Bank New York NY 57053 \n", + ".. ... ... ... ... \n", + "564 Superior Bank, FSB Hinsdale IL 32646 \n", + "565 Malta National Bank Malta OH 6629 \n", + "566 First Alliance Bank & Trust Co. Manchester NH 34264 \n", + "567 National State Bank of Metropolis Metropolis IL 3815 \n", + "568 Bank of Honolulu Honolulu HI 21029 \n", + "\n", + " Acquiring InstitutionAI Closing DateClosing FundFund \n", + "0 Fulton Bank, National Association April 26, 2024 10546 \n", + "1 Iowa Trust & Savings Bank November 3, 2023 10545 \n", + "2 Dream First Bank, N.A. July 28, 2023 10544 \n", + "3 JPMorgan Chase Bank, N.A. May 1, 2023 10543 \n", + "4 Flagstar Bank, N.A. March 12, 2023 10540 \n", + ".. ... ... ... \n", + "564 Superior Federal, FSB July 27, 2001 6004 \n", + "565 North Valley Bank May 3, 2001 4648 \n", + "566 Southern New Hampshire Bank & Trust February 2, 2001 4647 \n", + "567 Banterra Bank of Marion December 14, 2000 4646 \n", + "568 Bank of the Orient October 13, 2000 4645 \n", + "\n", + "[569 rows x 7 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Mobile country codeCountryISO 3166Mobile network codesNational MNC authorityRemarks
0289A AbkhaziaGE-ABList of mobile network codes in AbkhaziaNaNMCC is not listed by ITU
1412AfghanistanAFList of mobile network codes in AfghanistanNaNNaN
2276AlbaniaALList of mobile network codes in AlbaniaNaNNaN
3603AlgeriaDZList of mobile network codes in AlgeriaNaNNaN
4544American Samoa (United States of America)ASList of mobile network codes in American SamoaNaNNaN
.....................
247452VietnamVNList of mobile network codes in the VietnamNaNNaN
248543W Wallis and FutunaWFList of mobile network codes in Wallis and FutunaNaNNaN
249421Y YemenYEList of mobile network codes in the YemenNaNNaN
250645Z ZambiaZMList of mobile network codes in ZambiaNaNNaN
251648ZimbabweZWList of mobile network codes in ZimbabweNaNNaN
\n", + "

252 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " Mobile country code Country ISO 3166 \\\n", + "0 289 A Abkhazia GE-AB \n", + "1 412 Afghanistan AF \n", + "2 276 Albania AL \n", + "3 603 Algeria DZ \n", + "4 544 American Samoa (United States of America) AS \n", + ".. ... ... ... \n", + "247 452 Vietnam VN \n", + "248 543 W Wallis and Futuna WF \n", + "249 421 Y Yemen YE \n", + "250 645 Z Zambia ZM \n", + "251 648 Zimbabwe ZW \n", + "\n", + " Mobile network codes National MNC authority \\\n", + "0 List of mobile network codes in Abkhazia NaN \n", + "1 List of mobile network codes in Afghanistan NaN \n", + "2 List of mobile network codes in Albania NaN \n", + "3 List of mobile network codes in Algeria NaN \n", + "4 List of mobile network codes in American Samoa NaN \n", + ".. ... ... \n", + "247 List of mobile network codes in the Vietnam NaN \n", + "248 List of mobile network codes in Wallis and Futuna NaN \n", + "249 List of mobile network codes in the Yemen NaN \n", + "250 List of mobile network codes in Zambia NaN \n", + "251 List of mobile network codes in Zimbabwe NaN \n", + "\n", + " Remarks \n", + "0 MCC is not listed by ITU \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + ".. ... \n", + "247 NaN \n", + "248 NaN \n", + "249 NaN \n", + "250 NaN \n", + "251 NaN \n", + "\n", + "[252 rows x 6 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "url=\"https://en.wikipedia.org/wiki/Mobile_country_code\"\n", + "pd.read_html(url,match=\"Country\",header=0)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting openpyxl\n", + " Downloading openpyxl-3.1.4-py2.py3-none-any.whl.metadata (2.5 kB)\n", + "Collecting et-xmlfile (from openpyxl)\n", + " Downloading et_xmlfile-1.1.0-py3-none-any.whl.metadata (1.8 kB)\n", + "Downloading openpyxl-3.1.4-py2.py3-none-any.whl (251 kB)\n", + " ---------------------------------------- 0.0/251.4 kB ? eta -:--:--\n", + " - -------------------------------------- 10.2/251.4 kB ? eta -:--:--\n", + " ---- ---------------------------------- 30.7/251.4 kB 660.6 kB/s eta 0:00:01\n", + " ---- ---------------------------------- 30.7/251.4 kB 660.6 kB/s eta 0:00:01\n", + " ---- ---------------------------------- 30.7/251.4 kB 660.6 kB/s eta 0:00:01\n", + " --------------------------- ---------- 184.3/251.4 kB 857.5 kB/s eta 0:00:01\n", + " ---------------------------------------- 251.4/251.4 kB 1.1 MB/s eta 0:00:00\n", + "Downloading et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)\n", + "Installing collected packages: et-xmlfile, openpyxl\n", + "Successfully installed et-xmlfile-1.1.0 openpyxl-3.1.4\n" + ] + } + ], + "source": [ + "!pip install openpyxl" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "df_excel=pd.read_excel('data.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "df_excel.to_pickle('df_excel')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameAge
0Krish32
1Jack34
2John31
\n", + "
" + ], + "text/plain": [ + " Name Age\n", + "0 Krish 32\n", + "1 Jack 34\n", + "2 John 31" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_pickle('df_excel')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/10.5-matplotlib.ipynb b/10-Data Analysis With Python/10.5-matplotlib.ipynb new file mode 100644 index 000000000..cd3ed4515 --- /dev/null +++ b/10-Data Analysis With Python/10.5-matplotlib.ipynb @@ -0,0 +1,597 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Data Visualization With Matplotlib\n", + "\n", + "Matplotlib is a powerful plotting library for Python that enables the creation of static, animated, and interactive visualizations. It is widely used for data visualization in data science and analytics. In this lesson, we will cover the basics of Matplotlib, including creating various types of plots and customizing them." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: matplotlib in e:\\udemy final\\python\\venv\\lib\\site-packages (3.9.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (4.53.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (1.4.5)\n", + "Requirement already satisfied: numpy>=1.23 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (24.0)\n", + "Requirement already satisfied: pillow>=8 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (10.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: six>=1.5 in e:\\udemy final\\python\\venv\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n" + ] + } + ], + "source": [ + "!pip install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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l5cXP/zwQ7FTmePi4i5a1sXFhV69etGrVy/efPNNXnvtNSZMmMDPP/98yS/zyMhIABITEytiKH9Jw4YNAQgODq7UIhIREQH8dv2bP9uzZw+BgYFFW2MqevebiDPQMTIiVUhBQQE//vgjHh4eNG/eHPhty4XFYsFqtRbNd/jwYRYvXlxs2XPnzl30fm3btgUotjvqj4KCgrjuuuuYNWsWR48eLfba71tGzNKnTx98fX157bXXKCgouOj1S52qXR7q1KlD27ZtmTNnTrEr9iYmJvLjjz/Sv3//omm/Fxpd2VekZNoiI+LEli1bxp49ewBITU1l3rx57N+/n2eeeaboGJABAwbw5ptv0rdvX0aOHElqairTp0+nUaNG7Nixo+i9Xn75ZdauXcuAAQOIiIggNTWVDz74gLCwMLp161ZihnfffZdu3brRvn177r//fho0aMDhw4dZunQp27Ztu+IYVq1aRW5u7kXTBw8e/JeOvfH19WXGjBncfffdtG/fnjvuuIOgoCCOHj3K0qVLufbaa3n//fev+v0v54033qBfv3506dKFMWPGFJ1+7efnx8SJE4vmi46OBmDChAnccccduLu7M3DgQB0/I/IHKjIiTuzFF18s+rOXlxfNmjVjxowZjB07tmj6DTfcwMyZM5k6dSqPPvooDRo04PXXX+fw4cPFiswtt9zC4cOHmTVrFmfOnCEwMJAePXowadIk/Pz8SszQpk0bNm7cyAsvvMCMGTPIzc0lIiKC2267rVRjWL58OcuXL79oev369f/yQcQjR44kNDSUqVOn8sYbb5CXl0fdunXp3r07o0aN+kvvfTm9e/dm+fLlvPTSS7z44ou4u7vTo0cPXn/9dRo0aFA0X8eOHZk8eTIffvghy5cvx2azkZSUpCIj8gcWw+ztuyIiIiJXScfIiIiIiMNSkRERERGHpSIjIiIiDktFRkRERByWioyIiIg4LBUZERERcVhOfx0Zm83GiRMn8PHx0eW+RUREHIRhGGRmZhIaGlrijWmhChSZEydOEB4ebnYMERERuQrHjh0jLCysxNedvsj4+PgAv/0gfr8ku4iIiNi3jIwMwsPDi77HS+L0Reb33Um+vr4qMiIiIg7mSoeF6GBfERERcVgqMiIiIuKwVGRERETEYanIiIiIiMNSkRERERGHpSIjIiIiDktFRkRERByWioyIiIg4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RkRERByWioyIiIg4LBUZERERcVgqMiVYu3YtAwcOJDQ0FIvFwuLFi6+4zOrVq2nfvj2enp40atSI2bNnV3jOq1XW8a1evRqLxXLRo6S7kJttypQpdOzYER8fH4KDgxk8eDB79+694nLz58+nWbNmeHl50apVK77//vtKSHt1rmaMs2fPvmgdenl5VVLispkxYwatW7cuutBWly5dWLZs2WWXcaT1V9bxOdK6u5SpU6disVh49NFHLzufI63DPyvNGB1pPU6cOPGirM2aNbvsMmasPxWZEmRnZ9OmTRumT59eqvmTkpIYMGAAPXv2ZNu2bTz66KPce++9/PDDDxWc9OqUdXy/27t3LydPnix6BAcHV1DCv2bNmjWMGzeOjRs3smLFCgoKCrjpppvIzs4ucZn169czYsQIxowZw9atWxk8eDCDBw8mMTGxEpOX3tWMEX67Aucf1+GRI0cqKXHZhIWFMXXqVOLj49myZQs33HADgwYNYteuXZec39HWX1nHB46z7v5s8+bNfPTRR7Ru3fqy8znaOvyj0o4RHGs9tmzZsljWX375pcR5TVt/hlwRYCxatOiy8zz11FNGy5Yti027/fbbjT59+lRgsvJRmvH9/PPPBmCcP3++UjKVt9TUVAMw1qxZU+I8t912mzFgwIBi0zp37myMHTu2ouOVi9KMMS4uzvDz86u8UOWsZs2axieffHLJ1xx9/RnG5cfnqOsuMzPTaNy4sbFixQqjR48exiOPPFLivI66DssyRkdajy+99JLRpk2bUs9v1vrTFplysmHDBnr37l1sWp8+fdiwYYNJiSpG27ZtqVOnDjfeeCPr1q0zO06ppaenAxAQEFDiPI6+DkszRoCsrCwiIiIIDw+/4hYAe2G1Wvniiy/Izs6mS5cul5zHkddfacYHjrnuxo0bx4ABAy5aN5fiqOuwLGMEx1qP+/fvJzQ0lMjISO68806OHj1a4rxmrT+HuNeSI0hJSbnoRpa1a9cmIyODCxcu4O3tbVKy8lGnTh0+/PBDOnToQF5eHp988gnXX389v/76K+3btzc73mXZbDYeffRRrr32WqKiokqcr6R1aK/HAf1RacfYtGlTZs2aRevWrUlPT2fatGl07dqVXbt2VejNVa/Wzp076dKlC7m5udSoUYNFixbRokWLS87riOuvLONztHUH8MUXX5CQkMDmzZtL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x=[1,2,3,4,5]\n", + "y=[1,4,9,16,25]\n", + "\n", + "##create a line plot\n", + "plt.plot(x,y)\n", + "plt.xlabel('X axis')\n", + "plt.ylabel('Y Axis')\n", + "plt.title(\"Basic Line Plot\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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W7bYXVWlET4AAAhG2dnS4MHSv/99se30aWnmTMk0bSvLFwgfAAAEm7w8afhwaetW1/brrpPefjtol00vL8IHAADBxDSl8eOlFStc2xs2lNaula64wp66fIjwAQBAMJk5U5o3z7Xt8suldeukhARbSvI1wgcAAMHitdekadNc26KjrVGQ1q3tqckPCB8AAASD1aulsWNd2wxDeust6bbb7KnJTwgfAADYbccO6a67pPx81/bZs6WhQ+2pyY8IHwAA2Omrr6QBA6xHay81aZI18dSBCB8AANjl+HGpTx9rMbFLjRolPf20PTUFAOEDAAC7XHaZ1Ly5a1ufPtL8+SG/lkdpCB8AANglNlZauVK6917rdbt20rJlUmSkvXX5WYTdBQAAUKVFRUkLF1qP0o4eLdWoYXdFfkf4AADAbmFh0uOP211FwHDbBQCAQCkosLuCoED4AAAgEN5+W+rRQ/rf/+yuxHaEDwAA/G3TJuvx2bQ06dZbpe+/t7siWxE+AADwp//3/6TkZOnCBev1/v1Sly7SDz/YWpadCB8AAPjLd99J/fpJmZmu7YMHS3Xr2lNTECB8AADgD6dOSX37SseOubbfeae1Z4uDFxErC+EDAABfy862Rjf+/W/X9ltukd58UwoPt6euIEH4AADAl/LypOHDpa1bXduvvVb64AOpenV76goihA8AAHzFNK2daFescG1v2FBat0664gp76goyhA8AAHxl5kxp3jzXtlq1rOCRkGBPTUGI8AEAgC+89po0bZprW1SUNQrSurU9NQUpwgcAAJW1erU0dqxrm2FIb70ldetmT01BjPABAEBl5OdLkyZZf15q9mzpZz+zp6YgR/gAAKAywsOl1FTpxhsvtk2aZE08hUcRdhcAAEDIi4uz9m0ZOlRq0EB6+mm7KwpqhA8AAHwhNlZatcqa61GFVy8tD8IHAAC+EhVldwUhgTkfAACUV0GBtGiR++RSeIXwAQBAeU2aJI0aJf3859L583ZXE7IIHwAAlMfLL0svvGB9v2yZ1KePdPq0rSWFKsIHAABlWbpUeuQR17ZPPpF277annhBH+AAAoDSbNkkjR1qbxl1q/nypRw97agpxhA8AAEryxRdScrJ04YJr+x//KI0ebUdFjkD4AADAk/R0qV8/KTPTtf3BB6XJk+2pySEIHwAAFPff/0p9+0pHj7q233mntWcL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x=[1,2,3,4,5]\n", + "y=[1,4,9,16,25]\n", + "\n", + "##create a customized line plot\n", + "\n", + "plt.plot(x,y,color='red',linestyle='--',marker='o',linewidth=3,markersize=9)\n", + "plt.grid(True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Plot 4')" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Multiple Plots\n", + "## Sample data\n", + "x = [1, 2, 3, 4, 5]\n", + "y1 = [1, 4, 9, 16, 25]\n", + "y2 = [1, 2, 3, 4, 5]\n", + "\n", + "plt.figure(figsize=(9,5))\n", + "\n", + "plt.subplot(2,2,1)\n", + "plt.plot(x,y1,color='green')\n", + "plt.title(\"Plot 1\")\n", + "\n", + "plt.subplot(2,2,2)\n", + "plt.plot(y1,x,color='red')\n", + "plt.title(\"Plot 2\")\n", + "\n", + "plt.subplot(2,2,3)\n", + "plt.plot(x,y2,color='blue')\n", + "plt.title(\"Plot 3\")\n", + "\n", + "plt.subplot(2,2,4)\n", + "plt.plot(x,y2,color='green')\n", + "plt.title(\"Plot 4\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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qlSp4vQYAADAQo7fo3L48GGFh4erdu3a6tOnj44dO+b0SAAAwBKOnlFp0aKFkpOTFRkZqfT0dI0bN06tW7fWvn37FBISkmt/j8cjj8fjXc/MzCzMcQEAQCFzNFSio6O9/9yoUSO1aNFCNWrU0NKlSzVo0KBc+8fHx2vcuHGFNt84V+G9151urBnr9AgAgCLI8Us/1ypTpozq1aunI0eOXPfxuLg4ZWRkeJe0tLRCnhAAABQmq0IlKytL33zzjapWrXrdx91ut0JDQ30WAABQdDkaKi+88II2b96s1NRUbd26VY888oj8/f31xBNPODkWAACwhKP3qHz//fd64okn9OOPP6pixYr6/e9/r23btqlixYpOjgUAACzhaKgsXrzYybcHAACWs+oeFQAAgGsRKgAAwFqECgAAsBahAgAArEWoAAAAaxEqAADAWoQKAACwFqECAACsRagAAABr5TtU0tLS9P3333vXU1JSNHLkSL399tsFOhgAAEC+Q+XJJ5/Uxo0bJUknT55Up06dlJKSopdeekmvvvpqgQ8IAACKr3yHyr59+9S8eXNJ0tKlS9WwYUNt3bpV77//vpKTkwt6PgAAUIzlO1QuX74st9stSVq3bp169OghSYqKilJ6enrBTgcAAIq1fIdKgwYNNHv2bG3ZskVr165Vly5dJEknTpxQ+fLlC3xAAABQfOU7VCZPnqy33npLbdu21RNPPKHGjRtLklasWOG9JAQAAFAQAvL7hLZt2+qHH35QZmamypYt693+9NNPq1SpUgU6HAAAKN5u6feoGGO0c+dOvfXWWzp//rwkKTAwkFABAAAFKt9nVI4ePaouXbro2LFj8ng86tSpk0JCQjR58mR5PB7Nnj37dswJAACKoXyfURkxYoSaNWums2fPKigoyLv9kUce0fr16wt0OAAAULzl+4zKli1btHXrVgUGBvpsr1mzpo4fP15ggwEAAOT7jEpOTo6ys7Nzbf/+++8VEhJSIEMBAABItxAqDz30kKZPn+5dd7lcysrK0tixY/Xwww8X5GwAAKCYy/eln6lTp6pz586qX7++fv75Zz355JM6fPiwKlSooEWLFt2OGQEAQDGV71CpXr26vvrqKy1evFh79uxRVlaWBg0apD59+vjcXAsAAPBb5TtUJCkgIEB9+/Yt6FkAAAB85DtUFixYcNPH+/Xrd8vDAAAA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gYHKzs722dakSRNlZ2fr9OnTqlOnjs9y9adxIiMjtX37dp/n/Xr9nnvu0Zdffumz7csvv1T9+vXz9We977779P/+3//LNUudOnUUGBgoSQoICFDHjh3197//XXv27FFqaqo2bNiQr/cB8NsRKgC8EhMTlZ2drebNm+ujjz7S4cOHtX//fs2YMUMPPvig6tSpo8uXL+vNN9/Ut99+q3fffVezZ8/2eY2aNWsqKytL69ev1w8//KCLFy+qXr166tOnj/r166dly5bpu+++U0pKiuLj4/WPf/xDkjRs2DB9+umnSkhI0OHDh/XWW29p1apVcrlc3td+8cUXlZycrKSkJB0+fFgJCQlatmyZXnjhhXz9Of/yl79o69atGjp0qHbv3q3Dhw/rk08+0dChQyVJK1eu1IwZM7R7924dPXpUCxYsUE5OjiIjI3/jEQaQb07fJAPALidOnDCxsbGmRo0aJjAw0FSrVs306NHDbNy40RhjTEJCgqlataoJCgoynTt3NgsWLPC5UdUYY5555hlTvnx5I8mMHTvWGGPMpUuXzJgxY0zNmjVNiRIlTNWqVc0jjzxi9uzZ433e22+/bapVq2aCgoJMz549zfjx402VKlV85ps1a5apXbu2KVGihKlXr55ZsGCBz+OSzPLly322/fpmWmOMSUlJMZ06dTKlS5c2wcHBplGjRmbChAnGmF9urG3Tpo0pW7asCQoKMo0aNTJLliz5bQcWwC1xGZPHO+gAoJA99dRTOnDggLZs2eL0KAAcws20AKzx+uuvq1OnTgoODtaqVav0zjvvaNasWU6PBcBBnFEBYI3HHntMmzZt0vnz51W7dm0NGzZMzzzzjNNjAXAQoQIAAKzFT/0AAABrESoAAMBahAoAALAWoQIAAKxFqAAAAGsRKgAAwFqECgAAsBahAgAArEWoAAAAa/1/In25lThkAQ8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "###Bar Plor\n", + "categories=['A','B','C','D','E']\n", + "values=[5,7,3,8,6]\n", + "\n", + "##create a bar plot\n", + "plt.bar(categories,values,color='purple')\n", + "plt.xlabel('Categories')\n", + "plt.ylabel('Values')\n", + "plt.title('Bar Plot')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Histograms\n", + "Histograms are used to represent the distribution of a dataset. They divide the data into bins and count the number of data points in each bin." + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([1., 2., 3., 4., 5.]),\n", + " array([1. , 1.8, 2.6, 3.4, 4.2, 5. ]),\n", + " )" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAYtUlEQVR4nO3dfWzV5f3w8U8F2+oEFBWhozCdsyAOHKikuk1U1DBiZP+MGX+OOLcsW10g3dzgjw2bbYElRmciN5I5JZkx+JDgEqcy1FHiAxsW2ID0JsKYZQKy7qGlPJwZ+r3/2G1/8lDoKdfp6amvV3KC53Cdns/FZXLenB56yrIsywIAIIEzij0AADBwCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhmcF8/YGdnZ+zevTuGDBkSZWVlff3wAEAvZFkW+/fvj6qqqjjjjO5fl+jzsNi9e3dUV1f39cMCAAns2rUrRo8e3e3v93lYDBkyJCL+O9jQoUP7+uEBgF5ob2+P6urqrufx7vR5WHz47Y+hQ4cKCwAoMad6G4M3bwIAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgmbzC4v7774+ysrKjLuPGjSvUbABAicn7s0ImTJgQr7zyyv9+gcF9/nEjAEA/lXcVDB48OEaOHFmIWQCAEpd3WLzzzjtRVVUVlZWVUVtbG4sWLYoxY8Z0uz6Xy0Uul+u63t7e3rtJAShpLS0t0draWuwxBrwLLrjgpM/LhVaWZVnW08UvvfRSdHR0RE1NTezZsycaGhrivffeiy1btnT7+ez3339/NDQ0HHd7W1ubj00H+JhoaWmJ8eNq4uChw8UeZcA7+6zKaP6/25LHRXt7ewwbNuyUz995hcWx/v3vf8fYsWPjwQcfjHvuueeEa070ikV1dbWwAPgY2bBhQ0yZMiWe/E7E+KpiTzNwNe+O+J//E9HU1BSTJ09O+rV7Ghan9c7Lc889Ny677LLYvn17t2sqKiqioqLidB4GgAFifFXE5IuLPQWFdFo/x6KjoyN27NgRo0aNSjUPAFDC8gqL73//+9HY2Bh//etf480334wvf/nLMWjQoLjjjjsKNR8AUELy+lbI3/72t7jjjjviH//4R1x44YXx+c9/PtatWxcXXnhhoeYDAEpIXmGxYsWKQs0BAAwAPisEAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACRzWmGxePHiKCsri3nz5iUaBwAoZb0Oi/Xr18eyZcti4sSJKecBAEpYr8Kio6Mj7rzzzvjlL38Z5513XuqZAIASNbg3d6qrq4uZM2fG9OnT46c//elJ1+Zyucjlcl3X29vbe/OQAAXT0tISra2txR5jQGtubi72CPSRvMNixYoVsWHDhli/fn2P1i9atCgaGhryHgygL7S0tMT4cTVx8NDhYo8CA0JeYbFr166YO3durF69OiorK3t0nwULFkR9fX3X9fb29qiurs5vSoACaW1tjYOHDseT34kYX1XsaQauF/8U8aNniz0FfSGvsGhqaop9+/bF5MmTu247cuRIrF27Nh555JHI5XIxaNCgo+5TUVERFRUVaaYFKJDxVRGTLy72FANX8+5iT0BfySssbrrppti8efNRt919990xbty4+OEPf3hcVAAAHy95hcWQIUPiiiuuOOq2T3ziE3H++ecfdzsA8PHjJ28CAMn06p+bftSaNWsSjAEADAResQAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Sample data\n", + "data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]\n", + "\n", + "##create a histogram\n", + "plt.hist(data,bins=5,color='orange',edgecolor='black')" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "##create a scatter plot\n", + "# Sample data\n", + "x = [1, 2, 3, 4, 5]\n", + "y = [2, 3, 4, 5, 6]\n", + "\n", + "plt.scatter(x,y,color=\"blue\",marker='x')" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "([,\n", + " ,\n", + " ,\n", + " ],\n", + " [Text(0.764120788592483, 1.051722121304293, 'A'),\n", + " Text(-0.8899187482945419, 0.6465637025335369, 'B'),\n", + " Text(-0.3399185762739153, -1.046162206115244, 'C'),\n", + " Text(1.0461622140716127, -0.3399185517867209, 'D')],\n", + " [Text(0.47022817759537416, 0.6472136131103341, '30.0%'),\n", + " Text(-0.4854102263424773, 0.3526711104728383, '20.0%'),\n", + " Text(-0.1854101325130447, -0.5706339306083149, '40.0%'),\n", + " Text(0.5706339349481523, -0.18541011915639322, '10.0%')])" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### pie chart\n", + "\n", + "labels=['A','B','C','D']\n", + "sizes=[30,20,40,10]\n", + "colors=['gold','yellowgreen','lightcoral','lightskyblue']\n", + "explode=(0.2,0,0,0) ##move out the 1st slice\n", + "\n", + "##create apie chart\n", + "plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct=\"%1.1f%%\",shadow=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDDateProduct CategoryProduct NameUnits SoldUnit PriceTotal RevenueRegionPayment Method
0100012024-01-01ElectronicsiPhone 14 Pro2999.991999.98North AmericaCredit Card
1100022024-01-02Home AppliancesDyson V11 Vacuum1499.99499.99EuropePayPal
2100032024-01-03ClothingLevi's 501 Jeans369.99209.97AsiaDebit Card
3100042024-01-04BooksThe Da Vinci Code415.9963.96North AmericaCredit Card
4100052024-01-05Beauty ProductsNeutrogena Skincare Set189.9989.99EuropePayPal
\n", + "
" + ], + "text/plain": [ + " Transaction ID Date Product Category Product Name \\\n", + "0 10001 2024-01-01 Electronics iPhone 14 Pro \n", + "1 10002 2024-01-02 Home Appliances Dyson V11 Vacuum \n", + "2 10003 2024-01-03 Clothing Levi's 501 Jeans \n", + "3 10004 2024-01-04 Books The Da Vinci Code \n", + "4 10005 2024-01-05 Beauty Products Neutrogena Skincare Set \n", + "\n", + " Units Sold Unit Price Total Revenue Region Payment Method \n", + "0 2 999.99 1999.98 North America Credit Card \n", + "1 1 499.99 499.99 Europe PayPal \n", + "2 3 69.99 209.97 Asia Debit Card \n", + "3 4 15.99 63.96 North America Credit Card \n", + "4 1 89.99 89.99 Europe PayPal " + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Sales Data Visualization\n", + "import pandas as pd\n", + "sales_data_df=pd.read_csv('sales_data.csv')\n", + "sales_data_df.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 240 entries, 0 to 239\n", + "Data columns (total 9 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 Transaction ID 240 non-null int64 \n", + " 1 Date 240 non-null object \n", + " 2 Product Category 240 non-null object \n", + " 3 Product Name 240 non-null object \n", + " 4 Units Sold 240 non-null int64 \n", + " 5 Unit Price 240 non-null float64\n", + " 6 Total Revenue 240 non-null float64\n", + " 7 Region 240 non-null object \n", + " 8 Payment Method 240 non-null object \n", + "dtypes: float64(2), int64(2), object(5)\n", + "memory usage: 17.0+ KB\n" + ] + } + ], + "source": [ + "sales_data_df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Product Category\n", + "Beauty Products 2621.90\n", + "Books 1861.93\n", + "Clothing 8128.93\n", + "Electronics 34982.41\n", + "Home Appliances 18646.16\n", + "Sports 14326.52\n", + "Name: Total Revenue, dtype: float64\n" + ] + } + ], + "source": [ + "## plot total sales by products\n", + "total_sales_by_product=sales_data_df.groupby('Product Category')['Total Revenue'].sum()\n", + "print(total_sales_by_product)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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RESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLJU45Bz5MgR9OvXDw4ODlAoFNi9e7fWcUEQEBYWhiZNmsDU1BR+fn64cOGCVptbt25hxIgRUCqVsLKywrhx41BUVKTVJi0tDW+++SZMTEzg5OSExYsXV6ll+/btaNWqFUxMTODh4YFffvmlph+HiIiIZKrGIae4uBheXl6IiIio9vjixYvx1VdfITIyEidOnICZmRn8/f1x//59sc2IESNw9uxZxMXFYe/evThy5AgmTpwoHler1ejVqxecnZ2RnJyMJUuWYN68efj222/FNomJiRg2bBjGjRuH06dPY+DAgRg4cCDOnDlT049EREREMlSvpm8ICAhAQEBAtccEQcCKFSswd+5cDBgwAACwceNG2NnZYffu3Rg6dCjOnTuHmJgYnDp1Cu3btwcAfP311+jTpw/+85//wMHBAZs2bUJpaSm+++47GBkZoXXr1khJScGyZcvEMLRy5Ur07t0bM2bMAAB8+umniIuLw6pVqxAZGflMF4OIiIjko1b75GRlZSE3Nxd+fn7iPktLS/j6+iIpKQkAkJSUBCsrKzHgAICfnx8MDAxw4sQJsU2XLl1gZGQktvH390dmZiZu374ttnn451S2qfw51SkpKYFardbaiIiISJ5qNeTk5uYCAOzs7LT229nZicdyc3Nha2urdbxevXpo1KiRVpvqzvHwz3hUm8rj1Vm4cCEsLS3FzcnJqaYfkYiIiPREnRpdNWfOHBQWForblStXpC6JiIiIXpBaDTn29vYAgLy8PK39eXl54jF7e3tcv35d63h5eTlu3bql1aa6czz8Mx7VpvJ4dYyNjaFUKrU2IiIikqdaDTkuLi6wt7dHfHy8uE+tVuPEiRNQqVQAAJVKhYKCAiQnJ4ttDh48CI1GA19fX7HNkSNHUFZW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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "total_sales_by_product.plot(kind='bar',color='teal')" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## plot sales trend over time\n", + "sales_trend=sales_data_df.groupby('Date')['Total Revenue'].sum().reset_index()\n", + "plt.plot(sales_trend['Date'],sales_trend['Total Revenue'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/10.6-seaborn.ipynb b/10-Data Analysis With Python/10.6-seaborn.ipynb new file mode 100644 index 000000000..b387e00ab --- /dev/null +++ b/10-Data Analysis With Python/10.6-seaborn.ipynb @@ -0,0 +1,948 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Data Visualization With Seaborn\n", + "Seaborn is a Python visualization library based on Matplotlib that provides a high-level interface for drawing attractive and informative statistical graphics. Seaborn helps in creating complex visualizations with just a few lines of code. In this lesson, we will cover the basics of Seaborn, including creating various types of plots and customizing them. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting seaborn\n", + " Downloading seaborn-0.13.2-py3-none-any.whl.metadata (5.4 kB)\n", + "Requirement already satisfied: numpy!=1.24.0,>=1.20 in e:\\udemy final\\python\\venv\\lib\\site-packages (from seaborn) (1.26.4)\n", + "Requirement already satisfied: pandas>=1.2 in e:\\udemy final\\python\\venv\\lib\\site-packages (from seaborn) (2.2.2)\n", + "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in e:\\udemy final\\python\\venv\\lib\\site-packages (from seaborn) (3.9.0)\n", + "Requirement already satisfied: contourpy>=1.0.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.2.1)\n", + "Requirement already satisfied: cycler>=0.10 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.53.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.5)\n", + "Requirement already satisfied: packaging>=20.0 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (24.0)\n", + "Requirement already satisfied: pillow>=8 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (10.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in e:\\udemy final\\python\\venv\\lib\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.9.0.post0)\n", + "Requirement already satisfied: pytz>=2020.1 in e:\\udemy final\\python\\venv\\lib\\site-packages (from pandas>=1.2->seaborn) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in e:\\udemy final\\python\\venv\\lib\\site-packages (from pandas>=1.2->seaborn) (2024.1)\n", + "Requirement already satisfied: six>=1.5 in e:\\udemy final\\python\\venv\\lib\\site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0)\n", + "Downloading seaborn-0.13.2-py3-none-any.whl (294 kB)\n", + " ---------------------------------------- 0.0/294.9 kB ? eta -:--:--\n", + " -- ------------------------------------ 20.5/294.9 kB 330.3 kB/s eta 0:00:01\n", + " -- ------------------------------------ 20.5/294.9 kB 330.3 kB/s eta 0:00:01\n", + " -- ------------------------------------ 20.5/294.9 kB 330.3 kB/s eta 0:00:01\n", + " ---------- ---------------------------- 81.9/294.9 kB 416.7 kB/s eta 0:00:01\n", + " ------------------------- ------------ 194.6/294.9 kB 908.0 kB/s eta 0:00:01\n", + " ---------------------------------------- 294.9/294.9 kB 1.2 MB/s eta 0:00:00\n", + "Installing collected packages: seaborn\n", + "Successfully installed seaborn-0.13.2\n" + ] + } + ], + "source": [ + "!pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
........................
23929.035.92MaleNoSatDinner3
24027.182.00FemaleYesSatDinner2
24122.672.00MaleYesSatDinner2
24217.821.75MaleNoSatDinner2
24318.783.00FemaleNoThurDinner2
\n", + "

244 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " total_bill tip sex smoker day time size\n", + "0 16.99 1.01 Female No Sun Dinner 2\n", + "1 10.34 1.66 Male No Sun Dinner 3\n", + "2 21.01 3.50 Male No Sun Dinner 3\n", + "3 23.68 3.31 Male No Sun Dinner 2\n", + "4 24.59 3.61 Female No Sun Dinner 4\n", + ".. ... ... ... ... ... ... ...\n", + "239 29.03 5.92 Male No Sat Dinner 3\n", + "240 27.18 2.00 Female Yes Sat Dinner 2\n", + "241 22.67 2.00 Male Yes Sat Dinner 2\n", + "242 17.82 1.75 Male No Sat Dinner 2\n", + "243 18.78 3.00 Female No Thur Dinner 2\n", + "\n", + "[244 rows x 7 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Basic Plotting With Seaborn\n", + "tips=sns.load_dataset('tips')\n", + "tips" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABgUUlEQVR4nO3deXhTZdo/8G+aNm3StGlpKLTSlkoLyFKogAyUsuo4iIwibpV5h83R98cu4zvCOKw6AqOjIu4zAzLOgBsC4zaKgCwFEaQIyGKLhVaLlNY2aZq26XJ+f9TEptlO0mwn/X6uqxc0J+ec55ykee48y/3IBEEQQERERCRBYYEuABEREZGnGMgQERGRZDGQISIiIsliIENERESSxUCGiIiIJIuBDBEREUkWAxkiIiKSLAYyREREJFkMZIiIiEiyGMgQES5evAiZTIbXXnst0EWx8t///heDBw9GVFQUZDIZqqurA10kpz777DPIZDJ89tlnXj2uTCbDypUrLb+/9tprkMlkuHjxouWxsWPHYuzYsV49r6/46j5R58RAhkLaqVOncOeddyItLQ1RUVG45pprcNNNN2HDhg0+O+eWLVvw7LPP2jxeVlaGlStX4sSJEz47d3vmCsP8ExERgWuvvRa//e1v8e2333rlHIcOHcLKlSu9HmRUVlbi7rvvhlKpxAsvvIDXX38d0dHRNs9re33OfsRUmk888QR27Njh1euwxxyItP1JTEzEuHHj8NFHH/n8/L4wY8YMUa/DjBkzAl1UCjHhgS4Aka8cOnQI48aNQ2pqKn73u9+he/fuKC0txeeff47169dj/vz5Pjnvli1bcPr0aSxatMjq8bKyMqxatQo9e/bE4MGDfXJuRxYsWIBhw4ahsbERx48fx6uvvooPPvgAp06dQnJycoeOfejQIaxatQozZsxAXFycdwoM4OjRo6ipqcFjjz2GG2+80eHzXn/9davf//nPf2LXrl02j1933XUuz/nEE0/gzjvvxO233+5Rmd21evVqpKenQxAEXLlyBa+99hpuueUWvPfee7j11lstz6urq0N4eHB/XD/44INWr1NxcTGWL1+OBx54ALm5uZbHe/XqheHDh6Ourg4KhSIQRaUQE9x/GUQd8Oc//xkajQZHjx61qWDLy8sDUygfqK2ttdtS0VZubi7uvPNOAMDMmTPRu3dvLFiwAJs3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JUAlDg0vvfQSsrKyLAnARowYgY8++siynffcP9auXQuZTIZFixZZHuO9942VK1dCJpNZ/fTt29eyPZjvOwMZEqW2thaDBg3CCy+8YHf7X/7yFzz33HN4+eWXceTIEURHR+Pmm29GfX29n0saWvbt24e5c+fi888/x65du9DY2Ihf/vKXqK2ttTznoYcewnvvvYe3334b+/btQ1lZGe64444Allr6evTogbVr1+LLL7/EsWPHMH78eNx22234+uuvAfCe+8PRo0fxyiuvICsry+px3nvf6d+/Py5fvmz5OXjwoGVbUN93gchNAITt27dbfm9paRG6d+8uPPnkk5bHqqurhcjISGHr1q0BKGHoKi8vFwAI+/btEwSh9T5HREQIb7/9tuU5Z8+eFQAIhw8fDlQxQ1J8fLzw97//nffcD2pqaoTMzExh165dwpgxY4SFCxcKgsD3uy+tWLFCGDRokN1twX7f2SJDHVZcXIwffvgBN954o+UxjUaD4cOH4/DhwwEsWejR6XQAgC5dugAAvvzySzQ2Nlrd+759+yI1NZX33kuam5vxxhtvoLa2FiNGjOA994O5c+di0qRJVvcY4Pvd1woLC5GcnIxrr70W06ZNQ0lJCYDgv+8hv2gk+d4PP/wAAOjWrZvV4926dbNso45raWnBokWLkJOTgwEDBgBovfcKhQJxcXFWz+W977hTp05hxIgRqK+vh1qtxvbt29GvXz+cOHGC99yH3njjDRw/fhxHjx612cb3u+8MHz4cr732Gvr06YPLly9j1apVyM3NxenTp4P+vjOQIZKIuXPn4vTp01b91uQ7ffr0wYkTJ6DT6fDOO+9g+vTp2LdvX6CLFdJKS0uxcOFC7Nq1C1FRUYEuTqcyceJEy/+zsrIwfPhwpKWl4a233oJSqQxgyVxj1xJ1WPfu3QHAZgT7lStXLNuoY+bNm4f3338fe/fuRY8ePSyPd+/eHSaTCdXV1VbP573vOIVCgYyMDAwZMgRr1qzBoEGDsH79et5zH/ryyy9RXl6O66+/HuHh4QgPD8e+ffvw3HPPITw8HN26deO995O4uDj07t0bRUVFQf+eZyBDHZaeno7u3btj9+7dlsf0ej2OHDmCESNGBLBk0icIAubNm4ft27djz549SE9Pt9o+ZMgQREREWN378+fPo6SkhPfey1paWtDQ0MB77kMTJkzAqVOncOLECcvP0KFDMW3aNMv/ee/9w2Aw4MKFC0hKSgr69zy7lkgUg8GAoqIiy+/FxcU4ceIEunTpgtTUVCxatAiPP/44MjMzkZ6ejmXLliE5ORm333574AodAubOnYstW7Zg586diImJsfRHazQaKJVKaDQazJ49G4sXL0aXLl0QGxuL+fPnY8SIEfjFL34R4NJL19KlSzFx4kSkpqaipqYGW7ZswWeffYaPP/6Y99yHYmJiLOO/zKKjo5GQkGB5nPfeNx5++GFMnjwZaWlpKCsrw4oVKyCXy5GXlxf87/lAT5siadi7d68AwOZn+vTpgiC0TsFetmyZ0K1bNyEyMlKYMGGCcP78+cAWOgTYu+cAhE2bNlmeU1dXJ8yZM0eIj48XVCqVMGXKFOHy5cuBK3QImDVrlpCWliYoFAqha9euwoQJE4RPPvnEsp333H/aTr8WBN57X7nnnnuEpKQkQaFQCNdcc41wzz33CEVFRZbtwXzfZYIgCAGKoYiIiIg6hGNkiIiISLIYyBAREZFkMZAhIiIiyWIgQ0RERJLFQIaIiIgki4EMERERSRYDGSIiIpIsBjJEJFkzZswQnT167NixWLRokdPn9OzZE88++6zld5lMhh07dgAALl68CJlMhhMnTnhUViLyDQYyRORVYgIGb+zjC0ePHsUDDzwQ6GIQkRu41hIR0U+6du0a6CIQkZvYIkNEXjNjxgzs27cP69evh0wmg0wmw8WLF7Fv3z7ccMMNiIyMRFJSEpYsWYKmpian+zQ3N2P27NlIT0+HUqlEnz59sH79+g6Vr6mpCfPmzYNGo4FWq8WyZcvQdpWW9l1LRBT82CJDRF6zfv16fPPNNxgwYABWr14NAGhubsYtt9yCGTNm4J///CfOnTuH3/3ud4iKisLKlSvt7tO1a1e0tLSgR48eePvtt5GQkIBDhw7hgQceQFJSEu6++26Pyrd582bMnj0bX3zxBY4dO4YHHngAqamp+N3vfue1e0BE/sVAhoi8RqPRQKFQQKVSoXv37gCARx99FCkpKXj++echk8nQt29flJWV4ZFHHsHy5cvt7gMAcrkcq1atsvyenp6Ow4cP46233vI4kElJScEzzzwDmUyGPn364NSpU3jmmWcYyBBJGLuWiMinzp49ixEjRkAmk1key8nJgcFgwHfffed03xdeeAFDhgxB165doVar8eqrr6KkpMTjsvziF7+wKseIESNQWFiI5uZmj49JRIHFQIaIgtIbb7yBhx9+GLNnz8Ynn3yCEydOYObMmTCZTIEuGhEFEXYtEZFXKRQKqxaO6667Dtu2bYMgCJbWkPz8fMTExKBHjx529zE/Z+TIkZgzZ47lsQsXLnSobEeOHLH6/fPPP0dmZibkcnmHjktEgcMWGSLyqp49e+LIkSO4ePEiKioqMGfOHJSWlmL+/Pk4d+4cdu7ciRUrVmDx4sUICwuzu09LSwsyMzNx7NgxfPzxx/jmm2+wbNkyHD16tENlKykpweLFi3H+/Hls3boVGzZswMKFC71x2UQUIAxkiMirHn74YcjlcvTr1w9du3ZFY2MjPvzwQ3zxxRcYNGgQ/vd//xezZ8/Gn/70J4f7lJSU4MEHH8Qdd9yBe+65B8OHD0dlZaVV64wnfvvb36Kurg433HAD5s6di4ULFzIBHpHEyYS2SRSIiIiIJIQtMkRERCRZDGSISPJKSkqgVqsd/nRkyjYRBTd2LRGR5DU1NeHixYsOt/fs2RPh4ZykSRSKGMgQERGRZLFriYiIiCSLgQwRERFJFgMZIiIikiwGMkRERCRZDGSIiIhIshjIEBERkWQxkCEiIiLJYiBDREREkvX/AQhYCHz5JgIFAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "##create a scatter plot\n", + "import matplotlib.pyplot as plt\n", + "\n", + "sns.scatterplot(x='total_bill',y='tip',data=tips)\n", + "plt.title(\"Scatter Plot of Total Bill vs Tip\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHHCAYAAABKudlQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABzZklEQVR4nO3deXhU5dkG8Hv2fSZ7MoEk7LssUhdEBQUXtLhhba2tW22txb22flRrxWrRtrZqrbi0H/q1UOuGa91QwbqxCQIiECCQfU9mnzNzznm/PyYZiQRIwiSz5P5dVy7NmZkzTyYkc+e8y6MRQggQERERpSltsgsgIiIiOhoMM0RERJTWGGaIiIgorTHMEBERUVpjmCEiIqK0xjBDREREaY1hhoiIiNIawwwRERGlNYYZIiIiSmsMM0SHsW/fPmg0Gjz99NPJLuWQnn76aWg0Guzbty/ZpXTxhz/8ASNGjIBOp8PUqVOTXc4R3X333dBoNEe83+zZszFp0qQj3q+7fzvdPcewYcNw5ZVX9uhcf/zjH4/4vP3tyiuvxLBhw5JdBlEXDDM0aHWGgA0bNiS7lG51vvF1flitVkyYMAF33nknvF5vQp5jxYoVeOihhxJyrgO98847+OUvf4mZM2di2bJl+N3vfnfQfVavXt3l6zvcx5HU1tbi7rvvxubNmxP+tRBR6tMnuwCiVFZWVoZQKASDwZC0GpYuXQq73Q6/34933nkH9913H95//318/PHHPXqjP5wVK1Zg27ZtuPnmmxNTbIf3338fWq0Wf//732E0Gru9z/jx4/GPf/yjy7FFixbBbrfjjjvu6NXz1dbWYvHixRg2bFjKXAVKhX87/eGpp56CqqrJLoOoC4YZosPQaDQwm81JreHiiy9GXl4eAOCnP/0pFixYgJdeegmfffYZZsyYkdTaDqWxsREWi+WQQQYACgsL8YMf/KDLsfvvvx95eXkHHU9HqfBvpz9kWjijzMBhJqLD6G7ew5VXXgm73Y6amhpccMEFsNvtyM/Px2233QZFUbo8XlVVPPTQQ5g4cSLMZjMKCwtx7bXXoq2trc81nX766QCAioqKw97vsccew8SJE2EymVBcXIyFCxeivb09fvvs2bPxxhtvYP/+/fHhnCPNhZBlGb/97W8xcuRImEwmDBs2DL/61a8gSVL8PhqNBsuWLUMgEIif92jmHO3duxff+c53kJOTA6vVihNPPBFvvPFG/PbVq1fjuOOOAwBcddVVBz3nf//7X3znO99BaWkpTCYTSkpKcMsttyAUCvW5JgDYuHEjTjrpJFgsFgwfPhyPP/54l9v7a77Vn//8Z5SVlcFisWDWrFnYtm1b/LZly5ZBo9Fg06ZNBz3ud7/7HXQ6HWpqag55bp/Ph5tvvhnDhg2DyWRCQUEBzjjjDHz++efx+3xzzszs2bMPOTx44Nfe3t6Om2++GSUlJTCZTBg1ahQeeOABXuWhhOCVGaI+UBQFZ511Fk444QT88Y9/xKpVq/Dggw9i5MiRuO666+L3u/baa/H000/jqquuwo033oiKigo8+uij2LRpEz7++OM+/ZW7Z88eAEBubu4h73P33Xdj8eLFmDt3Lq677jrs3LkTS5cuxfr16+PPe8cdd8Dj8aC6uhp//vOfAQB2u/2wz33NNdfgmWeewcUXX4yf//znWLt2LZYsWYKvvvoKK1euBAD84x//wJNPPol169bhb3/7GwDgpJNO6vXXCQANDQ046aSTEAwGceONNyI3NxfPPPMMzjvvPLzwwgu48MILMX78eNxzzz2466678JOf/ASnnHJKl+d8/vnnEQwGcd111yE3Nxfr1q3DX/7yF1RXV+P555/vU11tbW0455xzcMkll+DSSy/Fc889h+uuuw5GoxFXX311n87ZE//3f/8Hn8+HhQsXIhwO4+GHH8bpp5+OrVu3orCwEBdffDEWLlyI5cuXY9q0aV0eu3z5csyePRtDhgw55Pl/+tOf4oUXXsD111+PCRMmoKWlBR999BG++uorHHvssd0+5o477sA111zT5dg///lPvP322ygoKAAABINBzJo1CzU1Nbj22mtRWlqKTz75BIsWLUJdXV2/zNuiQUYQDVLLli0TAMT69esPeZ+KigoBQCxbtix+7IorrhAAxD333NPlvtOmTRPTp0+Pf/7f//5XABDLly/vcr+33nqr2+Pf9Jvf/EYAEDt37hRNTU2ioqJCPPHEE8JkMonCwkIRCAS6fB0VFRVCCCEaGxuF0WgUZ555plAUJX6+Rx99VAAQ//u//xs/du6554qysrLD1tFp8+bNAoC45ppruhy/7bbbBADx/vvvx49dccUVwmaz9ei8B5o4caKYNWtW/PObb75ZABD//e9/48d8Pp8YPny4GDZsWPzrW79+/UHfp07BYPCgY0uWLBEajUbs378/fqzz9T6SWbNmCQDiwQcfjB+TJElMnTpVFBQUiEgkIoTo/t9Od89RVlYmrrjiisM+Z+e5LBaLqK6ujh9fu3atACBuueWW+LFLL71UFBcXd/nef/7554d8fQ7kcrnEwoULD3ufK6644rD/Zj7++GNhMBjE1VdfHT/229/+VthsNrFr164u9/2f//kfodPpRGVl5WGfk+hIOMxE1Ec//elPu3x+yimnYO/evfHPn3/+ebhcLpxxxhlobm6Of0yfPh12ux0ffPBBj55n7NixyM/Px/Dhw3Httddi1KhReOONN2C1Wru9/6pVqxCJRHDzzTdDq/36R/zHP/4xnE5nlyGa3vjPf/4DALj11lu7HP/5z38OAH0+75Ge8/jjj8fJJ58cP2a32/GTn/wE+/btw/bt2494DovFEv//QCCA5uZmnHTSSRBCdDsc0xN6vR7XXntt/HOj0Yhrr70WjY2N2LhxY5/O2RMXXHBBlysrxx9/PE444YT49wYALr/8ctTW1nb597V8+XJYLBYsWLDgsOfPysrC2rVrUVtb26f66uvrcfHFF2Pq1Kl47LHH4seff/55nHLKKcjOzu7yszB37lwoioIPP/ywT89H1InDTER9YDabkZ+f3+VYdnZ2l7kw5eXl8Hg88Uvt39TY2Nij53rxxRfhdDphMBgwdOhQjBw58rD3379/P4BYCDqQ0WjEiBEj4rf31v79+6HVajFq1Kgux4uKipCVldXn8x7pOU844YSDjo8fPz5++5H2fKmsrMRdd92FV1999aC5Sh6Pp091FRcXw2azdTk2ZswYALG5MieeeGKfznsko0ePPujYmDFj8Nxzz8U/P+OMM+B2u7F8+XLMmTMHqqriX//6F84//3w4HI7Dnv/3v/89rrjiCpSUlGD69Ok455xzcPnll2PEiBFHrE2WZVxyySVQFAUvvfQSTCZT/Lby8nJs2bLloJ+ZTj39WSA6FIYZoj7Q6XRHvI+qqigoKMDy5cu7vf1Qv9i/6dRTT42vZkoFR7scfCApioIzzjgDra2tuP322zFu3DjYbDbU1NTgyiuvzMjJpzqdDt///vfx1FNP4bHHHsPHH3+M2traHq0Qu+SSS3DKKadg5cqVeOedd/CHP/wBDzzwAF566SXMmzfvsI/9xS9+gU8//RSrVq3C0KFDu9ymqirOOOMM/PKXv+z2sZ1BkKivGGaI+snIkSOxatUqzJw5s8tQR38rKysDAOzcubPLX9SRSAQVFRWYO3du/FhvgklZWRlUVUV5eXn8yggQm6Tb3t4ef95EKisrw86dOw86vmPHjvjtwKG/jq1bt2LXrl145plncPnll8ePv/vuu0dVV21tLQKBQJerM7t27QKAft0dt7y8/KBju3btOug5L7/8cjz44IN47bXX8OabbyI/Px9nnXVWj57D7XbjZz/7GX72s5+hsbERxx57LO67777Dhplnn30WDz30EB566CHMmjXroNtHjhwJv9/f5d8eUSJxzgxRP+m85P7b3/72oNtkWe6yTDqR5s6dC6PRiEceeQRCiPjxv//97/B4PDj33HPjx2w2W4+HWs455xwAOGjlyZ/+9CcA6HLeRDnnnHOwbt06fPrpp/FjgUAATz75JIYNG4YJEyYAQDxUfPM17byCduDrIITAww8/fFR1ybKMJ554Iv55JBLBE088gfz8fEyfPv2ozn04L7/8cpel1evWrcPatWsPChqTJ0/G5MmT8be//Q0vvvgivve970GvP/zfroqiHPRvoaCgAMXFxV2W3n/Ttm3bcM011+AHP/gBbrrppm7vc8kll+DTTz/F22+/fdBt7e3tkGX5sLURHQmvzNCg97//+7946623Djp+qF/MPTVr1ixce+21WLJkCTZv3owzzzwTBoMB5eXleP755/Hwww/j4osvPqrn6E5+fj4WLVqExYsX4+yzz8Z5552HnTt34rHHHsNxxx3XZbhh+vTp+Pe//41bb70Vxx13HOx2O+bPn9/teadMmYIrrrgCTz75JNrb2zFr1iysW7cOzzzzDC644AKcdtppCf9a/ud//gf/+te/MG/ePNx4443IycnBM888g4qKCrz44ovxCc4jR45EVlYWHn/8cTgcDthsNpxwwgkYN24cRo4cidtuuw01NTVwOp148cUXj2qfHyA2Z+aBBx7Avn37MGbMGPz73//G5s2b8eSTT/brpnKjRo3CySefjOuuuw6SJOGhhx5Cbm5ut8M3l19+OW677TYA6NEQk8/nw9ChQ3HxxRdjypQpsNvtWLVqFdavX48HH3zwkI+76qqrAMSGQ//5z392ue2kk07CiBEj8Itf/AKvvvoqvv3tb+PKK6/E9OnTEQgEsHXrVrzwwgvYt29fSg2lUhpK7mIqouTpXNJ8qI+qqqpDLs3ubtnxoZb2Pvnkk2L69OnCYrEIh8MhjjnmGPHLX/5S1NbWHra+zvM1NTX16OvoXJrd6dFHHxXjxo0TBoNBFBYWiuuuu060tbV1uY/f7xff//73RVZWlgBwxGXa0WhULF68WAwfPlwYDAZRUlIiFi1aJMLhcJf7JWppthBC7NmzR1x88cUiKytLmM1mcfzxx4vXX3/9oMe+8sorYsKECUKv13f5nm3fvl3MnTtX2O12kZeXJ3784x+LL774okfLprsza9YsMXHiRLFhwwYxY8YMYTabRVlZmXj00Ue73K8/lmb/4Q9/EA8++KAoKSkRJpNJnHLKKeKLL77o9jF1dXVCp9OJMWPGHPFrEiK2vPwXv/iFmDJlinA4HMJms4kpU6aIxx57rMv9vrk0u6ys7JA/Qwd+7T6fTyxatEiMGjVKGI1GkZeXJ0466STxxz/+Mb6cnaivNEIccP2ViIgyQnNzM9xuN+666y78+te/TnY5RP2Kc2aIiDLQ008/DUVR8MMf/jDZpRD1O86ZISLKIO+//z62b9+O++67DxdccEG/rq4iShUcZiIiyiCzZ8/GJ598gpkzZ+Kf//znYXsxEWUKhhkiIiJKa5wzQ0RERGmNYYaIiIjSWsZPAFZVFbW1tXA4HGnVU4aIiGgwE0LA5/OhuLg4vkHm4e6cMpYsWSIAiJtuuil+bNasWQdtxHTttdf2+JxVVVWH3RiNH/zgBz/4wQ9+pO5HVVXVEd/rU+bKzPr16/HEE09g8uTJB9324x//GPfcc0/8c6vV2uPzdra8r6qqgtPpPPpCiYiIqN95vV6UlJTE38cPJyXCjN/vx2WXXYannnoK995770G3W61WFBUV9encnUNLTqeTYYaIiCjN9GSKSEpMAF64cCHOPffcQ7aHX758OfLy8jBp0iQsWrQIwWBwgCskIiKiVJX0KzPPPvssPv/8c6xfv77b27///e+jrKwMxcXF2LJlC26//Xbs3LkTL730Urf3lySpS7t6r9fbL3UTERFRakhqmKmqqsJNN92Ed999F2azudv7/OQnP4n//zHHHAO32405c+Zgz549GDly5EH3X7JkCRYvXtxvNRMREVFqSeoOwC+//DIuvPBC6HS6+DFFUaDRaKDVaiFJUpfbACAQCMBut+Ott97CWWedddA5u7syU1JSAo/HwzkzREREacLr9cLlcvXo/TupV2bmzJmDrVu3djl21VVXYdy4cbj99tsPCjIAsHnzZgCA2+3u9pwmkwkmkynhtRIREVFqSmqYcTgcmDRpUpdjNpsNubm5mDRpEvbs2YMVK1bgnHPOQW5uLrZs2YJbbrkFp556ardLuImIiGjwSfoE4MMxGo1YtWoVHnroIQQCAZSUlGDBggW48847k10aERERpYiM75rdmzE3IiIiSg29ef9OiX1miIiIiPqKYYaIiIjSGsMMERERpTWGGSIiIkprDDNERESU1hhmiIiIqM9kRYWsqEmtgWGGiIiIek0IgWa/hE1V7ajzhJNaS0pvmkdERESpJxxVUNkSRGVbEIGwjAJHctsIMcwQERFRjwgh0OSTsLc5gPZgBDlWExQl+XvvMswQERHREQUjMva1BFDTFoZBq4HbZYFWo0FbMNmVMcwQERHRYaiqQIMvjL1NAfjCMvLsRpj0umSX1QXDDBEREXXLL8nY1xxAbXsIZoMOxS4zNBpNsss6CMMMERERdaGoAnWeECqaAwhKCvIdJhh0qbsAmmGGiIiI4jyhKPY1B1DnCcNu0qM4y5Lsko6IYYaIiIgQVVTUtoewrzkASVZRkOJXYw7EMENERDTItQUiqGgOoNEXhstsRI4tufvG9BbDDBER0SAVkVVUtQZR2RqAogJFTgt02tSb4HskDDNERESDjBACLR1XY1r8EWRZDLCZ0jcSpG/lRERE1GsHtiLQAChymtPyasyBGGaIiIgGge5aEViMqbX5XV8xzBAREWW4UETBvhY/qr/RiiBTMMwQERFlqG+2Isi1GWE2ZMbVmAMxzBAREWWgzlYENe0hWPSp24ogERhmiIiIMsiBrQgCkox8uxlGfXpsftdXDDNEREQZorMVQb03DJtRjyFZ1mSXNCAYZoiIiNKcrKioaQ9hX0sAUlRFvj19WhEkAsMMERFRGmsLRLCvJYAGbxhOswE5rvRqRZAIDDNERERpqLMVQVVrELIq0rYVQSIwzBAREaWZFr+EiuYAmnwSsq3GtG5FkAiD+6snIiJKI+GoEmsM2RYEBOB2Dd6rMQdimCEiIkpxQgg0+SXsbYq1Isi2GmE18i28E18JIiKiFNbZiqCmLQx9BrYiSISUWrd1//33Q6PR4Oabb44fC4fDWLhwIXJzc2G327FgwQI0NDQkr0giIqIBoKoC9Z4wNle1YX9LCC6LAbl2E4NMN1ImzKxfvx5PPPEEJk+e3OX4Lbfcgtdeew3PP/881qxZg9raWlx00UVJqpKIiKj/+SUZ2+u82FLdjqgsUOwyZ2RPpURJiTDj9/tx2WWX4amnnkJ2dnb8uMfjwd///nf86U9/wumnn47p06dj2bJl+OSTT/DZZ58lsWIiIqLEU1SBmvYQNle2oaY9iFybCdk2Y8b2VEqUlAgzCxcuxLnnnou5c+d2Ob5x40ZEo9Eux8eNG4fS0lJ8+umnA10mERFRv/GGo9hW48HW6nYAGhS7rBnfUylRkj4B+Nlnn8Xnn3+O9evXH3RbfX09jEYjsrKyuhwvLCxEfX19t+eTJAmSJMU/93q9Ca2XiIgokWRFRW17CBUtAYSjKgoc5kHViiARkvpqVVVV4aabbsLy5cthNpsTcs4lS5bA5XLFP0pKShJyXiIiokRrD0awtcaDr+q9MGi1KHZZGGT6IKmv2MaNG9HY2Ihjjz0Wer0eer0ea9aswSOPPAK9Xo/CwkJEIhG0t7d3eVxDQwOKioq6PeeiRYvg8XjiH1VVVQPwlRAREfVcRFaxt8mPzZXtaPFHUOiwwGE2JLustJXUYaY5c+Zg69atXY5dddVVGDduHG6//XaUlJTAYDDgvffew4IFCwAAO3fuRGVlJWbMmNHtOU0mE0ymwddki4iI0kNnK4JmvwSXxYjcQd6KIBGS+go6HA5MmjSpyzGbzYbc3Nz48R/96Ee49dZbkZOTA6fTiRtuuAEzZszAiSeemIySiYiI+qRLKwIVg7oxZKKlfBz885//DK1WiwULFkCSJJx11ll47LHHkl0WERFRj7AVQf/TCCFEsovoT16vFy6XCx6PB06nM9nlEBHRIBKKKNjfEkB1Wwg6rQY5NmPG7eBb2x7COLcDZbm2hJ63N+/fjIZEREQJpqoCjT4JFc1+eIJR5NpN3MG3HzHMEBERJVBAkuNXY0x6HYqzLNzBt58xzBARESWAogrUe8OoaPLDL8nIt5u5g+8AYZghIiI6St5wFPuaA6hrD8Fq1KPYxasxA4lhhoiIqI++2Yogn60IkoJhhoiIqA/agxHsaw6g3huGw2RAsYsbtiYLwwwREVEvRGQVNW1B7G8NQlYECh1m6Hk1JqkYZoiIiHqoNRDB3ib/160IbHwbTQX8LhARER2BJHe0ImgNQrAVQcphmCEiIjoEIQSa/RFUNPvRGmArglTF7wgREVE3wlEF+5q/bkXgdlkyrhVBpmCYISIiOoAQHa0IOhpDshVB6mOYISIi6tDZiqCmPQSjjq0I0gXDDBERDXpqRyuCvc0B+MNR5NlNMOl5NSZdMMwQEdGg5gtHUcFWBGmNYYaIiAYlWVFR5wmhojmIUFRhK4I0xjBDRESDjicYRUWzH/VeCQ5T7GoMpS+GGSIiGjSiSqwVwb6WzlYEJrYiyAAMM0RENCi0BmKb3zX5JLjMbEWQSfidJCKijHZgKwKVrQgyEsMMERFlpANbEbQEIshhK4KMxe8qERFlHE8oirr2EKrbQtBqNChmK4KMxjBDREQZQQgBTyiKWk8IDZ4wIrJAjs3IVgSDAMMMERGlNSEE2oNR1LSH0OgLQ1YEsixG5NkZYgYLhhkiIkpLqirQFox0hBgJQsRCDK/EDD4MM0RElFZUVaA1GEFNWwhNPgkAkGU1sJfSIMYwQ0REaUFRBVoCEmrbQmjyR6ABkG01wqjnpneDHcMMERGlNFlR0RKIoLotiBZ/BDqtBrk2I/soURzDDBERpaSooqLFH0FVWxCtfglGvQ75drYfoIMxzBARUUqJyCqa/RKq24JoC0Zh0mlRyF176TAYZoiIKCVIsoImn4TqthA8oQjMej0KHWaGGDoihhkiIkqqcLQzxAThCUVhNepR6OCVGOq5pA48Ll26FJMnT4bT6YTT6cSMGTPw5ptvxm+fPXs2NBpNl4+f/vSnSayYiIgSJRxVsL8lgI3727C9zgtZEXC7LMi2GhlkqFeSemVm6NChuP/++zF69GgIIfDMM8/g/PPPx6ZNmzBx4kQAwI9//GPcc8898cdYrdZklUtERAkQjMho8IRR0x6CX5JhNxngdpqhYe8k6qOkhpn58+d3+fy+++7D0qVL8dlnn8XDjNVqRVFRUTLKIyKiBApIMuo7QkwwIsNpNqDYZWGIoaOWMuvbFEXBs88+i0AggBkzZsSPL1++HHl5eZg0aRIWLVqEYDCYxCqJiKi3fOEoyht82LC/FeUNPhi0WhS7LHCYDQwylBBJnwC8detWzJgxA+FwGHa7HStXrsSECRMAAN///vdRVlaG4uJibNmyBbfffjt27tyJl1566ZDnkyQJkiTFP/d6vf3+NRAR0cE8oSjqPSHUecIIRxVkWYzIyTYluyxKsGa/BCma3CkgGiGESGYBkUgElZWV8Hg8eOGFF/C3v/0Na9asiQeaA73//vuYM2cOdu/ejZEjR3Z7vrvvvhuLFy8+6LjH44HT6Ux4/URE9DUhBLwhGTWeIBo9EiKKCpfFAKsx6X87U4LtavBh5aYafLynGT8/YwyuP310Qs/v9Xrhcrl69P6d9DDzTXPnzsXIkSPxxBNPHHRbIBCA3W7HW2+9hbPOOqvbx3d3ZaakpIRhhoioHwkh0B6MorY9hAZfGFFFINtihMXI5o+ZRBUCG/a14qVNNfiy9uuRj/OmFOORS6cl9Ll6E2ZSLiqrqtoljBxo8+bNAAC3233Ix5tMJphMvIxJRDQQhBBoDURQ0x5Co0+CEAJZFiPMBoaYTBKRVXywsxEvb65BdVsIAKDTajBrdD5mjsrF3AmFSa0vqWFm0aJFmDdvHkpLS+Hz+bBixQqsXr0ab7/9Nvbs2YMVK1bgnHPOQW5uLrZs2YJbbrkFp556KiZPnpzMsomIBj1VFWgNRlDTFkKTL/YHaJbVAJOeISaTeENRvLmtDq9vqUN7KAoAsBp1mDepCN+eXIw8uwm17aEkV5nkMNPY2IjLL78cdXV1cLlcmDx5Mt5++22cccYZqKqqwqpVq/DQQw8hEAigpKQECxYswJ133pnMkomIBjVFFWgJSKhtC6HJH4EGQLbVCKM+ZRbHUgLUeUJ4ZXMt3v2qARFZBQDk2U04f2oxzpxQmHJzoFJuzkyi9WbMjYiIuicrKloCEVS3BdHij0Cn1SDbaoSBHawzyo56L1ZuqsGne1rQGQ5G5Ntw0bShmDkyt9uO5bXtIYxzO1CWa0toLWk9Z4aIiFKHrKho9kdQ1RZEWyACvVaLfLup2zc1Sk+KKrBuXytWbqrBV3VfT+qdXpaNC6cNweQhrpTfD4hhhoiIDhKRVTT7Y80f24JRmHRaFLCDdUaRZAXv72jEy5tqUOsJAwD0Wg1mj83HBVOHJPxKS39imCEiojhJ7uxgHUJ7MAqLQYdChpiM4glF8Z+tdXh9Sy28YRkAYDPpcM4kN849xo1ce/qtCGaYISIihKOdISYITygKq0GPIidDTCapaQvhlS9q8N5XjYgosUm9BQ4Tzp86BGeML0zrPYEYZoiIBrFwVEGDN4zqthB84ShsRj3cLgu0KT5HgnpGCIGv6n1Yuakaa/e2xif1jiqw46JpQ3DSyLyMCKwMM0REg1AwIqOxM8RIMhwmdrDOJIoq8NneFqzcVIOdDb748eOH5eDCaUMwsdiZUd9rhhkiokEkIMmo94RR6wkh0BFihjDEZIxwVMF7XzXg5c21qPd+Pan39HEFuGDqEJTkJLchZH9hmCEiGgR84Wg8xIQkBS6LkVdiMkhbMII3ttThP1vr4JNik3odJj3OOSY2qTfbZkxyhf2LYYaIKIN5QlE0dISYcFRBlsWInOz0W61C3atqDeLlzTX4YGcjokpsRkyR04wLphZjzvjCQdMji2GGiCjDCCHgDcmo9QTR4JEgKbEQk2tjiMkEQgh8WevFS5uqsX5fW/z42EIHLpw2BCeOyM2ISb29wTBDRJQhhBBoD0ZR5wmh3htGVBHIthiRa2SIyQSKKvDJnmas3FSD8kY/AEAD4IQRObhw2lCML3IM2mFDhhkiojQnhEBbMIqa9iAavBKEEMiyGAfNEEOmC0UUvPtVA17ZXIPGjg7lRp02Pql3SLYlyRUmH8MMEVGaUlWB1mAENW0hNHW8yWVZDTDpGWIyQWsggte31OI/2+oQkBQAgNOsx7nHuHHOMW5kWTN7Um9vMMwQEaUZRRVoCUiobQuhyR+BBkC21Qijns0fM8H+lgBe3lyD1TubIKuxSb3FLjMumDYEp40t4BW3bjDMEBGlCUUVaPFLqGoLosUfgU6rQa7NCAM7WKc9IQS21HiwclMNNu7/elLveLcTF04bguOH5Qy6Sb29wTBDRJTiZEVFsz+C6rYgWgMR6LVa5NlNDDEZQFZUfLynBSs3VWNPUwBAbFLvjJG5uHDqEIxzO5NbYJpgmCEiSlFRRY03f2wNRGDW65BvN0HPEJP2ghEZ72xvwKtf1MbnOxn1WpwxvhDnTSlGcRYn9fYGwwwRUYqJyCqa/BKqWoNoD0Zh1mtR5LRwmCEDtPglvLalFm9tq0cgEpvU67IY8O3Jbsyb5IbLYkhyhemJYYaIKEWEowqafBJq2kJoD0VgNehR5DQzxGSAiuYAXt5UgzXlTVA6JvUOybLgwo5JvZy8fXQYZoiIkiwcVdDQ2cE6HIXNqIfbZYF2kG6AlimEEPii2oOVm6rxeWV7/PjEYicumjYE3xqWw+9xgjDMEBElSTAio7EjxPglBXaTns0fM4CsqPjv7thOvRXNsUm9Wg1w0sg8XDhtCMYUOpJcYeZhmCEiGmABSY53sA5IMhwmA4pdZoaYNBeQZLz9ZT1e/aIWLYEIAMCk1+LMCYU4b+oQFDnNSa4wczHMEBENkFBEQW17CDXtIQQlGS6LkVdiMkCTT8KrX9Ti7S/rEYrGJvVmWw2YP7kYZ08qgsPMSb39jWGGiKifhaMK6j2hjuEkGS6zEUOyrckui47SniY/Xt5Ug//ubo5P6i3Jjk3qnT22gPsADSCGGSKifiLJChq9Eipbg/CFZTg4JybtCSHweWU7Vm6qxhfVnvjxyUNcuHDaEBxbls1JvUnAMENElGBRRUWjT0JVSxDtoQjsnBOT9qKKijW7mvDyphrsbw0CiE3qPXlUPi6cNgSjCuxJrnBwY5ghIkoQWfl6s7u2YAQWA5dYpzu/JOPNbXV4/Ys6tAZjk3otBl1sUu+UYhRwUm9KYJghIjpKnQ0gK1uDaPZLMOt1KHRwx9501uAN49UvavHu9ob4pN4cmxHnTSnGWROLYDfx7TOV8LtBRNRHqirQEog1gGz0STDq2HYg3e1u9GPlpmp8tLsZHXN6MSzXigunDcEpo/M5qTdFMcwQEfWSEAKtgQiq20Jo9EnQaoB8drFOW6oQ2Li/DSs31WBrzdeTeqeWZOHCqUMwrTSL851SHMMMEVEPCSHQHoyipj2Eek8YAJBrMzLEpKmIrGL1rka8vKkGVW0hAIBOq8Epo/Nw4dQhGJHPSb3pgmGGiKgHPKEoatqCqPOGoaoC2VYjTHpdssuiPvCFo/jPtnq8vqUW7cEogNik3rMnFWH+5GLkO0xJrpB6K6l/TixduhSTJ0+G0+mE0+nEjBkz8Oabb8ZvD4fDWLhwIXJzc2G327FgwQI0NDQksWIiGmx84Sh21HmxaX8bqtpCcJoMKHJaGGTSUL0njCc+3IOrnl6Pf362H+3BKPLsRlw9cxiWXXkcrp45nEEmTSX1yszQoUNx//33Y/To0RBC4JlnnsH555+PTZs2YeLEibjlllvwxhtv4Pnnn4fL5cL111+Piy66CB9//HEyyyaiQSAgyajzhFDTFkJYVpBlMSLXyDe6dLSrwYeXNtXg0z1fT+odnmfDRdOG4ORRedBzmDDtaYQQItlFHCgnJwd/+MMfcPHFFyM/Px8rVqzAxRdfDADYsWMHxo8fj08//RQnnnhij87n9Xrhcrng8XjgdDr7s3QiygChiIK6jtYDQUlGltUIG5fhpp2oouLzytik3i9rvfHjx5Zm46JpQzB5qIuTehOktj2EcW4HynJtCT1vb96/U+YnVFEUPP/88wgEApgxYwY2btyIaDSKuXPnxu8zbtw4lJaW9irMEBH1RDiqoMEbRlVrkP2T0kQwEus+XucJo94bRl17CHXe2OfNPgmdf6nrtRqcOiYfF04dgmF5iX3DpdSQ9DCzdetWzJgxA+FwGHa7HStXrsSECROwefNmGI1GZGVldbl/YWEh6uvrD3k+SZIgSVL8c6/Xe8j7EhFFZDUeYrxhGXb2T0oZQgh4w52BJYS6jv92Bpj2UPSwj3eY9DhzYhHmT3Yj184hwkyW9DAzduxYbN68GR6PBy+88AKuuOIKrFmzps/nW7JkCRYvXpzACokoE0UVFU2+2K697cEIbEY9+yclgdqxZ8+BQaXWE0Z9x/8HIsphH+80x1pGFLnMcMc/Yp9nWQz8fg4SSQ8zRqMRo0aNAgBMnz4d69evx8MPP4zvfve7iEQiaG9v73J1pqGhAUVFRYc836JFi3DrrbfGP/d6vSgpKem3+okovciKimZ/BJWtAbQGorAadOyf1M/kjsab9Z5wbBioPYR6byy0NHjCiCjqYR+fazPGQ4rbZe4ILrH/53wmAlIgzHyTqqqQJAnTp0+HwWDAe++9hwULFgAAdu7cicrKSsyYMeOQjzeZTDCZeDmRiLpSVYFmv4SqtiCafRJMeh2KnGa2HkgQSVa+nr/iCaP2gOGgRl84voqoO1oNUOg0dwQVS/wKS5EzFly4DJ6OJKlhZtGiRZg3bx5KS0vh8/mwYsUKrF69Gm+//TZcLhd+9KMf4dZbb0VOTg6cTiduuOEGzJgxg5N/iajHVFWgNRhBdWusf5Jeq0WBw8zluH3glw6ev1LXEVhaA5HDPtao03YZCjowtOTbTfx+0FFJaphpbGzE5Zdfjrq6OrhcLkyePBlvv/02zjjjDADAn//8Z2i1WixYsACSJOGss87CY489lsySiShNCCHQFoyiqiPEaAHksX/SYXW2a6g7YGXQgeHFF5YP+3ibUdft/BW3y4xsm5FDedRvUm6fmUTjPjNEg097MNYEst4bBgSQbTXCqGeIAQBFFWjxS/ErKl1WCXnDCEcPP38ly2qIBRSnGe6s2FBQcZYFRU4zHGY9J9wOQtxnhogogbzhjv5JnjBkRSDHNjj7J0WV2HLzAwNL5/yVBm8Y8mEmsGgA5DtMBw0FxeawWGAxDr7Xk1IfwwwRpT2/JKO2LYTa9hAkWUWOzQizIbPfdEMRBfXe0AGB5evQ0nTAhnHd0Ws18Qm3naGluGOVUKHTzKE4SjsMM0SUtoIRGbXtIdS0hxCKKMi2GjNmczQhBHxhuctQUHz+ijcc7/Z8KGaDNjZ/xWlGcVbsqoo7ywy304xcu4mruCijMMwQUdoJRxXUe0KoagshIMlwWYzIyUq/EKMKgbZAJL5JXN0BS5vrPKEjbhjnMMd2K+5ulRA3jKPBhGGGiNKGJCto8IRR2RaCPxyF02xIq9YDkqzg3e0N2FzVHg8tPdkwrshl/kZoif2/nRvGEQFgmCGiNBCRVTT6Yv2TPKEo7Kb0CjFRRcU7X9bjuY3VB+3H0rlhXJHTDHdW11VC3DCOqGcYZogoZXVug9/ZP8lq1KdV64GoomLVVw14bkMVmv2xEJPvMOHbx7gxLM/GDeOIEoRhhohSjtLReqCyNYgWfwQWgw5FTkvaTFqVFRXv72zEv9dXodEnAYgNF13yrRKcMaGQq4Uo7QkhEIoq8IVlaDSABsn92WSYIaKUoaoCzQEJVR0hxqjTplX/JEUVWL2zEc+ur4pt2Acg22rAd6aX4KyJRdy4j9JeRFbhC0cRlhVYjDoUZ5mR5zAhx2pMal0MM0SUdEIItAQiqGkLodEXhk6jTavhF0UV+G95E/61rhK1nliIybIYsGD6UMybVMR5L5TWFFXAL8kIRKLQ67TIshgw2uVAttUAqzE1YkRqVEFEg1JnL6CqtiAavZ3DMenTP0kVAh/vbsaKdZWobgsBiC2XvvjYoTjnGHfGb9xHmS0YkeENyxBCwG7SY1S+A3l2ExxmPbQpdrWUYYaIksITjKKmPRi7kpFm/ZNUIfDZ3hasWFuJ/a1BAIDdpMdF04bg3MnulPlrlai3oooKbygKSVFhNmhR7DIj32lCttWY0n9k8CeOiAaUNxxFbVsIdZ4QoopAtjV9Wg8IIbBuXytWrK3E3uYAgFin6AumDcH8ycWwcd8XSkMHDiPptLFhpFEuM3JsxrQJ5ulRJRGlPb8ko66j9YAkK8i2mNKmaaEQAhv3t2H52krsbvIDACwGHc6bWowLpgyB3cxfpZR+ghEZvrAM9YBhpFy7EU6zIeWGkY6EP4FE1K9CEQW17SFUtwcRiqjIthqQa0uP1gNCCGyqaseKtZXY2eADEOt5NH9yMS6YOgROiyHJFRL1TucwUlhWYTFoUeQyo8BpQpYlfYZ5u8MwQ0T9orN/UnVbCP40658khMCWGg+Wr63EV3VeAIBRr8W3j3HjomOHwsUQQ2lEFQL+sAz/N4aRsq3GjBkazYyvgohShiQraPSGUdkagj8sw27Sp1XrgW01Hixfux/bajtCjE6LeZOKsGD6UGQneS8Not7oHEZSVBV2swEj8+3Is5vSchjpSBhmiCghoh2tB6pagmgPRWA3GeB2mdMmxHxV58XytfvxRbUHAKDXanD2pCJcfOxQ5NrT44oSUVRR4QvLCEcVmDuHkRwmZKXRasG+6HGY2bJlS49POnny5D4VQ0TpR1ZUNPm/7p9kMaRX/6RdDT4sX1uJzyvbAMRCzBkTCvGd6SXIdzDEUOqLDyNJMnRaDbKsBowssGXUMNKR9PirnDp1KjQaDYQQ3d7eeZtGo4GiKAkrkIhSU2f/pKrWIJr9Esx6HQod6dM/aXejHyvW7cf6fbEQo9NqMHdcAS75VgkKnOYkV0d0ZKGIAm84+vUwUoENuTYTXJbMG0Y6kh6HmYqKiv6sg4jShKrGWg9UtwXR5JNg0GnTqglkRbMfK9ZV4rO9rQAArQY4bWwBvndcKYpcDDGU2jqHkUJRGWaDDoUuEwod5owfRjqSHoeZsrKy/qyDiFKcEAKtgQiq20Jo9EnQapBW/ZP2twTwr3WV+HhPC4BYiDl1TD4uPa4UxVmWJFdHdGiqEAhIscm8Oq0GLqsBI/JtyLYZYR8kw0hH0uNX4dVXX+3xSc8777w+FUNEqaezf1JNewj1njA0GiDXltpbmx+oqi2IZ9dV4r/lzRAANABOGZ2H7x1XipIca7LLIzqkUESBLxyF3LGp3WAeRjqSHoeZCy64oEf345wZoszhCUVR0xZEnTcMVY21HkiXDtC17SH8a30lPtzVBLVjqt/Mkbm49PhSlOXaklsc0SF8cxgp32lCodOMLKshbX72kqHHYUZV1f6sg4hSiC8cRU1H/6SIIpCTRv2T6j1hPLu+Eh/sbIyHmBNH5OD7x5dieJ49ucURdSM+jCTJ0Gk4jNQXfJWIKC4gyahtD6G2PYSwrCDLYkRemjSaa/SG8dyGKqza0QilI8UcNywb3z++DKMKGGIo9YSjCryh2DCSzaTHiDwbcu2xYaR0mVCfKnr8W+qRRx7BT37yE5jNZjzyyCOHve+NN9541IUR0cCq94Sxu9EHv6Qgy2JATpr0T2r2S3huQxXe3d4AuSPEHFuajctOKMWYQkeSqyPqKqqo8IdlBGUZZj2HkRJFIw61ccw3DB8+HBs2bEBubi6GDx9+6BNqNNi7d2/CCjxaXq8XLpcLHo8HTqcz2eUQpRxVFahsDWB3YwBGvTZttuxv8Ut44fNqvLWtPh5ippZk4fvHl2K8O3V/1juHFDQaDQw6DQw6bdpsMEh9881hJKcltrEkh5EOrzfv333aZ4Z7zhBlhoisYk+TD/tbgsiypMduoW3BCF7cWI03t9UjosTm8k0qduKyE8owaYgrydUdmhAC3o5dWh1mPVQhIIWV+NcgENt92KjTwqDTwqjXQq/VpE07CDpYOBrb1C6qCNjNHEbqT0f9m6vzwg5/4IjSSzAio7zBjzpPGHl2U8pf4vaEonjp82q8vrUOETkWAMa7nbjshFJMHuJK6d9BfkmGJxSB3aTHeLcDRS4ztBoNIrIKSVY7/qsgIMXCTkRWEQzJkBUBIQCNBtBrYwGn82pOuiyNH2zkjtVIwWhsGCnPbkKRi8NI/a3PYebvf/87/vznP6O8vBwAMHr0aNx888245pprElYcEfWP9mAEO+p98IQiKb97rzcUxcuba/DallqEo7EQM7bQge+fUIppJVkpHWKCERltwQgsRh1GFzhQnGWBxfj1G5pBp0V3U5MisoqIokKKxq7chCMKAhEZfin2uT8iQ1EEBAQ0iF3N0eu0HVd1NGmzkWGmUIVAUFLgk6LQdgwjDc93IctqgN2kT+l/o5miT2Hmrrvuwp/+9CfccMMNmDFjBgDg008/xS233ILKykrcc889CS2SiBKnwRvGrgYfIrIKt9OSsr9o/WEZL39Rg1c31yIUje1dNSrfjstOKMX0suyUrRsAJFlBayACg06DYbk2DM2x9mpuhFEfuwrzzccIIWIhp+NqTkRWEY4q8EsyApKCsKzAK6lQFBXQaKDF1/NyYld1tCkdXNNNl2Ekkw7Dcm3Ic3AYKRl6PAH4QPn5+XjkkUdw6aWXdjn+r3/9CzfccAOam5t7dJ4lS5bgpZdewo4dO2CxWHDSSSfhgQcewNixY+P3mT17NtasWdPlcddeey0ef/zxHj0HJwATxaiqQFVbEOWNfhi1WmTbUnOib0CS8eoXtXhlcw0CkViIGZ5nw2UnlOL4YTkpHWKiiorWQATQAEVOM0qyrXBZDQPy3EIISN8YtgpHFfjDCkIRBRFFQVQRkFUBDQBtfH7O18NWfAM+MllR4ZNkBCOxYaRsmzG+Gild9mJKF/0yAfhA0WgU3/rWtw46Pn36dMiy3OPzrFmzBgsXLsRxxx0HWZbxq1/9CmeeeSa2b98Om+3rHTp//OMfd7naY7VyC3Ki3ogqKvY2BbCv2Q+nJTVXUAQjMt7YUoeXNtXAL8V+j5TlWPH9E0px4ojclF7xo6ixvlWKUFHgMGNotgU5NuOABi+NRgOzQdftG6qqdlzRiaqQFAVSNHZFxydFEY6oCERi83NUocYmImti4cZwwBydVH79+5sQAoGOYSSNRgOHWY9huc74aqRUDtiDRZ9+o/3whz/E0qVL8ac//anL8SeffBKXXXZZj8/z1ltvdfn86aefRkFBATZu3IhTTz01ftxqtaKoqKgvpRINeqGIgl0NPtR5wsi1mVLur8dwVMF/ttbhxc+r4Q3HQkxJtgWXHl+KmaPyUvpNVFEF2oMRSLKCPIcJJTlW5NlMKdc3R6vVwKztDDpdrxQpqoAkK10mIwcjsaaGkqzCH45d0RGITUbWdw5bdVzNMegyd8VVOKrAF5YRVVXYjLFhpFy7EVlWI69ipZgeh5lbb701/v8ajQZ/+9vf8M477+DEE08EAKxduxaVlZW4/PLL+1yMx+MBAOTk5HQ5vnz5cvzzn/9EUVER5s+fj1//+teHvDojSRIkSYp/7vV6+1wPUbrzBKPY2eBFayCCQoc5pSaGSrKCN7fV48WN1WgPRQEAxS4zLj2+FKeMzk/pNwshBDyhKAIRGVlWI8a6HWnVQfxAOq0GVqMe3W0vJCsHDlvF/uuXoghEFEhRBaGo3BF0YgzaWLjpnJ+TjkvLDxxGMum1yLWbOIyUBno8Z+a0007r2Qk1Grz//vu9LkRVVZx33nlob2/HRx99FD/+5JNPoqysDMXFxdiyZQtuv/12HH/88XjppZe6Pc/dd9+NxYsXH3Scc2ZosGnsmOgbjqrId5hS5gpHRFbx9pf1eH5jFdqCsRBT5DTje8eVYPbYgpQPMb5wbPMzp1mP0lwrChxmGPXpF2KOVlTpOj9HOmAickRREVVURJXY24u2Y2l555WcztVXqUIIgUBHh+rOYSS3y4xsmxEODiMlTW/mzPRpAnBPVVdXo7i4GFrtkf/RXnfddXjzzTfx0UcfYejQoYe83/vvv485c+Zg9+7dGDly5EG3d3dlpqSkhGGGBg1VFahuC2J3kx86jRY5KTLRN6qoeHd7A57bUIWWQAQAUOAw4bvHleD0sQUp9ebWnYAkoz0Ygc2sR0m2BUUuC/9S70bniqsDr+Z0rrgKRmLDWVFVhSyrgAbQouskZKN+4CYifz2MpMBq1KPAYUJex6Z2qf7vcTDo9wnAPTVhwgRs3rwZI0aMOOz9rr/+erz++uv48MMPDxtkAOCEE04AgEOGGZPJBJMpPXrKECVaVFFR0RTAvpYAHCYD7ObkT/SVFRXv7WjEvzdUockX+0Mjz27EJd8qwdzxhSm/+Vs4qqA1KMGs12FUoR3FWRZY06T5ZjJoNBqY9DqY9Dp8szNW54qrzsnIEUVFKBK7mhOUFIRkGd6wgCJi83N0Wg0M2q+HrRKx4kpRBXzh2BBh5zBSgdOE7DTqDE8H69efyCNd9BFC4IYbbsDKlSuxevXqw/Z86rR582YAgNvtTkSJRBkjHI1N9K1tD6XERF9FFfhgRyOe3VCJBm8sxORYjbjkW0Nx5sSilA8xEVlFa1CCTqtBaY4VQ7KtcJoHZpl1puqy4src9bb4iquOYauIrCIUUWJBJxKbwxJVYkEHENBpDpiErD/8iqvOYSS/FBvWdJgNGN+xGonDSJkhqX9eLFy4ECtWrMArr7wCh8OB+vp6AIDL5YLFYsGePXuwYsUKnHPOOcjNzcWWLVtwyy234NRTT8XkyZOTWTpRSvGGo9hV70OzP4IChzmpQUFRBT4sb8K/1lWizhMGAGRZDfjO9KE4a2JRym/pHt8rBkCRK7ZXTFaaNN9MZ0dacRU5IORIHSuu/JKMcFSFX1IQlQUEVAihgV6riS0r12oRiirxYaSSbCvyHCZkcRgp4yQ1zCxduhRAbGO8Ay1btgxXXnkljEYjVq1ahYceegiBQAAlJSVYsGAB7rzzziRUS5SamnwSdjb4EIrIcHf0/EkGRRX4eHczVqyrRE17CADgNOtx8fShmDfJnfQrRUeiqAJtwQiiiooChwlDc6zIHeC9Yqh7Oq0GFqOuSyuITrLSddhKiqodrR9iS8tzbAYUuhwcRspwSQ0zRxqGKikpOWj3XyKKEUKgpj2E8gYfNNCgyGlJSh2qEPh0TwtWrKtEZWsQAOAw6XHRsUNx7jHubt+AUokqBDzBKIJRBXl2I0pzrMi1m1J6VRV9Td+xMqq7i2dRRU3L5eHUe/0aZvgPiKh/yIqKfc0B7G0OwGbUw2kZ+LkcQgh8VtGKFWv3Y19LLMTYTDpcOG0o5k92p/wkWSEEvGEZfimKLKsRowrtKHCk514x1L1Un5dFiZPUCcBE1HvhqILdjX5UtwWRYzUN+JUPIQTW72vD8nX7sbcpAACwGnU4f0oxzps6JCVbJXyTPyzDE47AYTZgYrETBU5zys/lIaJD69ffOtu3b0dxcXF/PgXRoOILR7GrwYcmr4QC58BO9BVC4PPKdixfux/ljX4AgMWgw/wpxbhgajEcabDSJxiR0RaMwmrUYUyhA8VZ3CuGKBP0OMxcdNFFPT5p5+68JSUlva+IiLrV7Jewq94HvySjyGUZsDkdQgh8Ue3B8rX7saPeBwAw6bX49uRiXDhtCFxJGOLqrXBUQWsgApNeixF5NgzJtsCWBleQiKhnevzT7HK5+rMOIjoEIQRqPWGU1/sgENv6f6Dmo22tiYWYL2tjPc6MOi3OOcaNBccOSYvlyhFZRVswAo0WKMmxYEi2NS3CFxH1To/DzLJly/qzDiLqhqIKVDT7UdEchMWgG7A34i9rPVixrhJbqmPNXw06DeZNcmPBsUNTpj3C4ciKitZgBKoACp2mjr1iDFyUQJSheJ2VKEVJsoI9jX5UtQWRZTEOyOqgHfVerFhbiU1V7QAAvVaDsyYW4TvThyLXnvptQhRVoD0YQUSJNdccmh3bK0bLZdZEGa3Pvx1feOEFPPfcc6isrEQkEuly2+eff37UhRENZn5Jxq56Hxp94QHZ0bfRG8YTH+7Fun2tAGKblJ0xvhDf+dZQFDjMR3h08qlCwBOKIhiRkWMzYlyOE/kO7hVDNFj06TfkI488gquuugqFhYXYtGkTjj/+eOTm5mLv3r2YN29eomskGlRaAxFsq/agyS+hyGnp1yCjCoHXt9Ri4b8+x7p9rdBqgDMmFOLxH0zHwtNGpXyQER0hps4ThlGnxTFDszCtNBtFLjODDNEg0qcrM4899hiefPJJXHrppXj66afxy1/+EiNGjMBdd92F1tbWRNdINCgIIVDnCaO8wQdZFXD380Tf6rYg/vL+bmyvi03uneB24vrTR6Ek29pvz5lIfkmGJxSB3aTHeLcDRS7uFUM0WPUpzFRWVuKkk04CAFgsFvh8seWaP/zhD3HiiSfi0UcfTVyFRIOAogrsbwlgb1MAZoMOObb+m+grKypWbq7Bv9ZVIqoIWAw6XDGjDPOOcSetr1NvxPaKicBi1GF0QWyvmFRvmUBE/atPYaaoqAitra0oKytDaWkpPvvsM0yZMgUVFRXc9Zeolzon+la2hpBtNfTrRN+9TX48/H55fOfeY0uzsHD2KBQ4U3s4CYi9Tq2BCAw6DYbl2jA0x5oWuw0TUf/r02+C008/Ha+++iqmTZuGq666CrfccgteeOEFbNiwoVeb6xENdgFJxq4GHxq8YeTbzTDq+2d+TERW8ez6Srz4eTVUAdhNevz4lOE4bWxByi9XjioqWgMRQAMUZ1lQkm2Fy8q9YojoaxrRh0spqqpCVVXo9bEs9Oyzz+KTTz7B6NGjce2118JoTJ19KLxeL1wuFzweD5xOZ7LLIYprC0Sws8EHTzCKQmf/TVj9qs6LR94vR3VbCAAwc2Qurj11JLJTfL8YRRVoDUSgCBUFDjOGZluQYzOmfPgiosTozft3n8JMZWUlSkpKDvqlIoRAVVUVSktLe3vKfsMwQ6lGCIEGr4SdDV7IskC+w9Qvb9ChiIJ/fLYPr2+pgwCQZTXgulkjcdLIvIQ/VyJ17hUTlhXkO0woybEiz2biXjFEg0xv3r/7NMw0fPhw1NXVoaCgoMvx1tZWDB8+HIqi9OW0RBlPVQUqWwPY3RiAUa9FgbN/NqLbVNmGRz/YjUafBACYM64A15w8AnZz6s4x6VxmHYjIyLIaMdbtQL7dBP0ANtMkovTUp99sQohu/5L0+/0wm1N/IiFRMkRkFXuafKhsDcFlNvRLo0N/WMbfP96LVV81AgAKHCYsPG0Uji3NTvhzJZIvHIU3LMNp1mPSEBcKHP03f4iIMk+vfpveeuutAACNRoNf//rXsFq/3o9CURSsXbsWU6dOTWiBRJkgGJFR3uBHnSeMPLuxX/ZD+XRPM5au2YO2YBQaAOdOduPyE4el9LLlgCSjPRiBzazHuCI7ilwWmA2pWy8RpaZehZlNmzYBiF2Z2bp1a5eJvkajEVOmTMFtt92W2AqJ0lx7MIId9T54QhEUOS0Jn+jbFozgiQ/34uPdzQCAIVkW3DhnNCa4U3eOWDiqoDUowazXYVShHcVZlgHpPUVEmalXvz0++OADAMBVV12Fhx9+mBNqiY6gwRvGznofoooKt9OS0Im+Qgh8sLMRT/23An5JhlYDLDh2KL53XGnKDtFEZBWtQQk6rQalOVYMybbCaeYyayI6On36U2jZsmXx/6+urgYADB06NDEVEWUAVRWoaguivNEPo1ab8B5Hjb4w/vrBHnxe2QYAGJFnw41zRmNkvj2hz5Mo8b1iABS5zCjJtiLLmtpLw4koffQpzKiqinvvvRcPPvgg/H4/AMDhcODnP/857rjjDmi1qflXIdFAiCoq9jT6sb8lAKfFmNBdalUh8Oa2ejzzyT6EogoMOg0uPa4UF04bkpKrfhRVoC0YQVRRUeAwYWiOFbncK4aIEqxPv2XvuOMO/P3vf8f999+PmTNnAgA++ugj3H333QiHw7jvvvsSWiRRughFFOxq8KHOE0auzZTQyaw1bSH85YNyfFkbaww5vsiBG+aMTsnGkKoQ8ASjCEYV5NmNKM2xItduYidrIuoXfdo0r7i4GI8//jjOO++8LsdfeeUV/OxnP0NNTU3CCjxa3DSPBoonGMXOBi9aAxEUOswJu1KiqAIrN9Vgxbr9iCoCZoMWl584DOdOTr3GkEIIeMMy/FIUWdZYiClwcK8YIuq9ft80r7W1FePGjTvo+Lhx49Da2tqXUxKltUZvGLsafAhHVbhdloSFjIpmPx5+rxx7OhpDTi3JwvWnjUJhCjaG9IdleMIROMwGTHA7Uegy98sSdCKib+pTmJkyZQoeffRRPPLII12OP/roo5gyZUpCCiNKB6oqUN0WxO4mP3QabcJCRlRR8e/1VXjh82ooqoDNpMM1J4/AnHGp1xgyGJHRFozCatRhTKEDxVncK4aIBlafwszvf/97nHvuuVi1ahVmzJgBAPj0009RVVWF//znPwktkChVRRUVFU0B7GsJwGEyJKxVwI6OxpBVHY0hZ4zIxXWzUq8xZGyvmAhMOi1G5NkwJNvSL7saExEdSZ97M+3atQt//etfsWPHDgDARRddhJ/97GeQZTmhBRKlonA0NtG3tj2UsIm+4aiCf3y2H699URtvDPnTU0di5qjUagwZkVW0BSPQaIGSbAuGZFvhsnCvGCJKnj5NANbpdN02mmxpaUFBQUFKNZrkBGBKNE8oivIGH5r9ERQ4TDAkYHLr5qp2/OX98nhjyNPHFeCak4fDkUIbysmKitZgBKoACp2mjr1iDCk37EVEmaHfJwAfKv+w0SRluiafhJ0NPoQiMtwu81FP9PVLMv73owq8+1UDACDfYcLC2aMwvSx1GkMqqkB7MIKIoiLfYcLQ7NheMVousyaiFNHnRpN33XUXG03SoCGEQHVbCLsbfdBAgyKn5ajP+dneFixdvQetwdjOuOce48blM8pSpkeRKgQ8oSiCERk5NiPG5TiR7+BeMUSUethokugIZEVFRXMAFc0B2Ix6OI9yfkhbMIInP9yLjw5oDHnD6aMwsdiViHKP2td7xcjIshgwcmhWwobTiIj6Q1IbTS5ZsgQvvfQSduzYAYvFgpNOOgkPPPAAxo4dG79POBzGz3/+czz77LOQJAlnnXUWHnvsMRQWFh7VcxP1RDiqYHejH9VtQeRYTbAY+z7RVwiB1bua8NSHe+HraAx50bSh+N7xJSmzH4tfkuEJRWA36THe7UAR94ohojTQpwnAiXL22Wfje9/7Ho477jjIsoxf/epX2LZtG7Zv3w6bzQYAuO666/DGG2/g6aefhsvlwvXXXw+tVouPP/64R8/BCcDUV75wFDvrfWj2SShwmo/qykSTT8Jjq3djw/5YY8jheTbcePpojCpIfmNIIQT8kgxvKAqLSYehWVYUZ1mOKrgRER2t3rx/JzXMfFNTUxMKCgqwZs0anHrqqfB4PMjPz8eKFStw8cUXAwB27NiB8ePH49NPP8WJJ554xHMyzFBfNPsl7Kr3wS/JKHCY+zxPRBUCb22rx9MdjSH1Wg0uPb4UF6VAY0hVCHhDUQQiCuwmHYqzLChwmhPaGJOIqK/6fTVTf/F4PACAnJwcAMDGjRsRjUYxd+7c+H3GjRuH0tLSQ4YZSZIgSVL8c6/X289VUyYRQqDWE0Z5vQ8CQJHT3Oelx7XtITzy/teNIccVOXDj6aNRkpPcxpCdq5MkRYHLbMTEYhvyHYltiklENJBSJsyoqoqbb74ZM2fOxKRJkwAA9fX1MBqNyMrK6nLfwsJC1NfXd3ueJUuWYPHixf1dLmUgRRWoaPajojkAi0Hf543gFFXglc01WL62EhFFhUmvxeUzhuHcY9xJXQkUVWKb3SmqQLbNiDFZDuTZTTDqObGXiNJbyoSZhQsXYtu2bfjoo4+O6jyLFi2KLyEHYldmSkpKjrY8ynDhqIK9TX5UtQWRZTH2eXl0RXMAj7xfjt2NfgCxxpALTxuFoiQ2hgxHFXhCUQBArt2IIVkW5NiMSR/mIiJKlJQIM9dffz1ef/11fPjhhxg6dGj8eFFRESKRCNrb27tcnWloaEBRUVG35zKZTDCZTP1dMmUQvyRjZ70XTT4JBY6+TfSNKiqe21CF5zd2NIY06vCjk4dj7vjCpO2QG4zIaA9FoddpUOA0YUiWBdlWbnZHRJknqWFGCIEbbrgBK1euxOrVqzF8+PAut0+fPh0GgwHvvfceFixYAADYuXMnKisr4w0uiY5Gi19CeYMfnnAURU5Ln4aBdtR78cj7u1HVGgQAnDgiBz89dSRy7QMfqoUQCEgKPOEozAYtynKsKHKZ4bKw7QARZa6khpmFCxdixYoVeOWVV+BwOOLzYFwuFywWC1wuF370ox/h1ltvRU5ODpxOJ2644QbMmDGjRyuZiA5FCIE6TxjlDT4oKuDuw0TfcFTBPz/bj1c7G0NaDLh21kjMHJk74MFBFQK+sAy/FIXNpMeoAhsKneaU6u1ERNRfkro0+1C/8JctW4Yrr7wSwNeb5v3rX//qsmneoYaZvolLs+mbFFVgf0sAe5sCMBt0fZro+0V1Ox59fzfqvWEAwGlj83HNySOOenfg3lLUWMuBUFSG02zAkGwLChxm7hFDRGkvbfeZ6Q8MM3QgSVawp9GPytYQsq2GXk/09Usyln1cgXe2xxpD5tlNWHjaSHyrLKc/yj2kqKLCE4oiIitwWY0oybEiz27kbr1ElDHSdp8Zov4UkGTsavChwRtGvt3c6yXJayta8NjqPWgNxBpDnnOMG1cMcGNISVbQHoxCQCDHZsSQLCdy7Ub2TSKiQY1hhgaFtkAEOxt88AR7P9HXE4riyQ/34MPyWGPIYpcZN5w+GpOGDFxjyFBEQXsoAq1Wg3yHCcUdy6vZwZqIiGGGMpwQAvXeMHY1+CDLAm5Xzyf6CiGwZlcTnvzvXvjCscaQF04bgkuPLx2w4Ry/JMMbjsCk02FotgVulwVZVq5MIiI6EMMMZSxVFahsDWB3YwAmvRYFzp4vlW72S/jrB183hhyWa8WNp4/G6EJHf5UbJzpWJvmkKKxGPUbk2VHoMsPJlUlERN1imKGMFJFV7GnyobI1BJfZAFsPmyeqQuDtL+ux7OOvG0N+77gSXHTs0H6fl6KoAt5wFMGIDLvZgHFFDuQ7zD2unYhosOJvSco4wYiMXfU+1HulXq3wqW0P4dEPdmNrTazh6dhCB26cMxql/dwYUu5YmRSWVWRZDRie52LjRyKiXmCYoYzSHoxgR70PnlCkxxN9u28MWYZzjynu1wm2UUVFWyACRcRWJo3NtiDXxsaPRES9xTBDGaPBG8bOeh+iigq309KjSbL7WwJ4+L1ylHc0hpwy1IXrTxuNIlf/NYY8sPFjvsMEd5YZuTYTVyYREfURwwylPVUVqGoLorzRD6NWiwLHkYNIVFHxfEdjSLmjMeTVJw/HGf3YGDIYkdEejMKg16DIZUZxlgVZFgMbPxIRHSWGGUprUUXFnkY/9rcE4LQYYe/BZNldDT48/F45KjsaQ54wPAfXzeqfxpBCiNjy6lAUFqMOw/KsKHJa4LToubyaiChBGGYobYUiCnY1+FDnCSPXduQJs+GoguVrK/HqFzVQBeCyGHDtqSNw8qi8hAcLVQh4Q1EEIgrsJh1GFzpQ6DL3KGwREVHv8DcrpSVPMIqdDV60BiIodJihP8Ky6S3V7fjLAY0hZ3c0huxLk8nDUVSB9mAEkqLAZTZigtuKAqeZK5OIiPoRwwylncaOHX3DURVulwXaw1xVCUgyln2yD29/WQ8AyLMb8bPZo3DcsMQ2howqKtqDUchqbHn1mGwH8uxcmURENBAYZihtqKpAdVsQ5U1+6DVaFDoPP9F3XUUrHlu9Gy0djSHnTSrClScNS2hjyK8bP8aCUnGWBbk24xGvFBERUeIwzFBaiCoqKpoC2NcSgMNkgN186H+6scaQe/FheRMAwN3RGPKYBDaGDEZktIei0Os0KHB2NH60GrkyiYgoCRhmKOWFIgrKG32obQ8ddqKvEAIfljfjyQ/3wNvRGPL8qUPw/eNLEzJnRQiBgKTAE47AbNChNCfW+NFlYeNHIqJkYpihlNYaiGBXgw/twSgKHOZD9kdq8Ut4bPUerNvXCiDWGPKG00djTAIaQ6odjR/9UhQ2kx6jCuwodJrhYONHIqKUwDBDKUlVBWraQ9jT5IeiCrhd5m4n+goh8M72BvzvxxUIRmKNIS/5Vgkunn70jSEVNba8OhSNNX4c73Yi32FK6JwbIiI6evytTCknHFVQ0exHZUsQdpMBubbur4DUeUJ49P3d2NLRGHJMoR03nj4aZbm2o3p+WVHRHopCkhVkWY0YURBr/NjThpVERDSwGGYopXiCUZQ3+tDsl5Bn7z5AKKrAa1/U4h9r9yMiqzDqtfjhiWWYP/noGkNGZBVtwQgEYo0fh2Q5kWs3HvUVHiIi6l8MM5QShBCo84Sxu9GPiKwesuP1/pYAHnm/HLsaYo0hJw9x4frTR8HtsvT5uUOR2KRejUaDfEfHyiSbkY0fiYjSBMMMJV1EVrGvOYD9rQGY9bpu94+JKipe2FiN5zZUQVYFrEYdrp45HGdO6HtjyIAkwxOOwKjTYkhWbGVSlpUrk4iI0g3DDCWVLxzF7kY/GrwScm3GbpdQ72rw4S/vl2NfS6wx5PHDcvCz2X1rDCk6Vib5pFjjx+G5dhS6zAlva0BERAOHYYaSQgiBRp+E8kY/ApKMIqe522Gdt7bVY+ma3VAF4DTrce2pI3HK6N43hlRUAW84ilBUgc2kx9hCBwqcZtjY+JGIKO3xNzkNOFlRsb8liIrmAAw6LYq7me8ihMA/PtuP5zdWAwBmjsrDdbNG9voKiqyo8ISiCMuxnknD82zIdxy5wzYREaUPhhkaUMGIjN2NftS2h5BtNXa7Z0tUUfHIe+VYvSvWjuDS40pw6fGlvboaE1ViK5MUVSDbZsTYbAtybWz8SESUiRhmaMA0+yXsbvDDE44ccjdfvyRjyX++wpYaD3RaDa6fPQpzJxT2+DnCUQWeUBTAAY0f7SauTCIiymAMM9TvlI5u13ua/NBAA7fT0u1VlkZfGItf247K1iAsBh3+Z944HFua3aPnCEZktAejMOg1KHKZ4XaZkc3Gj0REgwLDDPWrcFTB7kY/atpDcJoNsB9iwu2eJj/ueW07WoMR5NiM+M23J2BEvv2w5xZCwC/J8IZlWAxalOVa4XZZ4LToubyaiGgQYZihftMWiKC80YdWfwQFzkM3idy4vw0PvLUDoaiCshwrfjN/IvIdh152rYpYz6RARIHNpMPogtjy6kMFJSIiymz87U8Jp6oCtZ4Q9jT6ISsC7ixLt00iAeCd7fX46wexpdeTh7qwaN74Q4YSRRUdK5NkOEwGTHA7kO8ww2LkyiQiosGMYYYSSpIVVDQFUNkahNWoR84hmkQKIbB8XSX+vb4KAHDa2HzccProbq/eKKpAayCCqKIg22bEqMIs5NmNbPxIREQAgKSuU/3www8xf/58FBcXQ6PR4OWXX+5y+5VXXgmNRtPl4+yzz05OsXREnlAU22o82NcSQI7NeMg9YaKKij+v2hUPMt89rgS3zB1zyCBT7w3DadFjamk2ji3NxpAsC4MMERHFJfXKTCAQwJQpU3D11Vfjoosu6vY+Z599NpYtWxb/3GTq/Rb21L+EiAWO3Y1+hKPKIZtEArF+SEve/ApfVHug1QA/mz0KZ00s6va+qhCo94ZQ6DRjvNvJje6IiKhbSQ0z8+bNw7x58w57H5PJhKKi7t/sKPmiSqxJ5L6WIEx6LYqch+5e3eSTsPi1L7G/Y+n17WePw/Sy7pdeq0Kg3hNGnt2EsUUOBhkiIjqklJ8zs3r1ahQUFCA7Oxunn3467r33XuTm5h7y/pIkQZKk+Oder3cgyhyU/JKM3Q0+1HvDyLGaDjsRt6LZj8WvbUdLIIJsqwG/mT8RIw+x9FoIgQZvGNk2A8a5nd3uEkxERNQppfd2P/vss/F///d/eO+99/DAAw9gzZo1mDdvHhRFOeRjlixZApfLFf8oKSkZwIoHj0ZfGF9UtaPBK6HIaTlskNlU2YbbX9yKlkAEJTlW/PHiKYcNMo0+CU6LAePdTi63JiKiI9IIIUSyiwAAjUaDlStX4oILLjjkffbu3YuRI0di1apVmDNnTrf36e7KTElJCTweD5xOZ6LLHnRkRUVVaxB7mgPQazTIsRkPu0Hdqq8a8OgHu6GoAscMceFX88bDbj50QGn0hmEx6jCx2AWXtXdNJYmIKHN4vV64XK4evX+n1Z+9I0aMQF5eHnbv3n3IMGMymThJuJ90Noms84SQZem+SWQnIQSeXV+FFesqAQCzxuTjpjndL73u1OSTYDLqMN7tZJAhIqIeS6swU11djZaWFrjd7mSXMui0+CWUN/rRHjx0k8hOsqLi0Q92470djQCA70wfih+cWHbIjfM6z6/XaTC+yIFsmzHh9RMRUeZKapjx+/3YvXt3/POKigps3rwZOTk5yMnJweLFi7FgwQIUFRVhz549+OUvf4lRo0bhrLPOSmLVg4t6QJNIITQodnXfJLJTMCJjyZs7sLmqHVoN8NNZIzFv0uHDZ1swAmiAcW4Hcu28qkZERL2T1DCzYcMGnHbaafHPb731VgDAFVdcgaVLl2LLli145pln0N7ejuLiYpx55pn47W9/y2GkARKOKtjb5EdlaxAus/Gwc12A2NWVu1/7Mr5M+/azx+G4YTmHfYwnFIWiqphQ7EKBw5zI8omIaJBImQnA/aU3E4joa+3BCMob/WjxS8i3m2HUH37h277mABa//iWa/RFkWQ2469wJGF3oOOxjvKEoQrKCCW4nirMOvT8NERENPhk7AZj6nxACtZ4wdjf6EJUF3K5DN4ns9EVVO3735lcIRhQMzbbgN/Mnosh5+KssfklGKKpgbJGDQYaIiI4KwwzFRWQVFc0B7G8JxJpEOo+8ouj9HQ145P3Y0uuJxU7ccc54OMyHf1wwIsMvRTGm0IGh2QwyRER0dBhmCADgDUexu8GPRl8YuTbTEdsHCCHw3IYq/HNtbOn1qaPzcPMhmkUeKBRR4AlFMbrAjtIc62EnExMREfUEw8wgF2sdIGF3ow/ByOGbRHaSFRVL1+zBO9sbAAALjh2Ky2ccfuk1EJtQ3BaKYGS+DWW5NgYZIiJKCIaZQSyqqNjfEsC+5iCMOi3criMP+QQjMh54ayc+r2yDVgP85NSROPeYI+/7I8kKWoMShufaMTzPDu0RAhMREVFPMcwMUgHp6918s62H3823U4tfwj2vb8fe5gBMei1+edZYHD/80E0/O0UVFc1+CWW5VowssB/xyg8REVFvMMwMQo2+MPY0+uENySh0mKE/wjwXANjfEsDi17ejySchy2LAr789AWOOsPQaiAWZRp+E0hwrRhc4GGSIiCjhGGYGEUUVqGoNYE9zADpo4HaZezRvZUt1O373n68QiCgYkmXB3fMnosh15A3uZEVFoy+MIVlWjCpw9Cg0ERER9RbDzCARiijY0+RHdVsIWRYDbKaefetX72zEw++VQ1YFxruduPOc8XBajrxkW1EFGrxhuLMsGFNkP+Kme0RERH3FMDMItAYi2NXgQ3swigKH6YjLp4HYKqfnN1bjH5/tBwDMHJWHW+eO6VEoUVSBem8IhS4zxhY5YNIffpk3ERHR0WCYyWCqKlDTHsSexgAUIeB2mY+4fBqIhZGla/bg7S/rAQAXTB2Cq2YO69FjVRG7IpPvMGFckfOI+9UQEREdLYaZDBWOKtjb7EdVSxAOs+GIu/J2CkUU/P7tHdiwvw0aAD8+ZQTmTynu0WNFR5DJsRsxrsgJi5FBhoiI+h/DTAbyBKMob/Sh2S8hz27q8TBPWyCCxa9/iT1NARh1Wtx21ljMGHHkpddALMg0+iQ4LQaMK3L0eE4OERHR0eI7TgYRQqDOE8buRj8istqj3Xw7VbUGcfdrX8YCiVmPX397AsYV9bzLeKNPgs2kw3i3s8dXgYiIiBKBYSZDRGQV+5oD2N8agMWgR+ERulYfaFuNB/f+ZzsCkoJilxl3nzexR7sBd2rySTAbY0HG1YOVTkRERInEMJMBfOEodjf60eCVkGsz9mrS7Ye7mvDnVbsgqwLjihy489wJvQokLX4JBr0GE9xOZFmNfSmfiIjoqDDMpLHOeSrljX4EJRlFTnOPh5WEEHhpUw2e/mQfAGDGiFz8/MwxvVpG3RaIQKMBxhU5kWNjkCEiouRgmElTsqJif0sQFc0BGHrYJLKTogo88eEevLkttvT6vCnFuHrm8F61GmgPRqAIFROKXch3mHpdPxERUaIwzKShvjSJ7BSOKvjD2zuxbl8rNAB+dPJwnD91SK+e3xuKIqKqmOB29mpuDhERUX9gmEkzTT4Jexr98IQjPW4S2aktGMFvX9+O8kY/jDotbj1jDGaOyuvV8/vDMkJRBePcjl5dDSIiIuovDDNpQlEFqtuC2NPkhwYauJ2WHjWJ7FTdFlt63eCV4DDr8etzJ2C8u+dLr4HYFSF/JIqxhQ4MyWKQISKi1MAwkwbCUQW7G2NNIl0WA+y93JDuy1oP7n3jK/glGW6XGXfPn4jiXoaRYESGNxzFmEI7SnKsvQpSRERE/YlhJsW1BSIob/Sh1R9BgdPcoyaRB/pveWzpdVQRGFvowJ3nju/1EupwVEFbMILRBQ6U5tgYZIiIKKUwzKQoVRWo9YSwu9EPRRFwZ1l61OixkxACKzfVYFnH0usThufgtjPH9rrxoyQraAlIGJlvx/A8G7S9WPFEREQ0EBhmUpAkK9jb5EdVawg2ox65tt7tqquoAn/77168vrUOAPDtY9y45pQRvVp6DcR2FW72SxiWa8OIfDuDDBERpSSGmRTjCUWxu9GHJl/vmkR2CkcV/PGdnVhb0QoA+NHM4Th/anGvh4aiioomv4TSHCtGFdh7HYSIiIgGCsNMihBCoN4baxIpRXvXJLJTezCC376xHbsa/DDoNLj1jLE4uZdLr4HYhnyNvjCGZlsxutDRq+XfREREA41hJgVElViTyH0tQZj12j5tRFfTFsLdr32Jem8YDpMed5w7HhOLXb0+j6IKNPjCcLssGF1o7/WEYyIiooHGMJNkfknG7gYf6r1h5FhNsBh7N6wEAF/VefHbN7bDF5ZR6DTh7vkTMTTb2uvzKKpAnTcEt9OMsUWOXg9xERERJQPDTBI1esMob/TDL8l9GlYCgI93N+NP7+5CRFExusCOX397ArL70L1aFQINvhAKHCaMLXL2etUTERFRsjDMJIGsqKhsDWJvcwB6jQZup7lPe7e8srkGf/+oAgLA8cNy8Iuzer/0Gvh6vk6OzYTxbmefrg4RERElC8PMAAtGvm4SmWXpXZPITooq8L8fV+DVL2oBAOcc48ZP+rD0GogFmQZfGC6LAePdzj7VQ0RElExJnd354YcfYv78+Sguji0dfvnll7vcLoTAXXfdBbfbDYvFgrlz56K8vDw5xSZAs1/ClmoPattDyLeb+xQcJFnBA2/tiAeZq04ahp+e2rcgAwBNfgkOkwETip29bpNARESUCpIaZgKBAKZMmYK//vWv3d7++9//Ho888ggef/xxrF27FjabDWeddRbC4fAAV3p0FFWgsiWArdXtCEoKil2WPq0S8oSiuGPlNny6twV6rQa/OHMsLjp2aJ/bCzT6wjAbdBjvdsJp7t3GfERERKkiqX+Kz5s3D/Pmzev2NiEEHnroIdx55504//zzAQD/93//h8LCQrz88sv43ve+N5Cl9lk4GtvNt7I1CJfZCLu5by95bXts6XWdJwybSYc7z5mASUN6v/S6U7NfglGvxXi3Ey4rgwwREaWvlN1EpKKiAvX19Zg7d278mMvlwgknnIBPP/30kI+TJAler7fLR7K0ByPYWuNBZUsQ+XZzn4PMjnovfvHCF6jzhFHgMOEPC6YcVZBpDUSg1QLj3U7k2Hq/8omIiCiVpGyYqa+vBwAUFhZ2OV5YWBi/rTtLliyBy+WKf5SUlPRrnd1RVYGa9hC+qGqHJxiFO8sCo75vL/Wne5pxx8pt8IZljMy34Y8XT0FJTu/3kOnUHoxACIHxRU7k2U19Pg8REVGqSNkw01eLFi2Cx+OJf1RVVQ3o80uygl0NPnxZ44FOG9vNtzfdrg/02he1WPLmDkQUFd8qy8aSCycj+yiupHhCUURVFePcThT0YZdhIiKiVJSyy1eKiooAAA0NDXC73fHjDQ0NmDp16iEfZzKZYDIl54qDNxxFeUOsSWSuzdTnjedUIbDs4wq8vDm2YunsiUX46ayRR9Xs0R+WEY4qGF/sRJGLQYaIiDJHyl6ZGT58OIqKivDee+/Fj3m9XqxduxYzZsxIYmUHE0Kg3hPGlqp2tAYiKHJa+hxkIrKK37+1Ix5kLp9Rhp/NProgE5Bk+CMyxhbZMSTL0ufzEBERpaKkXpnx+/3YvXt3/POKigps3rwZOTk5KC0txc0334x7770Xo0ePxvDhw/HrX/8axcXFuOCCC5JX9DdEFRX7WwLY1xyEUa9FkbPvYcEbiuLe/3yFr+q80Gs1uGnOaMweW3BU9QUjMrzhKMYU2vvUr4mIiCjVJTXMbNiwAaeddlr881tvvRUAcMUVV+Dpp5/GL3/5SwQCAfzkJz9Be3s7Tj75ZLz11lswm1NjmCQUic2PqfOE+twkslO9J4y7X/sSNe0h2Iw63HHOeBwzNOuo6gtHFbQHIxhV4EBZrq3P+9EQERGlMo0QQiS7iP7k9Xrhcrng8XjgdDoTeu7qtiC21nhQ5DBD34dN8DrtavDhnte3wxOKIt9hwm++PQFlubajqi0cVdASiGBkvg0j8+3QHsUwFRER0UDrzft3yk4AThdaaI4qyKytaMHv396JiKxiRL4Nd507AblHuWQ6IqtoCUgYnmfHCAYZIiLKcAwzSfTGllo8+d+9UAVwbGk2bj977FE3eowqKpr8YZTlWjEy33ZUE4eJiIjSAcNMEqhC4JlP9uGlTTUAgDMnFOK6WSOP6goPAMiKikZfGEOzrRhV4Djq8xEREaUDhpkBFpFVPPTeLvy3vBkA8IMTy3DJ9L43i+ykqAINvjCKsywYU+joUyNLIiKidMQwM4B84Sju+89X+LLWC51WgxtPH43Txx3d0msgFmTqvWG4XbEg09fWCUREROmIYWaA1HvDuPvV2NJrq1GHX80bjyklWUd9XlUINPhCKHCYMbbI0efN+oiIiNIVw8wAKG/w4Z43tqM9GEWe3YjffHsihuUd3dJrIBZk6j1h5NpNGOdmkCEiosGJYaafratoxe/f3gFJVjE8z4bffPvol14DsRYKjb4wsm0GjHM7j3oVFBERUbriO2A/enNbHR5fsweqAKaVZOF/5o1LSOiIBRkJDnMsyNhN/DYSEdHgxXfBfqAKgX98uh8vfF4NAJg7vgALZ49K2FLpJp8Eq1GH8UVOOM2GhJyTiIgoXTHMJFhUUfHwe+VYs6sJAPD940vxveNKEtYXqdkvwWTQYrzbCZeVQYaIiIhhJoH8YRn3/Wc7tnUsvb7htFGYM74wYedv8UvQaTUY73Yi22ZM2HmJiIjSGcNMgjR6Y12vq9pCsBh0WDRvHKaVZifs/G3BCKABxrkdCZlATERElCkYZhJgd6Mf97z+JdqCUeTajPjN/IkYnoCl1508oShkVcUEtwsFDnPCzktERJQJGGaO0rYaD576aC/CURXDcq34zfyJyEvglRNfOIqwrGCC24kiF4MMERHRNzHMHIVXN9fir6t3QxXAlKEuLJo3HrYELpP2SzKCEQVjixwozrIk7LxERESZhGGmjx55rxx/encXAOD0sQW4/vRRCW3uGIzI8IWjGFvkwNBsBhkiIqJDYZjpo/FuJ7QaYN4kN649dUTCll4DQCiioD0YwZhCB0pzrAk9NxERUaZhmOmjMyYU4h8/Oh7+sJLQsBGOKmgNRjCqwI6yXBuDDBER0REkblxkECrLTdyKJQCQZAWtQQkj8mwYnmeHVssgQ0REdCQMMykiqqho9ksozbFiZIEdOgYZIiKiHmGYSQFRRUWjLxZkRhU4GGSIiIh6gWEmyRRVoNEXRnGWGaMKHAldEUVERDQY8J0ziRRVoN4TgttlwdgiB4x6fjuIiIh6i++eSaKoAvXeEApdZowtcsCk1yW7JCIiorTEMJMEqhBo8IaRZzdhXJETZgODDBERUV8xzAww0RFkcuxGjHc7YTEyyBARER0NhpkBJIRAo0+C02LAuCJHQvs4ERERDVYMMwOo0SfBZtJhvNsJh9mQ7HKIiIgyAsPMAGnySTAbY0HGZWGQISIiShSGmQHQ4peg12kwvsiBLKsx2eUQERFlFIaZftYWiECjiXXZzrWbkl0OERFRxkn5MHP33XdDo9F0+Rg3blyyy+oRTygKRagY53Yi38EgQ0RE1B/SYjnNxIkTsWrVqvjnen3ql+0NRSEpCia4nSh0mpNdDhERUcZK/VSAWHgpKipKdhk95g/LCEUVjHM74HZZkl0OERFRRkv5YSYAKC8vR3FxMUaMGIHLLrsMlZWVh7yvJEnwer1dPgZSMCLDH4liTKEdQ7IYZIiIiPpbyoeZE044AU8//TTeeustLF26FBUVFTjllFPg8/m6vf+SJUvgcrniHyUlJQNWayiiwBOKYlS+HSU5Vmg0mgF7biIiosFKI4QQyS6iN9rb21FWVoY//elP+NGPfnTQ7ZIkQZKk+OderxclJSXweDxwOp0JraW6LYgva7wozrIgHFXQGoxgZL4NI/Ls0GoZZIiIiPrK6/XC5XL16P07LebMHCgrKwtjxozB7t27u73dZDLBZBrYlUOSrKAlIGFkvp1BhoiIaICl/DDTN/n9fuzZswdutzvZpQAAZFWgxS9hWK4NI/IZZIiIiAZayoeZ2267DWvWrMG+ffvwySef4MILL4ROp8Oll16a7NIAAFotUJJjxagCO3QMMkRERAMu5YeZqqurcemll6KlpQX5+fk4+eST8dlnnyE/Pz/ZpUGv1aIsx4rRhQ7odSmfC4mIiDJS2k0A7q3eTCDqCyEEVy0RERElWG/ev3k54SgxyBARESUXwwwRERGlNYYZIiIiSmsMM0RERJTWGGaIiIgorTHMEBERUVpjmCEiIqK0xjBDREREaY1hhoiIiNIawwwRERGlNYYZIiIiSmsMM0RERJTWGGaIiIgorTHMEBERUVrTJ7uA/iaEABBrJU5ERETpofN9u/N9/HAyPsz4fD4AQElJSZIrISIiot7y+XxwuVyHvY9G9CTypDFVVVFbWwuHwwGNRpPQc3u9XpSUlKCqqgpOpzOh56av8XUeGHydBwZf54HB13lg9OfrLISAz+dDcXExtNrDz4rJ+CszWq0WQ4cO7dfncDqd/GEZAHydBwZf54HB13lg8HUeGP31Oh/pikwnTgAmIiKitMYwQ0RERGmNYeYomEwm/OY3v4HJZEp2KRmNr/PA4Os8MPg6Dwy+zgMjVV7njJ8ATERERJmNV2aIiIgorTHMEBERUVpjmCEiIqK0xjBDREREaY1hpg8+/PBDzJ8/H8XFxdBoNHj55ZeTXVLGWbJkCY477jg4HA4UFBTgggsuwM6dO5NdVkZaunQpJk+eHN/0asaMGXjzzTeTXVZGu//++6HRaHDzzTcnu5SMc/fdd0Oj0XT5GDduXLLLykg1NTX4wQ9+gNzcXFgsFhxzzDHYsGFDUmphmOmDQCCAKVOm4K9//WuyS8lYa9aswcKFC/HZZ5/h3XffRTQaxZlnnolAIJDs0jLO0KFDcf/992Pjxo3YsGEDTj/9dJx//vn48ssvk11aRlq/fj2eeOIJTJ48OdmlZKyJEyeirq4u/vHRRx8lu6SM09bWhpkzZ8JgMODNN9/E9u3b8eCDDyI7Ozsp9WR8O4P+MG/ePMybNy/ZZWS0t956q8vnTz/9NAoKCrBx40aceuqpSaoqM82fP7/L5/fddx+WLl2Kzz77DBMnTkxSVZnJ7/fjsssuw1NPPYV777032eVkLL1ej6KiomSXkdEeeOABlJSUYNmyZfFjw4cPT1o9vDJDacHj8QAAcnJyklxJZlMUBc8++ywCgQBmzJiR7HIyzsKFC3Huuedi7ty5yS4lo5WXl6O4uBgjRozAZZddhsrKymSXlHFeffVVfOtb38J3vvMdFBQUYNq0aXjqqaeSVg+vzFDKU1UVN998M2bOnIlJkyYlu5yMtHXrVsyYMQPhcBh2ux0rV67EhAkTkl1WRnn22Wfx+eefY/369ckuJaOdcMIJePrppzF27FjU1dVh8eLFOOWUU7Bt2zY4HI5kl5cx9u7di6VLl+LWW2/Fr371K6xfvx433ngjjEYjrrjiigGvh2GGUt7ChQuxbds2jnv3o7Fjx2Lz5s3weDx44YUXcMUVV2DNmjUMNAlSVVWFm266Ce+++y7MZnOyy8loB04BmDx5Mk444QSUlZXhueeew49+9KMkVpZZVFXFt771Lfzud78DAEybNg3btm3D448/npQww2EmSmnXX389Xn/9dXzwwQcYOnRossvJWEajEaNGjcL06dOxZMkSTJkyBQ8//HCyy8oYGzduRGNjI4499ljo9Xro9XqsWbMGjzzyCPR6PRRFSXaJGSsrKwtjxozB7t27k11KRnG73Qf9sTN+/PikDenxygylJCEEbrjhBqxcuRKrV69O6sSywUhVVUiSlOwyMsacOXOwdevWLseuuuoqjBs3Drfffjt0Ol2SKst8fr8fe/bswQ9/+MNkl5JRZs6cedB2Gbt27UJZWVlS6mGY6QO/398l5VdUVGDz5s3IyclBaWlpEivLHAsXLsSKFSvwyiuvwOFwoL6+HgDgcrlgsViSXF1mWbRoEebNm4fS0lL4fD6sWLECq1evxttvv53s0jKGw+E4aL6XzWZDbm4u54El2G233Yb58+ejrKwMtbW1+M1vfgOdTodLL7002aVllFtuuQUnnXQSfve73+GSSy7BunXr8OSTT+LJJ59MTkGCeu2DDz4QAA76uOKKK5JdWsbo7vUFIJYtW5bs0jLO1VdfLcrKyoTRaBT5+flizpw54p133kl2WRlv1qxZ4qabbkp2GRnnu9/9rnC73cJoNIohQ4aI7373u2L37t3JLisjvfbaa2LSpEnCZDKJcePGiSeffDJptWiEECI5MYqIiIjo6HECMBEREaU1hhkiIiJKawwzRERElNYYZoiIiCitMcwQERFRWmOYISIiorTGMENERERpjWGGiNLClVdeiQsuuCDZZRBRCuKmeUSUFjweD4QQyMrKSnYpRJRiGGaIiIgorXGYiYhSygsvvIBjjjkGFosFubm5mDt3LgKBQJdhpn379kGj0Rz0MXv27Ph5PvroI5xyyimwWCwoKSnBjTfeiEAgkJwvioj6FcMMEaWMuro6XHrppbj66qvx1VdfYfXq1bjooovwzQvIJSUlqKuri39s2rQJubm5OPXUUwEAe/bswdlnn40FCxZgy5Yt+Pe//42PPvoI119/fTK+LCLqZxxmIqKU8fnnn2P69OnYt28fysrKutx25ZVXor29HS+//HKX4+FwGLNnz0Z+fj5eeeUVaLVaXHPNNdDpdHjiiSfi9/voo48wa9YsBAIBmM3mgfhyiGiA6JNdABFRpylTpmDOnDk45phjcNZZZ+HMM8/ExRdfjOzs7EM+5uqrr4bP58O7774LrTZ2sfmLL77Ali1bsHz58vj9hBBQVRUVFRUYP358v38tRDRwGGaIKGXodDq8++67+OSTT/DOO+/gL3/5C+644w6sXbu22/vfe++9ePvtt7Fu3To4HI74cb/fj2uvvRY33njjQY8pLS3tt/qJKDk4zEREKUtRFJSVleHWW2/Fli1bugwzvfjii7j00kvx5ptvYs6cOV0ed9lll6GhoQGrVq1KQtVENNA4AZiIUsbatWvxu9/9Dhs2bEBlZSVeeuklNDU1HTQstG3bNlx++eW4/fbbMXHiRNTX16O+vh6tra0AgNtvvx2ffPIJrr/+emzevBnl5eV45ZVXOAGYKEMxzBBRynA6nfjwww9xzjnnYMyYMbjzzjvx4IMPYt68eV3ut2HDBgSDQdx7771wu93xj4suuggAMHnyZKxZswa7du3CKaecgmnTpuGuu+5CcXFxMr4sIupnHGYiIiKitMYrM0RERJTWGGaIiIgorTHMEBERUVpjmCEiIqK0xjBDREREaY1hhoiIiNIawwwRERGlNYYZIiIiSmsMM0RERJTWGGaIiIgorTHMEBERUVpjmCEiIqK09v+Mlg9HpzUe6wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Line Plot\n", + "\n", + "sns.lineplot(x='size',y='total_bill',data=tips)\n", + "plt.title(\"Line Plot of Total bill by size\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHHCAYAAABKudlQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtLElEQVR4nO3deVRV9d7H8c9BZRAElwMgiYBpjoE3yiFLnArJRLNaOVwVMy3TTC178jHTtDLN1ByyWymYmpXdm0PXLDW1njTvdapr5lSadp01QEiBZD9/dDnXI6CHw3DOD96vtfZa7t/5nb2/2304fNj7t/e2WZZlCQAAwFBe7i4AAACgOAgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDOAYZKSkhQZGenuMhxkZGTokUceUWhoqGw2m0aOHOnukq6rffv2at++fYkuc+LEibLZbA5tkZGRSkpKss9v2rRJNptNmzZtKtF1AxUZYQYVXkpKimw2m8MUHBysDh066NNPPy2zOtq3b+9QQ40aNXTbbbdp4cKFys3NLZF1vPzyy1qxYkWJLOvq5aakpGjo0KFavHix+vXrl69P3i/6603OBIwtW7Zo4sSJSk1NLfFtuVpkZKRDfb6+vmrYsKHGjBmj8+fPl9p6y/JzeeU2enl5qXr16rr55ps1ZMgQbdu2rUTXBZSGyu4uAPAUkyZNUlRUlCzL0qlTp5SSkqJ77rlHq1ev1r333lsmNdStW1dTpkyRJJ05c0bvvvuuBg0apAMHDuiVV14p9vJffvllPfDAA+rRo0exl3WlL774Qq1bt9aECRMK7dOzZ081aNDAPp+RkaGhQ4fqvvvuU8+ePe3tISEh113fli1b9MILLygpKUnVq1cvVu3OaNGihZ566ilJ0qVLl7Rjxw7NmjVLmzdv1j/+8Q97v+eee07PPvtsia67rD6XV27jhQsX9MMPP2j58uV6++23NWrUKM2YMaPE1gWUNMIM8B8JCQm69dZb7fODBg1SSEiIli1bViK/NHJzc5WdnS1fX99C+wQFBenPf/6zff7RRx9Vo0aNNHfuXE2ePFlVqlQpdh2l4fTp02ratOk1+0RHRys6Oto+f/bsWQ0dOlTR0dEO2+yJbrjhBocaH3nkEQUEBGj69Ok6ePCgGjZsKEmqXLmyKlcu2a/V0v5c5rl6GyVp6tSp6tOnj2bOnKmGDRtq6NChJbY+oCRxmgkoRPXq1eXn55fvl9P06dN1++23q2bNmvLz81NsbKw++uijfO+32WwaPny4li5dqmbNmsnHx0dr164tUg1Vq1ZV69atlZmZqTNnzhTaLzMzU0899ZTCw8Pl4+OjRo0aafr06bIsy6GezMxMLVq0yH5K4cqxHAU5ffq0/Zenr6+vYmJitGjRIvvreeM/Dh8+rL///e/25R45cqRI23mlL774Qnfeeaf8/f1VvXp1de/eXT/88IP99YkTJ2rMmDGSpKioqHzrTE5OVseOHRUcHCwfHx81bdpU8+fPd7mewoSGhkqSw+ejoDEzJe3qz6VlWYqMjFT37t3z9b106ZKCgoL06KOPurQuPz8/LV68WDVq1NBLL73k8Hly5ucgLi5OMTExBS67UaNGio+Pd6ku4GocmQH+Iy0tTWfPnpVlWTp9+rTmzJmjjIyMfH+tvv7660pMTFTfvn2VnZ2t999/Xw8++KA++eQTde3a1aHvF198oQ8//FDDhw9XrVq1XBq4+9NPP6lSpUqFnk6xLEuJiYnauHGjBg0apBYtWuizzz7TmDFj9O9//1szZ86UJC1evFiPPPKIWrZsqSFDhkiSbrzxxkLXe/HiRbVv316HDh3S8OHDFRUVpeXLlyspKUmpqal68skn1aRJEy1evFijRo1S3bp17acpateuXeTtlKT169crISFB9evX18SJE3Xx4kXNmTNHbdu21c6dOxUZGamePXvqwIEDWrZsmWbOnKlatWo5rHP+/Plq1qyZEhMTVblyZa1evVqPP/64cnNzNWzYMJfqysnJ0dmzZyX9ERB27dqlGTNmqF27doqKinJpmc663ufSZrPpz3/+s6ZNm6bz58+rRo0a9veuXr1a6enpxTryFRAQoPvuu08LFizQ3r171axZM0nO/Rz069dPgwcP1p49e9S8eXP7Mv/5z3/qwIEDeu6551yuC3BgARVccnKyJSnf5OPjY6WkpOTr/9tvvznMZ2dnW82bN7c6duzo0C7J8vLysr7//nun6oiLi7MaN25snTlzxjpz5oz1ww8/WCNGjLAkWd26dbP3GzBggBUREWGfX7FihSXJevHFFx2W98ADD1g2m806dOiQvc3f398aMGCAU/XMmjXLkmQtWbLEYVvbtGljBQQEWOnp6fb2iIgIq2vXrk4tN8+ZM2csSdaECRPsbS1atLCCg4Otc+fO2du+/fZby8vLy+rfv7+97dVXX7UkWYcPH8633Kv3j2VZVnx8vFW/fn2Htri4OCsuLu66dUZERBT4+Wjbtq119uxZh74TJkywrv5ajYiIcPg/37hxoyXJ2rhx4zXXW5TP5f79+y1J1vz58x3aExMTrcjISCs3N/e623it/Tdz5kxLkrVy5Up7mzM/B6mpqZavr6/1P//zPw59R4wYYfn7+1sZGRnXrAtwFqeZgP+YN2+e1q1bp3Xr1mnJkiXq0KGDHnnkEf3tb39z6Ofn52f/96+//qq0tDTdeeed2rlzZ75lxsXFXXcsyZX27dun2rVrq3bt2mrSpInmzJmjrl27auHChYW+Z82aNapUqZJGjBjh0P7UU0/JsiyXr3xZs2aNQkND1bt3b3tblSpVNGLECGVkZGjz5s0uLbcwJ06c0O7du5WUlORwdCE6Olp33XWX1qxZ49Ryrtw/eUc14uLi9NNPPyktLc2l2lq1amX/bHzyySd66aWX9P333ysxMVEXL150aZnOcuZzedNNN6lVq1ZaunSpve38+fP69NNP1bdv32Kf+goICJD0x8DgPM78HAQFBal79+5atmyZ/RTV5cuX9cEHH6hHjx7y9/cvVl1AHk4zAf/RsmVLh4GWvXv31p/+9CcNHz5c9957r7y9vSVJn3zyiV588UXt3r1bWVlZ9v4F/cIo6imIyMhIvf322w6XAAcHB1/zPT///LPCwsJUrVo1h/YmTZrYX3fFzz//rIYNG8rLy/FvnuIu91rrk/4YS3G1Jk2a6LPPPlNmZuZ1fwF+/fXXmjBhgrZu3arffvvN4bW0tDQFBQUVubZatWqpc+fO9vmuXbuqUaNGeuCBB/TOO+/oiSeeKPIyneXs57J///4aPny4fv75Z0VERGj58uXKyckp8DL5osrIyJAkh8+Ysz8H/fv31wcffKCvvvpK7dq10/r163Xq1KkSqQvIw5EZoBBeXl7q0KGDTpw4oYMHD0qSvvrqKyUmJsrX11dvvPGG1qxZo3Xr1qlPnz4OgyPzXPnXqzP8/f3VuXNnderUSW3btr1ukIGjH3/8UZ06ddLZs2c1Y8YM/f3vf9e6des0atQoSSqx+/VIUqdOnSRJX375ZYkt0xkFfS4lqVevXqpSpYr96MySJUt06623FhgOi2rPnj2SZL+0vig/B/Hx8QoJCdGSJUvsdYWGhjqEQ6C4ODIDXMPvv/8u6b9/mf71r3+Vr6+vPvvsM/n4+Nj7JScnu6U+SYqIiND69et14cIFh7+c9+3bZ389T1FON0REROi7775Tbm6uw9GZgpZbEvKWt3///nyv7du3T7Vq1bIflSlsO1avXq2srCytWrVK9erVs7dv3LixRGuV8n82ylJB665Ro4a6du2qpUuXqm/fvvr66681a9asYq8rIyNDH3/8scLDw+1H5Yryc1CpUiX16dNHKSkpmjp1qlasWKHBgwerUqVKxa4NyMORGaAQOTk5+vzzz+Xt7W3/Eq9UqZJsNpsuX75s73fkyJFSuauus+655x5dvnxZc+fOdWifOXOmbDabEhIS7G3+/v5O3zX3nnvu0cmTJ/XBBx/Y237//XfNmTNHAQEBiouLK5H689SpU0ctWrTQokWLHGrcs2ePPv/8c91zzz32trxQc/W25P2CvPLoQFpaWqmEzdWrV0tSoZcel5aCPpd5+vXrp71792rMmDGqVKmSevXqVax1Xbx4Uf369dP58+c1btw4e4gs6s9Bv3799Ouvv+rRRx8t8ApBoLg4MgP8x6effmo/6nD69Gm99957OnjwoJ599lkFBgZK+mOsxIwZM9SlSxf16dNHp0+f1rx589SgQQN99913bqm7W7du6tChg8aNG6cjR44oJiZGn3/+uVauXKmRI0c6XH4dGxur9evXa8aMGQoLC1NUVJRatWpV4HKHDBmiv/zlL0pKStKOHTsUGRmpjz76yP4X/9VjdErCq6++qoSEBLVp00aDBg2yX5odFBSkiRMnOmyHJI0bN85+eqVbt266++675e3trW7dutl/cb799tsKDg7WiRMnXK7r3//+t/00SXZ2tr799lv95S9/Ua1atUp1vIzk3OcyT9euXVWzZk0tX75cCQkJRTpNeeU2ZmRkaO/evVq+fLlOnjypp556yuFeNUX9OfjTn/6k5s2ba/ny5WrSpIluueUWV/4rgMK59VoqwAMUdAmsr6+v1aJFC2v+/Pn5LmtdsGCB1bBhQ8vHx8dq3LixlZycXOAluZKsYcOGOV1HXFyc1axZs+v2u/rSbMuyrAsXLlijRo2ywsLCrCpVqlgNGza0Xn311Xy179u3z2rXrp3l5+dnSbruZdqnTp2yBg4caNWqVcvy9va2br75Zis5OTlfv5K6NNuyLGv9+vVW27ZtLT8/PyswMNDq1q2btXfv3nzvnzx5snXDDTdYXl5eDpdpr1q1yoqOjrZ8fX2tyMhIa+rUqdbChQvzXcrt6qXZXl5eVnBwsNW7d2+Hy94tq/Qvzb7W5zLP448/bkmy3nvvvetuW0HbaLPZrMDAQKtZs2bW4MGDrW3bthX4Hmd/DvJMmzbNkmS9/PLLTtcFOMtmWQWMWgQAGGnUqFFasGCBTp48qapVq7q7HLvXX39do0aN0pEjRxzGMwElgTADAOXEpUuXFB4ernvvvdetg9KvZlmWYmJiVLNmzVIZjA0wZgYADHf69GmtX79eH330kc6dO6cnn3zS3SVJ+uOZYatWrdLGjRv1r3/9SytXrnR3SSinCDMAYLi9e/eqb9++Cg4O1uzZs9WiRQt3lyRJOnPmjPr06aPq1avrf//3f5WYmOjuklBOcZoJAAAYjfvMAAAAoxFmAACA0cr9mJnc3FwdP35c1apVK/aTYwEAQNmwLEsXLlxQWFhYvgfeXq3ch5njx48rPDzc3WUAAAAXHDt2THXr1r1mn3IfZvJuuX7s2LF8t/4GAACeKT09XeHh4U49OqXch5m8U0uBgYGEGQAADOPMEBEGAAMAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwWrl/ajYAAKayLEuZmZn2eX9/f6eeIl3REGYAAPBQmZmZ6t69u31+5cqVCggIcGNFnonTTAAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjVXZ3AQAA51mWpczMTPu8v7+/bDabGysC3I8wAwAGyczMVPfu3e3zK1euVEBAgBsrAtyP00wAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARqvs7gIAACgtsWPedXcJxWL7PVtBV8y3H/++rMrebqunuHa82r9UlsuRGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNO4ADBjOsixlZmba5/39/WWz2dxYEQCULcIMYLjMzEx1797dPr9y5UoFBAS4sSIAKFucZgIAAEYjzAAAAKNxmglAhcJTlD1LaT1FGRULR2YAAIDRCDMAAMBobg0zU6ZM0W233aZq1aopODhYPXr00P79+x36XLp0ScOGDVPNmjUVEBCg+++/X6dOnXJTxQAAwNO4Ncxs3rxZw4YN0zfffKN169YpJydHd999t8M9M0aNGqXVq1dr+fLl2rx5s44fP66ePXu6sWoAAOBJ3DoAeO3atQ7zKSkpCg4O1o4dO9SuXTulpaVpwYIFeu+999SxY0dJUnJyspo0aaJvvvlGrVu3dkfZAADAg3jUmJm0tDRJUo0aNSRJO3bsUE5Ojjp37mzv07hxY9WrV09bt24tcBlZWVlKT093mAAAQPnlMWEmNzdXI0eOVNu2bdW8eXNJ0smTJ+Xt7a3q1as79A0JCdHJkycLXM6UKVMUFBRkn8LDw0u7dAAA4EYeE2aGDRumPXv26P333y/WcsaOHau0tDT7dOzYsRKqEAAAeCKPuGne8OHD9cknn+jLL79U3bp17e2hoaHKzs5Wamqqw9GZU6dOKTQ0tMBl+fj4yMfHp7RL9mg8eBAAUJG49ciMZVkaPny4Pv74Y33xxReKiopyeD02NlZVqlTRhg0b7G379+/X0aNH1aZNm7Iu1xh5Dx7Mm64MNgAAlDduPTIzbNgwvffee1q5cqWqVatmHwcTFBQkPz8/BQUFadCgQRo9erRq1KihwMBAPfHEE2rTpg1XMgEAAEluDjPz58+XJLVv396hPTk5WUlJSZKkmTNnysvLS/fff7+ysrIUHx+vN954o4wrBQAAnsqtYcayrOv28fX11bx58zRv3rwyqAgAAJjGY65mAgAAcAVhBgAAGI0wAwAAjOYR95kBAAD5WZWqKC26t8M88iPMAADgqWw2WZW93V2Fx+M0EwAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMxrOZAMAgPHgQyI8wAwAm4cGDQD6cZgIAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAo/E4gwLEjnnX3SUUi+33bAVdMd9+/PtG3/58x6v93V0CAMCDcWQGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA07jODCo/7CnkW7isEoKg4MgMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGC0yu4uACXPqlRFadG9HeYBACivCDPlkc0mq7K3u6sAAKBMcJoJAAAYjTADAACMRpgBAABGc2uY+fLLL9WtWzeFhYXJZrNpxYoVDq8nJSXJZrM5TF26dHFPsQAAwCO5NcxkZmYqJiZG8+bNK7RPly5ddOLECfu0bNmyMqwQAAB4OrdezZSQkKCEhIRr9vHx8VFoaGgZVQQAAEzj8WNmNm3apODgYDVq1EhDhw7VuXPnrtk/KytL6enpDhMAACi/PDrMdOnSRe+++642bNigqVOnavPmzUpISNDly5cLfc+UKVMUFBRkn8LDw8uwYgAAUNY8+qZ5vXr1sv/75ptvVnR0tG688UZt2rRJnTp1KvA9Y8eO1ejRo+3z6enpBBoAAMoxjz4yc7X69eurVq1aOnToUKF9fHx8FBgY6DABAIDyy6gw88svv+jcuXOqU6eOu0sBAAAewq2nmTIyMhyOshw+fFi7d+9WjRo1VKNGDb3wwgu6//77FRoaqh9//FHPPPOMGjRooPj4eDdWDQAAPIlbw8z27dvVoUMH+3zeWJcBAwZo/vz5+u6777Ro0SKlpqYqLCxMd999tyZPniwfHx93lQwAADyMW8NM+/btZVlWoa9/9tlnZVgNAAAwkVFjZgAAAK5GmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDSnL83+7rvvnF5odHS0S8UAAAAUldNhpkWLFrLZbIXeFybvNZvNds2nWgMAAJQkp8PM4cOHS7MOAAAAlzgdZiIiIkqzDgAAAJc4HWZWrVrl9EITExNdKgYAAKConA4zPXr0cKofY2YAAEBZcjrM5ObmlmYdAAAALuE+MwAAwGhOH5mZPXu2hgwZIl9fX82ePfuafUeMGFHswgAAAJzhdJiZOXOm+vbtK19fX82cObPQfjabjTADlCGrUhWlRfd2mAeAisSl+8xwzxnAg9hssip7u7sKAHCbYo+ZsSyr0LsCAwAAlDaXw8yCBQvUvHlz+fr6ytfXV82bN9c777xTkrUBAABcl9Onma70/PPPa8aMGXriiSfUpk0bSdLWrVs1atQoHT16VJMmTSrRIgEAAArjUpiZP3++3n77bfXu/d9Bh4mJiYqOjtYTTzxBmAEAAGXGpdNMOTk5uvXWW/O1x8bG6vfffy92UQAAAM5yKcz069dP8+fPz9f+1ltvqW/fvsUuCgAAwFlOn2YaPXq0/d82m03vvPOOPv/8c7Vu3VqStG3bNh09elT9+/cv+SoBAAAK4XSY2bVrl8N8bGysJOnHH3+UJNWqVUu1atXS999/X4LlAQAAXJvTYWbjxo1FXvgvv/yisLAweXnxCCgAAFA6SjVlNG3aVEeOHCnNVQAAgAquVMMMdwYGAACljfM/AADAaIQZAABgNMIMAAAwWqmGGZvNVpqLBwAAYAAwAAAwm0sPmnTW3r17FRYWVpqrAAAAFZzTYaZnz55OL/Rvf/ubJCk8PLzoFQEAABSB02EmKCioNOsAAABwidNhJjk5uTTrAAAAcAmXZgMAAKO5PAD4o48+0ocffqijR48qOzvb4bWdO3cWuzAAAABnuHRkZvbs2Ro4cKBCQkK0a9cutWzZUjVr1tRPP/2khISEkq4RAACgUC6FmTfeeENvvfWW5syZI29vbz3zzDNat26dRowYobS0tJKuEQAAoFAuhZmjR4/q9ttvlyT5+fnpwoULkqR+/fpp2bJlJVcdAADAdbgUZkJDQ3X+/HlJUr169fTNN99Ikg4fPsxdfwEAQJlyKcx07NhRq1atkiQNHDhQo0aN0l133aWHHnpI9913X4kWCAAAcC0uXc301ltvKTc3V5I0bNgw1axZU1u2bFFiYqIeffTREi0QAADgWlwKM7/88ovDowp69eqlXr16ybIsHTt2TPXq1SuxAgEAAK7FpdNMUVFROnPmTL728+fPKyoqqthFAQAAOMulMGNZlmw2W772jIwM+fr6FrsoAAAAZxXpNNPo0aMlSTabTePHj1fVqlXtr12+fFnbtm1TixYtSrRAAACAaylSmNm1a5ekP47M/Otf/5K3t7f9NW9vb8XExOjpp58u2QoBAACuoUhhZuPGjZL+uBz79ddfV2BgYKkUBQAA4CyXrmZKTk62//uXX36RJNWtW7dkKgIAACgClwYA5+bmatKkSQoKClJERIQiIiJUvXp1TZ482X7/GQAAgLLg0pGZcePGacGCBXrllVfUtm1bSdL//d//aeLEibp06ZJeeumlEi0SAACgMC6FmUWLFumdd95RYmKivS06Olo33HCDHn/8ccIMAAAoMy6dZjp//rwaN26cr71x48b2B1ACAACUBZfCTExMjObOnZuvfe7cuYqJiSl2UQAAAM5y6TTTtGnT1LVrV61fv15t2rSRJG3dulXHjh3TmjVrSrRAAACAa3H52UwHDhzQfffdp9TUVKWmpqpnz57av3+/IiIiSrpGAACAQrl0ZCYqKkonTpzIN9D33LlzCg8P1+XLl0ukOAAAgOtx+UGTBeFBkwAAoKy5/KDJ559/ngdNAgAAt+NBkwAAwGg8aBIAABjNpTEzycnJJRJkvvzyS3Xr1k1hYWGy2WxasWKFw+uWZen5559XnTp15Ofnp86dO+vgwYPFXi8AACg/XAozJSUzM1MxMTGaN29ega9PmzZNs2fP1ptvvqlt27bJ399f8fHxunTpUhlXCgAAPJVLl2aXlISEBCUkJBT4mmVZmjVrlp577jl1795dkvTuu+8qJCREK1asUK9evcqyVAAA4KHcemTmWg4fPqyTJ0+qc+fO9ragoCC1atVKW7duLfR9WVlZSk9Pd5gAAED55bFh5uTJk5KkkJAQh/aQkBD7awWZMmWKgoKC7FN4eHip1gkAANzLY8OMq8aOHau0tDT7dOzYMXeXBAAASpHHhpnQ0FBJ0qlTpxzaT506ZX+tID4+PgoMDHSYAABA+eWxYSYqKkqhoaHasGGDvS09PV3btm2zP6kbAADArVczZWRk6NChQ/b5w4cPa/fu3apRo4bq1aunkSNH6sUXX1TDhg0VFRWl8ePHKywsTD169HBf0QAAwKO4Ncxs375dHTp0sM/nPftpwIABSklJ0TPPPKPMzEwNGTJEqampuuOOO7R27VoeZgkAAOzcGmbat29f6BO4pT8eaDlp0iRNmjSpDKsCAAAm8dgxMwAAAM4gzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACM5vFhZuLEibLZbA5T48aN3V0WAADwEJXdXYAzmjVrpvXr19vnK1c2omwAAFAGjEgFlStXVmhoqLvLAAAAHsjjTzNJ0sGDBxUWFqb69eurb9++Onr0aKF9s7KylJ6e7jABAIDyy+PDTKtWrZSSkqK1a9dq/vz5Onz4sO68805duHChwP5TpkxRUFCQfQoPDy/jigEAQFny+DCTkJCgBx98UNHR0YqPj9eaNWuUmpqqDz/8sMD+Y8eOVVpamn06duxYGVcMAADKkhFjZq5UvXp13XTTTTp06FCBr/v4+MjHx6eMqwIAAO7i8UdmrpaRkaEff/xRderUcXcpAADAA3h8mHn66ae1efNmHTlyRFu2bNF9992nSpUqqXfv3u4uDQAAeACPP830yy+/qHfv3jp37pxq166tO+64Q998841q167t7tIAAIAH8Pgw8/7777u7BAAA4ME8/jQTAADAtRBmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxmRJiZN2+eIiMj5evrq1atWukf//iHu0sCAAAewuPDzAcffKDRo0drwoQJ2rlzp2JiYhQfH6/Tp0+7uzQAAOABPD7MzJgxQ4MHD9bAgQPVtGlTvfnmm6pataoWLlzo7tIAAIAH8Ogwk52drR07dqhz5872Ni8vL3Xu3Flbt251Y2UAAMBTVHZ3Addy9uxZXb58WSEhIQ7tISEh2rdvX4HvycrKUlZWln0+LS1NkpSenu70ei9nXXShWpSWouw7V7C/PQv7u2Jhf1csRdnfeX0ty7puX48OM66YMmWKXnjhhXzt4eHhbqgGJSFozmPuLgFliP1dsbC/KxZX9veFCxcUFBR0zT4eHWZq1aqlSpUq6dSpUw7tp06dUmhoaIHvGTt2rEaPHm2fz83N1fnz51WzZk3ZbLZSrdeTpKenKzw8XMeOHVNgYKC7y0EpY39XLOzviqWi7m/LsnThwgWFhYVdt69Hhxlvb2/FxsZqw4YN6tGjh6Q/wsmGDRs0fPjwAt/j4+MjHx8fh7bq1auXcqWeKzAwsEJ9+Cs69nfFwv6uWCri/r7eEZk8Hh1mJGn06NEaMGCAbr31VrVs2VKzZs1SZmamBg4c6O7SAACAB/D4MPPQQw/pzJkzev7553Xy5Em1aNFCa9euzTcoGAAAVEweH2Ykafjw4YWeVkLBfHx8NGHChHyn3FA+sb8rFvZ3xcL+vj6b5cw1TwAAAB7Ko2+aBwAAcD2EGQAAYDTCDAAAMBphxnCbNm2SzWZTamqqu0uBB7LZbFqxYoW7ywCAUkWY8WA2m+2a08SJE91dIspYUlJSgZ+FQ4cOFdj/xIkTSkhIKOMqURxnzpzR0KFDVa9ePfn4+Cg0NFTx8fH6+uuvnXp/SkpKhb5RqEmKu6/xX0Zcml1RnThxwv7vDz74QM8//7z2799vbwsICND27dtLZd3Z2dny9vYulWWjeLp06aLk5GSHttq1azvM5+2/wh77Ac91//33Kzs7W4sWLVL9+vV16tQpbdiwQefOnXN3aShh7OsSZMEIycnJVlBQUL72jRs3WpKs9evXW7GxsZafn5/Vpk0ba9++ffY+AwYMsLp37+7wvieffNKKi4uzz8fFxVnDhg2znnzySatmzZpW+/btS2lLUBwF7UvLKnz/SbI+/vjjsi0SLvv1118tSdamTZsK7fPaa69ZzZs3t6pWrWrVrVvXGjp0qHXhwgXLsv77fXDlNGHChDKqHkVxvX19+PBhS5K1a9eufO/ZuHGjZVnOff9XFJxmKifGjRun1157Tdu3b1flypX18MMPF3kZixYtkre3t77++mu9+eabpVAlShP7z3wBAQEKCAjQihUrlJWVVWAfLy8vzZ49W99//70WLVqkL774Qs8884wk6fbbb9esWbMUGBioEydO6MSJE3r66afLchPgJGf2tbNK4vvfdJxmKideeuklxcXFSZKeffZZde3aVZcuXZKvr6/Ty2jYsKGmTZtWWiWihHzyyScKCAiwz+eNiWH/ma9y5cpKSUnR4MGD9eabb+qWW25RXFycevXqpejoaEnSyJEj7f0jIyP14osv6rHHHtMbb7whb29vBQUFyWazcYrRwzmzr51VEt//puPITDlx5Ye/Tp06kqTTp08XaRmxsbElWhNKR4cOHbR79277NHv2bEnsv/Li/vvv1/Hjx7Vq1Sp16dJFmzZt0i233KKUlBRJ0vr169WpUyfdcMMNqlatmvr166dz587pt99+c2/hKLLr7WtnlcT3v+kIM+VElSpV7P+22WySpNzcXEl/HJa2rnpqRU5OTr5l+Pv7l2KFKCn+/v5q0KCBfcr78mL/lR++vr666667NH78eG3ZskVJSUmaMGGCjhw5onvvvVfR0dH661//qh07dmjevHmS/hj0DfMUtq+9vP749Xzld3dB39vStb//KwrCTAVQu3ZthyujJGn37t3uKQZAkTVt2lSZmZnasWOHcnNz9dprr6l169a66aabdPz4cYe+3t7eunz5spsqRXHl7eu8KxSv/O7me7twhJkKoGPHjtq+fbveffddHTx4UBMmTNCePXvcXRaAq5w7d04dO3bUkiVL9N133+nw4cNavny5pk2bpu7du6tBgwbKycnRnDlz9NNPP2nx4sX5BntHRkYqIyNDGzZs0NmzZzn95KGut6/9/PzUunVrvfLKK/rhhx+0efNmPffcc+4u22MRZiqA+Ph4jR8/Xs8884xuu+02XbhwQf3793d3WQCuEhAQoFatWmnmzJlq166dmjdvrvHjx2vw4MGaO3euYmJiNGPGDE2dOlXNmzfX0qVLNWXKFIdl3H777Xrsscf00EMPqXbt2gwK91DX29eStHDhQv3++++KjY3VyJEj9eKLL7q5as9ls64eTAEAAGAQjswAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAFghPbt2zs8MRoA8hBmAACA0QgzAADAaIQZAB4nMzNT/fv3V0BAgOrUqaPXXnvN4fXFixfr1ltvVbVq1RQaGqo+ffro9OnTkiTLstSgQQNNnz7d4T27d++WzWbToUOHymw7AJQNwgwAjzNmzBht3rxZK1eu1Oeff65NmzZp586d9tdzcnI0efJkffvtt1qxYoWOHDmipKQkSZLNZtPDDz+s5ORkh2UmJyerXbt2atCgQVluCoAywIMmAXiUjIwM1axZU0uWLNGDDz4oSTp//rzq1q2rIUOGaNasWfnes337dvsT4QMCAnT8+HHVq1dPW7ZsUcuWLZWTk6OwsDBNnz5dAwYMKOMtAlDaODIDwKP8+OOPys7OVqtWrextNWrUUKNGjezzO3bsULdu3VSvXj1Vq1ZNcXFxkqSjR49KksLCwtS1a1ctXLhQkrR69WplZWXZwxGA8oUwA8AomZmZio+PV2BgoJYuXap//vOf+vjjjyVJ2dnZ9n6PPPKI3n//fV28eFHJycl66KGHVLVqVXeVDaAUEWYAeJQbb7xRVapU0bZt2+xtv/76qw4cOCBJ2rdvn86dO6dXXnlFd955pxo3bmwf/Hule+65R/7+/po/f77Wrl2rhx9+uMy2AUDZquzuAgDgSgEBARo0aJDGjBmjmjVrKjg4WOPGjZOX1x9/e9WrV0/e3t6aM2eOHnvsMe3Zs0eTJ0/Ot5xKlSopKSlJY8eOVcOGDdWmTZuy3hQAZYQjMwA8zquvvqo777xT3bp1U+fOnXXHHXcoNjZWklS7dm2lpKRo+fLlatq0qV555ZV8l2HnGTRokLKzszVw4MCyLB9AGeNqJgDl1ldffaVOnTrp2LFjCgkJcXc5AEoJYQZAuZOVlaUzZ85owIABCg0N1dKlS91dEoBSxGkmAOXOsmXLFBERodTUVE2bNs3d5QAoZRyZAQAARuPIDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAw2v8DggFDMxKckzwAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Categorical Plots\n", + "## BAr Plot\n", + "sns.barplot(x='day',y='total_bill',data=tips)\n", + "plt.title('Bar Plot of Total Bill By Day')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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jTADAABMjTADAABMjTADAABMLeRXzfZ6vZKkzs5OgysBAACD1fe93fc9fjkhH2bOnDkjSUpJSTG4EgAAMFRnzpyR1Wq97DEW72Aij4l5PB41NTVp/PjxslgsRpczYjo7O5WSkqKTJ08qLi7O6HIQYFzv8ML1Di/her29Xq/OnDmj5ORkRURcvldMyLfMREREaNKkSUaXYZi4uLiw+uUPd1zv8ML1Di/heL2/qkWmDx2AAQCAqRFmAACAqRFmQlR0dLSKiooUHR1tdCkYAVzv8ML1Di9c768W8h2AAQBAaKNlBgAAmBphBgAAmBphBgAAmBphxuT2798vi8Wi9vZ2o0tBELJYLNq7d6/RZQBAQBFmgpjFYrns4/HHHze6RIywZcuWDfi78OGHHw54fHNzsxYtWjTCVeJK/P73v1dubq7sdruio6Nls9m0cOFCvfnmm4N6fWVlpeLj4wNbJPziSq81/ijkZwA2s+bm5v6//+u//qs2bNig48eP92+LjY3V4cOHA/LePT09ioqKCsi5cWW+853vqKKiwmfbxIkTfZ73XT+bzTaSpcEPsrOz1dPTo507dyo9PV2tra2qrq7WqVOnjC4Nfsa19iMvTKGiosJrtVov2v766697JXlfe+01b2ZmpnfMmDFeh8Phfe+99/qPWbp0qfeuu+7yed0jjzzinTdvXv/zefPmefPz872PPPKId8KECd5bb701QD8JrsRA19LrvfT1k+R96aWXRrZIDNvp06e9krz79++/5DFPPvmkd8aMGd6xY8d6J02a5M3NzfWeOXPG6/X+8fPgwkdRUdEIVY+h+Kpr3dDQ4JXkra2tveg1r7/+utfrHdznf7jgNlOIWLdunZ588kkdPnxYo0aN0oMPPjjkc+zcuVNRUVF688039eyzzwagSgQS18/8YmNjFRsbq71796q7u3vAYyIiIrR9+3bV19dr586d+s///E899thjkqSbbrpJTz/9tOLi4tTc3Kzm5mY9+uijI/kjYJAGc60Hyx+f/2bHbaYQUVJSonnz5kmS/vEf/1F33HGHurq6FBMTM+hzTJkyRVu3bg1UifCTX//614qNje1/3tcnhutnfqNGjVJlZaW+//3v69lnn9UNN9ygefPm6d5771VGRoYkafXq1f3Hf/3rX1dxcbEeeughlZaWKioqSlarVRaLhVuMQW4w13qw/PH5b3a0zISIC3/5k5KSJEmfffbZkM6RmZnp15oQGLfddpuOHj3a/9i+fbskrl+oyM7OVlNTk15++WV95zvf0f79+3XDDTeosrJSkvTaa6/p9ttv19e+9jWNHz9e999/v06dOqXz588bWziG7Kuu9WD54/Pf7AgzIWL06NH9f7dYLJIkj8cj6Ytmae+XVq3o7e296Bzjxo0LYIXwl3Hjxmny5Mn9j74PL65f6IiJidG3v/1trV+/Xm+99ZaWLVumoqIiffLJJ/qLv/gLZWRk6N/+7d905MgROZ1OSV90+ob5XOpaR0R88fV84Wf3QJ/b0uU//8MFYSYMTJw40WdklCQdPXrUmGIADNl1112nc+fO6ciRI/J4PHryySc1Z84cTZ06VU1NTT7HRkVFye12G1QprlTfte4boXjhZzef25dGmAkD8+fP1+HDh/Xcc8/pgw8+UFFRkd59912jywLwJadOndL8+fO1a9cu1dXVqaGhQXv27NHWrVt11113afLkyert7dVPf/pTffzxx3r++ecv6uz99a9/XWfPnlV1dbX+7//+j9tPQeqrrvWYMWM0Z84cbdmyRf/7v/+rAwcOqLCw0OiygxZhJgwsXLhQ69ev12OPPaYbb7xRZ86c0QMPPGB0WQC+JDY2VrNnz9a2bduUlZWlGTNmaP369fr+97+vZ555RjNnztRTTz2lf/qnf9KMGTNUVVWlzZs3+5zjpptu0kMPPaR77rlHEydOpFN4kPqqay1Jv/jFL/SHP/xBmZmZWr16tYqLiw2uOnhZvF/uTAEAAGAitMwAAABTI8wAAABTI8wAAABTI8wAAABTI8wAAABTI8wAAABTI8wAAABTI8wAAABTI8wAMIVbb71Vq1evNroMAEGIMAMAAEyNMAMAAEyNMAMg6Jw7d04PPPCAYmNjlZSUpCeffNJn//PPP69vfvObGj9+vGw2m/72b/9Wn332mSTJ6/Vq8uTJ+vGPf+zzmqNHj8pisejDDz8csZ8DwMggzAAIOj/84Q914MAB/epXv9Lvfvc77d+/X++8807//t7eXj3xxBP67//+b+3du1effPKJli1bJkmyWCx68MEHVVFR4XPOiooKZWVlafLkySP5owAYAayaDSConD17VhMmTNCuXbv013/915KktrY2TZo0SStXrtTTTz990WsOHz6sG2+8UWfOnFFsbKyamppkt9v11ltv6Vvf+pZ6e3uVnJysH//4x1q6dOkI/0QAAo2WGQBB5aOPPlJPT49mz57dvy0hIUHXXHNN//MjR45o8eLFstvtGj9+vObNmydJamxslCQlJyfrjjvu0C9+8QtJ0iuvvKLu7u7+cAQgtBBmAJjKuXPntHDhQsXFxamqqkpvv/22XnrpJUlST09P/3Hf+9739MILL+jzzz9XRUWF7rnnHo0dO9aosgEEEGEGQFD50z/9U40ePVqHDh3q33b69Gm9//77kqT33ntPp06d0pYtW3TLLbdo2rRp/Z1/L/Tnf/7nGjdunMrKyvTqq6/qwQcfHLGfAcDIGmV0AQBwodjYWK1YsUI//OEPNWHCBF199dVat26dIiK++L+X3W5XVFSUfvrTn+qhhx7Su+++qyeeeOKi80RGRmrZsmVau3atpkyZIofDMdI/CoARQssMgKDzz//8z7rlllu0ePFiLViwQDfffLMyMzMlSRMnTlRlZaX27Nmj6667Tlu2bLloGHafFStWqKenR8uXLx/J8gGMMEYzAQhZ//Vf/6Xbb79dJ0+eVGJiotHlAAgQwgyAkNPd3a3f//73Wrp0qWw2m6qqqowuCUAAcZsJQMj5l3/5F6Wmpqq9vV1bt241uhwAAUbLDAAAMDVaZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKkRZgAAgKn9P8D8/a2RhL2CAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Box Plot\n", + "sns.boxplot(x=\"day\",y='total_bill',data=tips)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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JAyoazYhRFUcDgcSExPx0Ucf4ZZbbgEAVFRUoEePHnjggQfwxhtvnPWYzMxMXHTRRaitrUVUVBQKCwuRkZGBzZs34+KLL4bP50O3bt3w//7f/8M999wT5n8RISTUaGSGEKIqR48ehdfrxahRowLXJSQkoH///oHLWVlZmDp1KjIyMhAdHY0JEyYAAPLz8wEA3bp1w7XXXoulS5cCAL777jt4PJ5AckQI0RdKZgghmlJXV4cpU6YgJiYGH3/8MXbs2IGvvvoKAOD1egP3+/3vf4///e9/cLlcWLZsGW677TbYbDalwiaEhBAlM4QQVenbty+MRiO2bdsWuK6yshJHjhwBABw6dAjl5eV4+eWXcemll2LAgAGBxb9nuuaaa2C32/Huu+9i1apVuO+++8L2byCEhBendACEEHKmqKgozJo1C4899hgSExORkpKCp556Cizr/+6VkZEBk8mEt956Cw8++CD27duHF1544azjGAwGzJw5E4sWLcK5556LMWPGhPufQggJExqZIYSozt/+9jdceumlmDp1KiZPnoxLLrkEI0eOBAAkJydj+fLlWLFiBQYNGoSXX375rG3YslmzZsHr9eLee+8NZ/iEkDCj3UyEEN3asGEDLr/8chQUFCA1NVXpcAghIULJDCFEdzweD8rKynDPPfcgLS0NH3/8sdIhEUJCiKaZCCG68+mnn6JXr16oqqrCK6+8onQ4hJAQo5EZQgghhGgajcwQQgghRNMomSGEEEKIplEyQwghhBBNo2SGEEIIIZpGyQwhhBBCNI2SGUIIIYRoGiUzhBBCCNE0SmYIIYQQomn/H0In8SHzXwZaAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Violin Plot\n", + "\n", + "sns.violinplot(x='day',y='total_bill',data=tips)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### Histograms\n", + "sns.histplot(tips['total_bill'],bins=10,kde=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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AxARERE5HQYgIiIicjoMQEREROR0GICIiIjI6TAAERERkdNhACIip/Lwww9jwYIFfWp700034amnnrpmm8jISLzxxhvdfxYEAdu2bQMAlJSUQBAE5ObmDqhWIho+DEBEJLm+BI2heM5wOH78OB599FGpyyCiflJIXQARkT0LCAiQugQiGgD2ABGRpB5++GHs378fa9euhSAIEAQBJSUl2L9/P6ZNmwaVSoWgoCA8//zz6OzsvOZzLBYLlixZgqioKLi6umLs2LFYu3btoOrr7OzEsmXLoNFo4O/vj5deegnfPULxf4fAiMg+sAeIiCS1du1aFBYWIi4uDq+88goAwGKx4LbbbsPDDz+MTZs2IT8/H4888gjUajVefvnlXp8TEBAAq9WK0NBQbN26FX5+fjh8+DAeffRRBAUF4Yc//OGA6tu4cSOWLFmCY8eOITMzE48++ijCw8PxyCOPDNk1IKKRxwBERJLSaDRQKpVwc3ODTqcDAPzf//0fwsLC8NZbb0EQBMTGxqKyshLPPfccVq5c2etzAEAul+NXv/pV95+joqKQkZGBf/7znwMOQGFhYfjTn/4EQRAwduxYnDp1Cn/6058YgIjsHIfAiMjm5OXlISUlBYIgdN83c+ZMNDU14eLFi9d87rp165CUlISAgAB4eHjgnXfeQVlZ2YBrmT59eo86UlJSUFRUBIvFMuDXJCLpMQARkcP4+OOP8cwzz2DJkiXYtWsXcnNzsXjxYrS3t0tdGhHZGA6BEZHklEpljx6VcePG4V//+hdEUezufTl06BA8PT0RGhra63O62syYMQOPP/54933nzp0bVG1Hjx7t8ecjR44gJiYGcrl8UK9LRNJiDxARSS4yMhJHjx5FSUkJamtr8fjjj6O8vBxPPvkk8vPz8fnnn2PVqlVIS0uDTCbr9TlWqxUxMTHIzMzE119/jcLCQrz00ks4fvz4oGorKytDWloaCgoK8NFHH+HPf/4zli9fPhQfm4gkxABERJJ75plnIJfLMX78eAQEBKCjowM7duzAsWPHkJCQgMceewxLlizBiy++eNXnlJWV4ec//znuueceLFy4EMnJyairq+vRGzQQixYtwqVLlzBt2jQ88cQTWL58OTc+JHIAgvjdDS2IiIiInAB7gIiIiMjpMAARkVMqKyuDh4fHVW+DWTpPRLaPQ2BE5JQ6OztRUlJy1ccjIyOhUHChLJGjYgAiIiIip8MhMCIiInI6DEBERETkdBiAiIiIyOkwABEREZHTYQAiIiIip8MARERERE6HAYiIiIicDgMQEREROZ3/DzcWuQEXtW54AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## KDE Plot\n", + "sns.kdeplot(tips['total_bill'],fill=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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REQCY1BORERERCQwudADIKLkMVkdaLI4YLY5oVVnwJCpgE6jEHpYREQkErxOiAeDcqIUdbK1A49u2oudtU3+x8aWGPDipFIU5KgFHBkREYkBrxPiwvQVohRksjpCTrQAsKO2CY9t2guT1SHQyIiISAx4nRAfBuVEKajJ4gg50frsqG1Ck4UnWyKidMbrhPgwKCdKQWabM+r2thjbiYgotfE6IT4MyolSkFaVEXV7doztRESU2nidEB8G5UQpyJClwNgSQ9htY0sMMGRxZT0RUTrjdUJ8GJQTpSCdRoEXJ5WGnHDHlhiwdFIpy10REaU5XifER+L1er1CDyKZzGYzdDodTCYTtFqt0MMh6lO++rNtNieyVRkwZImn/iyPTSJx4rGZXsR8nUg3rFNOlMJ0Gp5ciYgoMl4nxIPpK0REREREAmNQTkREREQkMAblREREREQCY1BORERERCQwBuVERERERAJjUE5EREREJDAG5UREREREAmNQTkREREQkMAblREREREQCY1BORERERCQwBuVERERERAITdVDudruxcOFCFBcXQ61W47LLLsNzzz0Hr9cr9NCIiIiIiBJGLvQAolm6dClef/11rF+/HsOHD8fu3bsxffp06HQ6zJs3T+jhERERERElhKiD8k8//RT33HMP7rjjDgDAJZdcgo0bN+If//iHwCMjIiIiIkocUaev3Hjjjfjoo4/wzTffAAD++c9/oqqqChMmTBB4ZEREREREiSPqmfLHHnsMZrMZQ4cOhUwmg9vtxvPPP48pU6ZEfI3dbofdbvf/3Ww298VQiSgGHptE4sRjk0gcRD1T/qc//QlvvvkmNmzYgD179mD9+vV4+eWXsX79+oivWbJkCXQ6nf9PYWFhH46YiCLhsUkkTjw2icRB4hVxKZPCwkI89thjmD17tv+xxYsX449//CMOHToU9jXhvvEXFhbCZDJBq9UmfcxEFB6PTSJx4rFJJA6iTl+xWq2QSoMn82UyGTweT8TXKJVKKJXKZA+NiLqJxyaROPHYJBIHUQfld911F55//nkUFRVh+PDhqK6uxq9+9SvMmDFD6KERERERESWMqIPy5cuXY+HChZg1axYaGxtRUFCAH//4x1i0aJHQQyMiIiIiShhR55Qngtlshk6nY24c9QmT1YEmiwNmmxNadQYMmQroNAqhhyVKPDaJxInHZnrh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hJzyh1mX/ptwJmV7ox6p6uvn1x9l45oOMmlET8JjcawSEUk8KQeAmTNnYubMmWKHQURERESUM5K+p5yIiIiIqD9gUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiU4gdQCr3338/HnjggahtI0eOxKeffipSRP2LvcODJqcHDpcXJq0SVr0KZp1K1HbtHR40t3vgCwQRCAbR4fbBrFP1WmzdJVZfUrRcXId8urZnHC60tHvgcPlg1iqgVhTA3umFQSPtuImI+jrJJ+UAMHbsWLz11lvh5wpFXoSd9061dmLl9oPYfbwpvG1qmRUb5ozH0EKtKO3KAKx+5TC+d/lwPL3nBPbUNfdqbN0lVl9StFxch3y6tvXN7Vi141DUvKm0WbCgshS3PLkXE0cUSTJuIqL+IC9uX1EoFBg8eHD4YbVaxQ6pz7N3eOISDQB473gT7tp+EPYOjyjtvvvZVxg1xBSXkPdGbN0lVl9StFxch3y6tmccrriEHAD21DXj6T0nsLCqVJJxExH1F3mRlB8/fhxDhw7FhRdeiLlz56K+vj5hWbfbDYfDEfWgzDU5PXGJRsh7x5vQ5MzNm3aqdouNalSUFMYlFr0RW3eJ1ZdSI/bczMV1yKdr29LuSThv9tQ1o6KkEID04qbcE3tuElEXySflV1xxBbZu3Yr/+7//w+bNm3HixAlUV1ejra1NsPz69ethNpvDj5KSkl6OuG9wuLxJ97el2J+rdt2+ANy+QNIyuYqtu8TqS6kRe27m4jrk07V1uHxJ90fOKynFTbkn9twkoi6ST8pnzJiBm266CePHj8e1116L1157Da2trXjxxRcFy69atQp2uz38aGho6OWI+waTRpl0vzHF/ly1q1YUQK1IPmxzFVt3idWXUiP23MzFdcina2vSJP8uTuS8klLclHtiz00i6iL5pDxWYWEhLr74YtTV1QnuV6vVMJlMUQ/KnNWgwtQy4Xv3p5ZZYTXkZoWGVO2ebXOjtqEVlTZLr8fWXWL1pdSIPTdzcR3y6doW6VWoSjBvKm0W1Da0ApBe3JR7Ys9NIuqSd0m50+nE559/jiFDhogdSp9m1qmwYc74uIRjapkVG+eMz9myaananXbxQBxrdGBBZWlcYp7r2LpLrL6kaLm4Dvl0bQeZNFg3qzwuMQ+tvrKl5oQk4yYi6i9kwWAwKHYQydx55524/vrrMWLECJw6dQr33XcfDhw4gCNHjmDgwIEpj3c4HDCbzbDb7fzrvxtC6y+3ubwwapSwGnp3nXKhdkPrlPsDQfgDQXR4/DBrey+27hKrL6VKrLmZi+uQT9c2cp1yk1YBjaIAjk4v9Gppx029J1/fN51OJ4xGI2ZvegtKjS5lea+rAy8vuwZtbW0wGAy9ECFRcpJf8PvLL7/ELbfcgubmZgwcOBBVVVX44IMP0krIqefMOnHepJO1K1ZMPZWvcfc1ubgO+XRtB5k0GGTSiB0GERHFkHxS/vzzz4sdAhERERFRTuXdPeVERERERH0Nk3IiIiIiIpExKSciIiIiEhmTciIiIiIikTEpJyIiIiISGZNyIiIiIiKRMSknIiIiIhIZk3IiIiIiIpExKSciIiIiEhmTciIiIiIikTEpJyIiIiISGZNyIiIiIiKRMSknIiIiIhIZk3IiIiIiIpExKSciIiIiEhmTciIiIiIikTEpJyIiIiISGZNyIiIiIiKRMSknIiIiIhIZk3IiIiIiIpExKSciIiIiEhmTciIiIiIikTEpJyIiIiISGZNyIiIiIiKRMSknIiIiIhIZk3IiIiIiIpExKSciIiIiEhmTciIiIiIikeVVUr5hwwbIZDIsX75c7FCIiIiIiLJGIXYA6dq3bx9+85vfYPz48WKHkjfsHR40OT1wuLwwaZWw6lUAgOZ2D/yBIPzBINo6fdCr5dAq5TCoFVApCtDk9KDD40WhVoV2jx8OlxdGjRIGlRyeQACOTl+4PrNOFdWW0+1FoU4FtzcAh8sLg0YBrVKODo8PTpcfZp0CaoUcTrcPHR4/CrVKmLRKuD1+OD0+tJ/bVmxUh+sWOq/WDi/aPT60u/0warvaKNQqYdapwrHYOz3QqRUokMmgKJDBEhFvZF1nHG7YO73hfpDJgGAQGCBQPrZvQ+fr8QXgdPu6+lBeAIfLA5P2/PbY/kr3eiUrn44zDhda2j1wuHwwaRUo0qkwyKTpUZ357h8tHXC4fHB0emHWKmHUKPC1Ih0A4XFsd3mhV8mhVyvCYyySvcMDe6cX7R4/nC4fDBoFCmRAEEFolfHHRF5no0YBtbyga+y7/TCou16SZQVAkVaFIJDw+kXWY9YqoVcr4HT5wuPHoFYIziuXL4CWDg/aXD6YNF3j1eULhGM3qOQwJYk50djMZPzGljWoFWh3+2Dv7PnYz8U8knK7RNR35EVS7nQ6MXfuXDz55JNYu3at2OHkhVOtnVi5/SB2H28Kb6sus2LJVTa4vH78dvffsbuuObxv+qiBuPu60Xjg1b/h6Ok2PPsfk3HXjkPYE1GmymbB6pljcdvv9qPJ6cHUMis2zhmPIICV2w/ioy9a8MgtFXjojWNxx82vLMVd2w9iw5zxeHrPiaj91WVW3D7tIix6Zj86PP7wto1zxmNooTbqvBpbO/HFPzvw6NvHo+uwWbH06jIMMalx987DUeddabNgQWUp1r92FA98Z1y4zlOtnVj50idR/VBps2DJVTZYDGrcs+MQ7v72mLgYQn2b6HwrbRasmTkWD/zhb3j706/C26eWWbFB4JwSXa9k5dNR39yOVQLXcN2scgy36LtVZ777orkddwv0yYOzyqGVF+D/nbuuj/1rBf77jWNxY2Pp9DKMGKDDkHPX5HRrJ5weH+5/9W+oiSm7oLIU2/Z+ge9PvSh8TOR11qnkeOSWirj5UGmz4D+qLkRruxePvX08KobQ9VPJC/BfKeqptllx+1Xn55VOJceW+ZPw+Lk6Ex1XZbPg/hvGodPjx+CYmENix2Ym41eobOg14o7natHh8Xd77OdiHkm5XSLqW2TBYDAodhCpzJs3DwMGDMAvfvELTJs2DZdccgl++ctfpnWsw+GA2WyG3W6HyWTKbaASYe/wYMlztVFvECHVNguuKx+CVTsOR21fMt2G2voW7KlrxlPzJmJLzBt1SNW5ZGPRM/sBAOtnl+O1g43YXdcUVUesSpsFCytLE9ZbabOgYngRHnu7LrxtapkVj95SEfVp/GuHT+OPB08J1lFts2JG+WDcHXNukfUfbGjFo7dUdJ3ztlrsrovvo0qbBTPLh6DYpMEzfz0ZF0Oob5Odb5XNgktizkfonGLrjCVUPh1nHC6sePFAwtgevvkS0T8x7+25+Y+WDvx4+8GEffKT74zD9Id3Ycl0Gw7Ut0Ql2SGVNgtmjh+K68YNBgAcPd0W9wdiZNmK4UWorW/BzPFDMX1UMe78/Sfh65xs/KybNQ6vHWoUjKHKZsGS6WX43hMfpKwncl7Flks1fpdML0OpVR8Vc6TQ2ASQ9vhNNtZjXwMyHfu5mEdSbjeX8vV90+l0wmg0Yvamt6DU6FKW97o68PKya9DW1gaDwdALERIlJ/l7yp9//nl8/PHHWL9+fVrl3W43HA5H1KO/aXJ6BN8gAGB3XTOKBZKxipLC8JtzsUkt+EYNADV1zSg2qcPPi43qcGIbWUesPeeOS7a/oqQwatt7x5vQ5PREnVexMXEdu+uaEiaaofpDdTY5PYIJ+flYNSg2qQVjCPVtsvOtETgfoXOKrTOd8uloafckja2lPfM6e0rsuelw+ZL2idsXANB1XYWSYeDc2DCqw2NIr5anHNOhY1rao69zsvEzyKRJGENNXTP0anla9UTOq9hyqcavXi2PizlS1FxKc/wmKxv7GpDp2M/FPJJyu9kk9twkoi6STsobGhqwbNkyPPvss9Bo0vtUb/369TCbzeFHSUlJjqOUHofLm3R/KPlItM3p8ic9PnJ/5HFC9SY6Lt242iLOxeHypmwj2f7QvjaXN60+CsUbG0M6bSXb3xbTdqpYYsunw+Hy9Wh/Log9Nx2dKfr53P50rmtoDKU7pt2+QFyfpzNWE0k0B1PFkGkbqcZJOnMp0fwREhtTJmM/F/NIyu1mk9hzk4i6SDop/+ijj3D27FlceumlUCgUUCgU2LVrFx555BEoFAr4/fFviKtWrYLdbg8/GhoaRIhcXCaNMul+tSL+skduM2jkcfsjRe6PPE6o3kTHpRuXMeJcTBplyjaS7Q/tM2qUafVRKN7YGNJpK9l+Y0zbqWKJLZ8Okyb510VS7c8FseemSZuin8/tT+e6hsZQumNarSiI6/N0xmoiieZgqhgybSPVOElnLiWaP0JiY8pk7OdiHkm53WwSe24SURdJJ+VXX301Dh06hAMHDoQfEydOxNy5c3HgwAHI5fFviGq1GiaTKerR31gNKkwtswruq7ZZcNbhitte29CKKpsFAHDW4Q7/O1aVzYKzDnf4+dk2d7it2oZWVCY4rvLcccn21za0Rm2bWmaF1XD+XkyrQYWzbYnrqLZZBc8tsv5QnVaDCtUJ+qjyXB+ddbgFY0jnfKsEzkfonGLrTKd8Oor0qqTXsEjf+/e4ij03TRpF0j4JJYS1Da2oTjaO29zhMdTu9iesMzTmQscU6aOvc7Lxc8bhShhDlc2Cdvf5DyRSzbvQOIwtl2r8trv9cTFHipxL6Y7fZGVjXwMyHfu5mEdSbjebxJ6bRNRF0km50WjEuHHjoh56vR4WiwXjxo0TOzzJMutU2DBnfNwbRXWZFUuml2FooRbVtuh9R07Zcf8N41BdZsXK7QexeubYuGSjymbBmuvHYuX2gwC63nCuunhguK0tNSewoLI07o0+9OXQldsPYkFlaVy9XavClGFLzYmobRvnjI/6gpRZp8K0iwdi6fSyuDaqbVbccXUZqmzWuPMOrYRxrNERrtOsU2HjnPFxiXnX6itlmFg6ADs+/lIwhlTnW3mun46cskdtnypwTrF1plM+HYNMGqybVS54DdfNKhf9S55i+FqRDg8m6JMHZ5XDoJSfv65VpXFzJLT6ylUXDwyPoQsG6HD/DePi6gyNuSOn7OFjBpk0Udc5NH6Ejh1i1mLJ9LK4GELX74IBupT1VNui59WWmhNYOr0sPOYTHRdafaV0gC4u5pDIsZnJ+E1UNvQaEYq1O2M/F/NIyu0SUd+TF6uvROLqK+kLrZvbdm6d8dAnNlHrlLt80Knk0MWsU97p8cKcYJ3ytk5fuL7Ydcrb3V3Hdd1D64VBrYBWdW6dcrcfZm3XOuXt7vNrJ0euU97h8cOc6Trlmq424tcp90KnkkNeIIM8jXXKdefWKZfLgECa65SHztfjD6Dd7YP+3DrlbS4PjJrz22P7K93rldV1yjUKFOmls065WHMztE55qJ9NAuuUt7u9MEest69TyaFXKVCoy3CdckX8MZHX2RCzTrlerYAMgEwGFOli1imPuX6R9Zgi1ikPnZdBoxCcV5HrlIfWSXdFrLOfbJ3yZGMzk/EbW9ag6Vqn3NHZ87Gfi3kk5XZzIV/fN7n6CuW7vEvKM5WvLy5EfR3nJpE05evcZFJO+U7St68QEREREfUHTMqJiIiIiESW86Tc4/Hg2LFj8Pl6f11kIiIiIqJ8kLOkvKOjA4sWLYJOp8PYsWNRX18PAFi6dCk2bNiQq2aJiIiIiPJOzpLyVatW4ZNPPsG7774b9Wuc11xzDV544YVcNUtERERElHdy9rN+O3fuxAsvvIDJkydDJpOFt48dOxaff/55rpolIiIiIso7Ofuk/KuvvkJxcXHc9vb29qgknYiIiIiov8tZUj5x4kT86U9/Cj8PJeK//e1vMWXKlFw1S0RERESUd3J2+8q6deswY8YMHDlyBD6fD5s2bcKRI0fw17/+Fbt27cpVs0REREREeSdnn5RXVVXhwIED8Pl8KC8vx5///GcUFxfj/fffx2WXXZarZomIiIiI8k7OPikHgIsuughPPvlkLpsgIiIiIsp7OfukfPr06XjggQfitre0tGD69Om5apaIiIiIKO/k7JPyd999F4cOHUJtbS2effZZ6PV6AF2/8Ml7yomIiIiIzsvZJ+UA8NZbb+H06dOYPHkyTp48mcumiIiIiIjyVk6T8iFDhmDXrl0oLy/HpEmT8O677+ayOSIiIiKivJSzpDy0Lrlarca2bduwbNkyfOtb38KvfvWrXDVJRERERJSXcnZPeTAYjHp+7733YvTo0Zg3b16umiQiIiIiyks5S8pPnDgBq9UatW3OnDkYOXIkPvroo1w1S0RERESUd3KWlI8YMUJw+7hx4zBu3LhcNUtERERElHeympTPnj0bW7duhclkwuzZs5OWffnll7PZNBERERFR3spqUm42m8Nf8DSbzdmsmoiIiIioz8pqUv7000+H//2rX/0KgUAg/KNBJ0+exM6dOzF69Ghce+212WyWiIiIiCiv5WxJxO985zv4n//5HwBAa2srJk+ejIcffhg33ngjNm/enKtmiYiIiIjyTs6S8o8//hjV1dUAgJdeegmDBg3CF198gd/97nd45JFHctUsEREREVHeyVlS3tHRAaPRCAD485//jNmzZ6OgoACTJ0/GF198katmiYiIiIjyTs6ScpvNhp07d6KhoQFvvPEGvvnNbwIAzp49C5PJlKtmiYiIiIjyTs6S8jVr1uDOO+/EBRdcgCuuuAJTpkwB0PWpeUVFRa6aJSIiIiLKOzn78aDvfve7qKqqQmNjIyZMmBDefvXVV2PWrFm5apaIiIiIKO/kLCkHgMGDB2Pw4MFR2y6//PJcNklERERElHdympRnw+bNm7F582acPHkSADB27FisWbMGM2bMEDewHjrjcKGl3QOHyweTVoEinQqDTJoe12vv8OCMww17pxd6tRwapRxefwAyGaAoKEBLuwcG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LH5cda2UUo7Fz34crtdWbMDac+0D8fMl9Hz7Rw0Jx1iozti5Fxv/kVN2LJ1ehosHGcJxLf7fj7H2xvKU8zNUx9FTdjw4qzzpqieRfSp0TiGxYzTRWK4us2Lp9Oi+5PgmIuo+ya++cvvtt2Pbtm145ZVXotYmN5vN0GpT/xWX7W+Rh9bqbXN5YdQoYTUkWKfc44dJk3qdcpNGCbUiZp3yc/+OWqf83Brh/2z3QHNunXJVxDrlJp0Cuoh1yk1aZXhd88jyydYp16m61gfv9IbWLVdAo+hapzzyuaJABuDcOuVBIBgE2t0+GBOsU27UnKvn3BrNOlXX+s5aVdc65f5gEHKZLGod8+h1yr3QqeSQF8ggz2Cd8jaXF8bYdco1ShTp49cpj72e2ZLr+vNZOnMz0TrloTW6IQOMyvPrlHd6/NCrFSgQWKfcoFagMGKd8tA1iVynXKfumiux65SH5lTsOuU6lQLuyHXKI+r8Z7sbCkVXfbHrlIfiF1qnvM3lhT5mnfLIejt9frR1+qCL6ANTN9YpD52T8dw65anGqNBYjoyZ47vv4OorjKc34qF4kr+nfPPmzQCAadOmRW1/+umnMX/+/F6Px6wTftNJtD1d6X7+Xzoww3ozLC81xd14P8jkWvT0uoldf183tFCbkzWvvya0MctzpSTFmuFCemOsdLdPk732ERFRz0k+KZf4B/lERERERD0m+XvKiYiIiIj6OiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCKTfFL+3nvv4frrr8fQoUMhk8mwc+dOsUMiIiIiIsoqhdgBpNLe3o4JEyZg4cKFmD17dk7asHd40OT0wOHywqRVwqpXwaxT9bgOAIL1ZqM9ov7gjMOFlnYPHC4fTFoFinQqDDJpMqrD3uFBc7sHvkAQgWAQHW4fzDoV5x0REUmK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qFGjcOrUKaxcuRJr1qwRPAYA5HI5HnjggfDz0tJSvP/++3jxxRdx8803dyu+kpIS/OIXv4BMJsPIkSNx6NAh/OIXv8Btt93WsxMn6meE5u2nn34aV87r9eKxxx7DFVdcAaDrD+PRo0fjww8/xOWXX96rMRP1RY2NjfD5fJg9ezZGjBgBACgvL48rJ5fLw3PV5XLhxhtvxJQpU3D//fcDANavX4+5c+eGF0QoKyvDI488gq9//evYvHkzNBpNr5wPZY6flFPajh49iilTpkAmk4W3VVZWwul04ssvv0x67OOPP47LLrsMAwcOhMFgwBNPPIH6+vpuxzJ58uSoOKZMmYLjx4/D7/d3u04iSkyhUGDSpEnh56NGjUJhYSGOHj0qYlREfceECRNw9dVXo7y8HDfddBOefPJJtLS0JD1m4cKFaGtrw7Zt21BQ0JXSffLJJ9i6dSsMBkP4ce211yIQCODEiRO9cSrUTUzKKeeef/553HnnnVi0aBH+/Oc/48CBA1iwYAE8Ho/YoREREUmCXC7Hm2++iddffx1jxozBo48+ipEjRyZMpNeuXYs33ngDr776KoxGY3i70+nEf/7nf+LAgQPhxyeffILjx4/joosu6q3ToW7g7SuUkEqlivrkefTo0di+fTuCwWD4U+o9e/bAaDRi2LBhgseEylx55ZW4/fbbw9s+//zzHsW2d+/eqOcffPABysrKIJfLe1QvUX8kNG9j+Xw+7N+/P3yryrFjx9Da2orRo0f3RohE/YJMJkNlZSUqKyuxZs0ajBgxAjt27Igrt337dvzkJz/B66+/HpdoX3rppThy5AhsNltvhU1Zwk/KKaELLrgAe/fuxcmTJ9HU1ITbb78dDQ0NWLp0KT799FO88soruO+++7BixYrwf5vFHhMIBFBWVob9+/fjjTfewGeffYbVq1dj3759PYqtvr4eK1aswLFjx/Dcc8/h0UcfxbJly7Jx2kT9jtC8jaVUKrF06VLs3bsXH330EebPn4/JkyfzfnKiLNm7dy/WrVuH/fv3o76+Hi+//DK++uqruD98Dx8+jFtvvRUrV67E2LFjcfr0aZw+fRr//Oc/AQArV67EX//6VyxZsgQHDhzA8ePH8corr/CLnnmASTkldOedd0Iul2PMmDEYOHAgvF4vXnvtNXz44YeYMGECfvCDH2DRokW49957Ex5TX1+P//zP/8Ts2bPxL//yL7jiiivQ3Nwc9al5d9x6663o7OzE5ZdfjsWLF2PZsmX4/ve/39NTJuqXhOZtLJ1Oh5UrV+Jf//VfUVlZCYPBgBdeeEGEaIn6JpPJhPfeew/XXXcdLr74Ytx77714+OGHMWPGjKhy+/fvR0dHB9auXYshQ4aEH7NnzwYAjB8/Hrt27cJnn32G6upqVFRUYM2aNRg6dKgYp0UZkAX5E1FERJTE1q1bsXz58vC65URElH38pJyIiIiISGRMyklS6uvro5Zxin30ZBlFIiIiIqni7SskKT6fDydPnky4/4ILLoBCwUWDiIiIqG9hUk5EREREJDLevkJEREREJDIm5UREREREImNSTkREREQkMiblREREREQiY1JORERERCQyJuVERERERCJjUk5EREREJDIm5UREREREIvv/YFwyl12zT+kAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Pairplot\n", + "sns.pairplot(tips)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
........................
23929.035.92MaleNoSatDinner3
24027.182.00FemaleYesSatDinner2
24122.672.00MaleYesSatDinner2
24217.821.75MaleNoSatDinner2
24318.783.00FemaleNoThurDinner2
\n", + "

244 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " total_bill tip sex smoker day time size\n", + "0 16.99 1.01 Female No Sun Dinner 2\n", + "1 10.34 1.66 Male No Sun Dinner 3\n", + "2 21.01 3.50 Male No Sun Dinner 3\n", + "3 23.68 3.31 Male No Sun Dinner 2\n", + "4 24.59 3.61 Female No Sun Dinner 4\n", + ".. ... ... ... ... ... ... ...\n", + "239 29.03 5.92 Male No Sat Dinner 3\n", + "240 27.18 2.00 Female Yes Sat Dinner 2\n", + "241 22.67 2.00 Male Yes Sat Dinner 2\n", + "242 17.82 1.75 Male No Sat Dinner 2\n", + "243 18.78 3.00 Female No Thur Dinner 2\n", + "\n", + "[244 rows x 7 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tips" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
total_billtipsize
total_bill1.0000000.6757340.598315
tip0.6757341.0000000.489299
size0.5983150.4892991.000000
\n", + "
" + ], + "text/plain": [ + " total_bill tip size\n", + "total_bill 1.000000 0.675734 0.598315\n", + "tip 0.675734 1.000000 0.489299\n", + "size 0.598315 0.489299 1.000000" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## HEatmap\n", + "corr=tips[['total_bill','tip','size']].corr()\n", + "corr" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(corr,annot=True,cmap='coolwarm')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Transaction IDDateProduct CategoryProduct NameUnits SoldUnit PriceTotal RevenueRegionPayment Method
0100012024-01-01ElectronicsiPhone 14 Pro2999.991999.98North AmericaCredit Card
1100022024-01-02Home AppliancesDyson V11 Vacuum1499.99499.99EuropePayPal
2100032024-01-03ClothingLevi's 501 Jeans369.99209.97AsiaDebit Card
3100042024-01-04BooksThe Da Vinci Code415.9963.96North AmericaCredit Card
4100052024-01-05Beauty ProductsNeutrogena Skincare Set189.9989.99EuropePayPal
\n", + "
" + ], + "text/plain": [ + " Transaction ID Date Product Category Product Name \\\n", + "0 10001 2024-01-01 Electronics iPhone 14 Pro \n", + "1 10002 2024-01-02 Home Appliances Dyson V11 Vacuum \n", + "2 10003 2024-01-03 Clothing Levi's 501 Jeans \n", + "3 10004 2024-01-04 Books The Da Vinci Code \n", + "4 10005 2024-01-05 Beauty Products Neutrogena Skincare Set \n", + "\n", + " Units Sold Unit Price Total Revenue Region Payment Method \n", + "0 2 999.99 1999.98 North America Credit Card \n", + "1 1 499.99 499.99 Europe PayPal \n", + "2 3 69.99 209.97 Asia Debit Card \n", + "3 4 15.99 63.96 North America Credit Card \n", + "4 1 89.99 89.99 Europe PayPal " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "sales_df=pd.read_csv('sales_data.csv')\n", + "sales_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAIjCAYAAABswtioAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABXIElEQVR4nO3deXwN9/7H8fdJZJPVFpGKhMYW+y5dLirEWlp6aXtJbb0ULVpKF1QX3ZS2lNvN0laruliLxq6kKI1daGu7JZaShJSE5Pv7o7/MdSRINAzJ6/l4nAcz8z0znzNnzsx5Z2a+x2GMMQIAAAAA3HAudhcAAAAAAIUVgQwAAAAAbEIgAwAAAACbEMgAAAAAwCYEMgAAAACwCYEMAAAAAGxCIAMAAAAAmxDIAAAAAMAmBDIAAAAAsAmBDABww61cuVIOh0MrV6684ctu2rSpmjZtekOX6XA4NGDAgBu6TDuEhYXpkUcesbsMALilEMgAoJBwOBy5euQmJL3yyiuaM2fOda9ZkrZt26bOnTsrNDRUnp6euu2229SiRQu9++67N2T5t4qskJv1cHNzU4UKFdS9e3f99ttvdpeXL2bOnKkJEybYXQYA5KsidhcAALgxPvnkE6fhGTNmKDY2Ntv4qlWrXnVer7zyijp37qyOHTvmZ4nZrFu3Ts2aNVO5cuXUp08fBQUF6dChQ/rxxx/19ttva+DAgdd1+beixx9/XA0aNND58+e1efNmvf/++1q4cKG2bdum4OBgu8v7W2bOnKnt27dr0KBBdpcCAPmGQAYAhcS//vUvp+Eff/xRsbGx2cbfTF5++WX5+/tr48aNCggIcJp27Ngxe4q6yd19993q3LmzJKlHjx6qVKmSHn/8cU2fPl0jRozI8Tmpqany9va+kWUCAP4flywCACypqal68sknFRISIg8PD1WuXFlvvvmmjDFWG4fDodTUVE2fPt26PC7rvqEDBw7oscceU+XKleXl5aUSJUrogQce0P79+6+pnl9//VXVqlXLFsYkKTAw0Gl46tSpuueeexQYGCgPDw9FRERo8uTJuVpOWlqaRo0apfDwcHl4eCgkJETDhg1TWlqaU7vY2FjdddddCggIkI+PjypXrqxnnnkm16/ns88+U+XKleXp6al69epp9erV1rQVK1bI4XDo22+/zfa8mTNnyuFwKC4uLtfLynLPPfdIkvbt2ydJGj16tBwOh3bu3KmHHnpIxYoV01133SVJunDhgl588UXdfvvt8vDwUFhYmJ555pls68EYo5deeklly5ZV0aJF1axZM+3YsSPbsrOWdalp06bJ4XBk2y4WLVqkJk2ayNfXV35+fmrQoIFmzpwp6a97/xYuXKgDBw5Y211YWFie1wcA3Gw4QwYAkPTXl+x7771XK1asUK9evVS7dm0tWbJEQ4cO1e+//67x48dL+uvSx969e6thw4Z69NFHJUm33367JGnjxo1at26dunbtqrJly2r//v2aPHmymjZtqp07d6po0aJ5qik0NFRxcXHavn27qlevfsW2kydPVrVq1XTvvfeqSJEimj9/vh577DFlZmaqf//+l31eZmam7r33Xv3www969NFHVbVqVW3btk3jx4/Xnj17rHvlduzYoXbt2qlmzZoaM2aMPDw89Msvv2jt2rW5ei2rVq3SrFmz9Pjjj8vDw0PvvfeeWrVqpQ0bNqh69epq2rSpQkJC9Nlnn+m+++5zeu5nn32m22+/XZGRkbla1sV+/fVXSVKJEiWcxj/wwAOqWLGiXnnlFStw9+7dW9OnT1fnzp315JNPav369Ro7dqx27drlFBRHjhypl156SW3atFGbNm20efNmtWzZUunp6XmuL8u0adPUs2dPVatWTSNGjFBAQIB+/vlnLV68WA899JCeffZZJScn67///a+1Lfr4+Fzz8gDgpmEAAIVS//79zcWHgTlz5hhJ5qWXXnJq17lzZ+NwOMwvv/xijfP29jYxMTHZ5vnnn39mGxcXF2ckmRkzZljjVqxYYSSZFStWXLHG77//3ri6uhpXV1cTGRlphg0bZpYsWWLS09Nztezo6GhToUIFp3FNmjQxTZo0sYY/+eQT4+LiYtasWePUbsqUKUaSWbt2rTHGmPHjxxtJ5vjx41esOSeSjCTz008/WeMOHDhgPD09zX333WeNGzFihPHw8DBJSUnWuGPHjpkiRYqYUaNGXXEZWev0448/NsePHzeHDx82CxcuNGFhYcbhcJiNGzcaY4wZNWqUkWQefPBBp+fHx8cbSaZ3795O45966ikjySxfvtyqx93d3bRt29ZkZmZa7Z555hkjyWm7yFrWpaZOnWokmX379hljjElKSjK+vr6mUaNG5uzZs05tL15G27ZtTWho6BXXAwDcarhkEQAgSfruu+/k6uqqxx9/3Gn8k08+KWOMFi1adNV5eHl5Wf8/f/68/vjjD4WHhysgIECbN2/Oc00tWrRQXFyc7r33Xm3ZskWvv/66oqOjddttt2nevHmXXXZycrJOnDihJk2a6LffflNycvJllzF79mxVrVpVVapU0YkTJ6xH1qV+K1askCTrssm5c+cqMzMzz68lMjJS9erVs4bLlSunDh06aMmSJcrIyJAkde/eXWlpafrqq6+sdrNmzdKFCxdyfa9fz549VapUKQUHB6tt27bW5aX169d3ate3b1+n4e+++06SNGTIEKfxTz75pCRp4cKFkqSlS5cqPT1dAwcOdLoc8e90tBEbG6vTp09r+PDh8vT0dJqW0yWPAFCQEMgAAJL+uv8rODhYvr6+TuOzel08cODAVedx9uxZjRw50roHrWTJkipVqpSSkpKuGIqupEGDBvrmm2906tQpbdiwQSNGjNDp06fVuXNn7dy502q3du1aRUVFydvbWwEBASpVqpR1f9eVlr13717t2LFDpUqVcnpUqlRJ0v86D+nSpYvuvPNO9e7dW6VLl1bXrl315Zdf5jqcVaxYMdu4SpUq6c8//9Tx48clSVWqVFGDBg302WefWW0+++wzNW7cWOHh4blazsiRIxUbG6vly5dr69atOnz4sLp165atXfny5Z2GDxw4IBcXl2zLCQoKUkBAgPX+Z/176espVaqUihUrlqsaL5V1WeXVLksFgIKIe8gAAPlm4MCBmjp1qgYNGqTIyEj5+/vL4XCoa9eu13RW6WLu7u5q0KCBGjRooEqVKqlHjx6aPXu2Ro0apV9//VXNmzdXlSpV9NZbbykkJETu7u767rvvNH78+CsuOzMzUzVq1NBbb72V4/SQkBBJf52BW716tVasWKGFCxdq8eLFmjVrlu655x59//33cnV1/VuvL0v37t31xBNP6L///a/S0tL0448/auLEibl+fo0aNRQVFXXVdhefUbxYfp6Ruty8ss4IAgAIZACA/xcaGqqlS5fq9OnTTmfJdu/ebU3Pcrkv2l999ZViYmI0btw4a9y5c+eUlJSUr7VmXX535MgRSdL8+fOVlpamefPmqVy5cla7rMsNr+T222/Xli1b1Lx586uGERcXFzVv3lzNmzfXW2+9pVdeeUXPPvusVqxYcdUQtHfv3mzj9uzZo6JFi6pUqVLWuK5du2rI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m9tvv918+OGHxhhjTp48aR566CFTsmRJ4+npacLDw83HH398DWs1/13ufVqxYoWRZE6dOmWN++qrr6z1Hxoaat58802n54SGhpoXX3zRdOvWzXh7e5ty5cqZuXPnmmPHjlnru0aNGmbjxo1Oz1uzZo256667jKenpylbtqwZOHCgOXPmzFVrb9q0qZkyZYqZPHmyadGiRbbpksx7771nWrVqZTw9PU358uXN7Nmzren79u0zksznn39uIiMjjYeHh6lWrZpZuXLlZdfD1KlTjb+/vzX9l19+Mffee68JDAw03t7epn79+iY2Njbbenn55ZdNjx49jI+PjwkJCTH/+c9/nNocOnTIdO3a1RQrVswULVrU1KtXz/z444/W9Dlz5pg6deoYDw8PU758eTN69Ghz/vx5Y4wxmZmZZtSoUSYkJMS4u7ubMmXKmIEDB151/d1MWrdubW677bYc3/esdX/pPmPr1q2mWbNmxtPT0xQvXtz06dPHnD592hjz12f44n2CJLNixQrrPf/6669N06ZNjZeXl6lZs6ZZt26dNd9L3+Pc7A9SUlLMQw89ZIoWLWqCgoLMW2+9lW0fgb8np33VmjVrjCRz7NgxY8yVtwljjMnIyDAvvPCCue2224y7u7upVauWWbRokTU9a/v4+eefjTHGXLhwwfTo0cNUrlzZHDhwoEB81vIiN+vcmKsfvzds2GCioqJMiRIljJ+fn/nHP/5hNm3aZE2/dL0b89fn/tLP7cWPmJgYM336dFO8eHFz7tw5pxo7dOhg/vWvf132dV26L/n999+NJDNlyhRr+nvvvWfat29vihYtakaNGmWMMea9994zFSpUMG5ubqZSpUpmxowZTvPds2ePufvuu42Hh4epWrWq+f77752WldNx9eeffzaSnNbXDz/8YJo0aWK8vLxMQECAadmypTl58qSJiYnJth727dt3U3/HyC9Z28PFx+dLXe2Yb8zV9xFZ2/xLL71kypQpY8LCwkyTJk2yrXdjjNm/f79p166dCQgIMEWLFjURERFm4cKF12cF2IxAdgvLSyBLT083VatWNT179jRbt241O3fuNA899JCpXLmySUtLM8b8tSP09PQ0EyZMMAkJCWbDhg1m/Pjxxhhjjh07ZiSZqVOnmiNHjlgHilGjRhlvb2/TqlUrs3nzZrNlyxaTkZFhateube666y7z008/mR9//NHUq1fPNGnSxKpt1KhRxsfHx9x///1m27ZtZvXq1SYoKMg888wzVptLv2z985//NCEhIeabb74xv/76q1m6dKn54osvjDHG9O/f39SuXdts3LjR7Nu3z8TGxpp58+b9/ZWcD3IbyH766Sfj4uJixowZYxISEszUqVONl5eXmTp1qvWc0NBQU7x4cTNlyhSzZ88e069fP+Pn52datWplvvzyS5OQkGA6duxoqlatajIzM40xfwUab29vM378eLNnzx6zdu1aU6dOHfPII49cse5ffvnFeHh4mJMnT5o//vjDeHp6mv379zu1kWRKlChhPvjgA5OQkGCee+454+rqanbu3GmM+d+XgLJly5qvvvrK7Ny50/Tu3dv4+vqaEydO5LgeLv2yHh8fb6ZMmWK2bdtm9uzZY5577jnj6elpDhw4kG29TJo0yezdu9eMHTvWuLi4mN27dxtjjDl9+rSpUKGCufvuu82aNWvM3r17zaxZs6yQsHr1auPn52emTZtmfv31V/P999+bsLAwM3r0aGOMMbNnzzZ+fn7mu+++MwcOHDDr168377///hXX383kjz/+MA6Hw7zyyitXbHfxPuPMmTOmTJky1md02bJlpnz58iYmJsYY89c6/ec//2latWpljhw5Yo4cOWLS0tKs97xKlSpmwYIFJiEhwXTu3NmEhoZaATenQHa1/UHv3r1NaGioWbp0qdm2bZu57777jK+vL4EsH126rzp9+rT597//bcLDw01GRsZVtwljjHnrrbeMn5+f+fzzz83u3bvNsGHDjJubm9mzZ48xxjkYnDt3ztx3332mTp061jHlVv+s5dXV1rkxuTt+L1u2zHzyySdm165dZufOnaZXr16mdOnS1h81rhbILly4YL7++msjySQkJJgjR46YpKQk8+effxp/f3/z5ZdfWs87evSoKVKkiFm+fPllX9elgezkyZNGknnnnXes6YGBgebjjz82v/76qzlw4ID55ptvjJubm5k0aZJJSEgw48aNM66urtZyMjIyTPXq1U3z5s1NfHy8WbVqlalTp06eA9nPP/9sPDw8TL9+/Ux8fLzZvn27effdd83x48dNUlKSiYyMNH369LH2axcuXLipv2Pkl/PnzxsfHx8zaNCgbAE8y9WO+bnZR8TExBgfHx/TrVs3s337drN9+3bzxx9/mLJly5ox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3VujRo3SI488km/LyO1737t3b0VHR2vhwoX6/vvvNXbsWI0bN04DBw7Mt1puFpwhKyTq1q2rvXv3KjAwUOHh4U4Pf39/+fr6Kiws7IrdX7u5uTmdqbmcqlWr6tChQzp06JA1bufOnUpKSlJERMQ11V+jRg1lZmZq1apVl21TqlQpxcTE6NNPP9WECRP0/vvvX9Oy7FK1atVsXcuuXbtWlSpVkqur6zXPt27dutq5c2e29z08PPyyf6H66KOP1LVr12xn9bp27aqPPvrIqe2PP/6Ybbhq1aqXbXPhwgVt2rQpW5vLWbt2rR555BHdd999qlGjhoKCgrR///5cPTdLzZo1FR8fr5MnT+Y4vW7dukpISMhxHWUd4L28vNS+fXu98847WrlypeLi4rRt27Y81WGX4sWLKzo6WpMmTVJqamq26Tl1c121alVt2bLFqf3atWvl4uJinZlyd3fP1T7h76pQoYLc3Ny0ceNGa1xycjJd598ADodDLi4uOnv27FW3CT8/PwUHB+e4H7t039+vXz+9+uqruvfee7Pt12/lz1p+uHidS1c/fkt/rePHH39cbdq0UbVq1eTh4aETJ05Y88wKREeOHLHGXfpbcFnHg5w+071799a0adM0depURUVFOV0BczlBQUEKDw/PMYzl5HLHwKxtJ+u7xcWv4dLjT25eZ82aNa/4Xedy+7Vb/TvGtYqIiHD6zF/pmJ+b48blXG69h4SEqG/fvvrmm2/05JNP5vsfh24WBLJbXFpamhITE50eF++Eszz88MMqWbKkOnTooDVr1mjfvn1auXKlHn/8cetMzejRozVu3Di988472rt3rzZv3qx3333XmkdWYEtMTNSpU6cuW1NUVJRq1Kihhx9+WJs3b9aGDRvUvXt3NWnSJNslCrkVFhammJgY9ezZU3PmzLHq//LLLyVJI0eO1Ny5c/XLL79ox44dWrBgQa6/8N8snnzySS1btkwvvvii9uzZo+nTp2vixIl66qmn/tZ8n376aa1bt04DBgxQfHy89u7dq7lz52rAgAE5tj9+/Ljmz5+vmJgYVa9e3enRvXt3zZkzxynYzJ49Wx9//LH27NmjUaNGacOGDdnmPWnSJH377bfavXu3+vfvr1OnTqlnz565qr9ixYr65ptvFB8fry1btuihhx7K85mTBx98UEFBQerYsaPWrl2r3377TV9/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Plot total sales by product\n", + "plt.figure(figsize=(10,6))\n", + "sns.barplot(x='Product Category',y=\"Total Revenue\",data=sales_df,estimator=sum)\n", + "plt.title('Total Sales by Product')\n", + "plt.xlabel('Product')\n", + "plt.ylabel('Total Sales')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "## Plot total sales by Region\n", + "plt.figure(figsize=(10,6))\n", + "sns.barplot(x='Region',y=\"Total Revenue\",data=sales_df,estimator=sum)\n", + "plt.title('Total Sales by Region')\n", + "plt.xlabel('Region')\n", + "plt.ylabel('Total Sales')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10-Data Analysis With Python/data.csv b/10-Data Analysis With Python/data.csv new file mode 100644 index 000000000..a670b6d53 --- /dev/null +++ b/10-Data Analysis With Python/data.csv @@ -0,0 +1,51 @@ +Date,Category,Value,Product,Sales,Region +2023-01-01,A,28.0,Product1,754.0,East +2023-01-02,B,39.0,Product3,110.0,North +2023-01-03,C,32.0,Product2,398.0,East +2023-01-04,B,8.0,Product1,522.0,East +2023-01-05,B,26.0,Product3,869.0,North +2023-01-06,B,54.0,Product3,192.0,West +2023-01-07,A,16.0,Product1,936.0,East +2023-01-08,C,89.0,Product1,488.0,West +2023-01-09,C,37.0,Product3,772.0,West +2023-01-10,A,22.0,Product2,834.0,West +2023-01-11,B,7.0,Product1,842.0,North +2023-01-12,B,60.0,Product2,,West +2023-01-13,A,70.0,Product3,628.0,South +2023-01-14,A,69.0,Product1,423.0,East +2023-01-15,A,47.0,Product2,893.0,West +2023-01-16,C,,Product1,895.0,North +2023-01-17,C,93.0,Product2,511.0,South +2023-01-18,C,,Product1,108.0,West +2023-01-19,A,31.0,Product2,578.0,West +2023-01-20,A,59.0,Product1,736.0,East +2023-01-21,C,82.0,Product3,606.0,South +2023-01-22,C,37.0,Product2,992.0,South +2023-01-23,B,62.0,Product3,942.0,North +2023-01-24,C,92.0,Product2,342.0,West +2023-01-25,A,24.0,Product2,458.0,East +2023-01-26,C,95.0,Product1,584.0,West +2023-01-27,C,71.0,Product2,619.0,North +2023-01-28,C,56.0,Product2,224.0,North +2023-01-29,B,,Product3,617.0,North +2023-01-30,C,51.0,Product2,737.0,South +2023-01-31,B,50.0,Product3,735.0,West +2023-02-01,A,17.0,Product2,189.0,West +2023-02-02,B,63.0,Product3,338.0,South +2023-02-03,C,27.0,Product3,,East +2023-02-04,C,70.0,Product3,669.0,West +2023-02-05,B,60.0,Product2,,West +2023-02-06,C,36.0,Product3,177.0,East +2023-02-07,C,2.0,Product1,,North +2023-02-08,C,94.0,Product1,408.0,South +2023-02-09,A,62.0,Product1,155.0,West +2023-02-10,B,15.0,Product1,578.0,East +2023-02-11,C,97.0,Product1,256.0,East +2023-02-12,A,93.0,Product3,164.0,West +2023-02-13,A,43.0,Product3,949.0,East +2023-02-14,A,96.0,Product3,830.0,East +2023-02-15,B,99.0,Product2,599.0,West +2023-02-16,B,6.0,Product1,938.0,South +2023-02-17,B,69.0,Product3,143.0,West +2023-02-18,C,65.0,Product3,182.0,North +2023-02-19,C,11.0,Product3,708.0,North diff --git a/10-Data Analysis With Python/data.xlsx b/10-Data Analysis With Python/data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fcf96280e677e082b253c01f5692031bef3f3934 GIT binary patch literal 8145 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 P6Y&W|#A)FNKfe7RX`1i0 literal 0 HcmV?d00001 diff --git a/10-Data Analysis With Python/df_excel b/10-Data Analysis With Python/df_excel new file mode 100644 index 0000000000000000000000000000000000000000..a324d7c63808b7f370a5d215a2d6f62083274dbb GIT binary patch literal 794 zcmZuv-HX&P5Z~Qy{kRjCQ`8kfMG)4PKHr0K=!xJ}E8P1L(l*_eOVg61oC_Z4gX)N#^4>^P8{X&q*-w3-(&Ba&Drm(IP4|uLZ)*x7_k~USHvhZ+MO~ z7_)k=5gu=wSIP>lxHM7C6`u=j5N^GZO?LXRzvBww{@R1dDmBqx7laAxR9j`IQn1wd zIOBV&tJ_5nrtYMzxYm3@QJEH5qm0#EW}RW^4H2#rcyF@8c<>z$hbjKRW1Pi9+QAab z352;_w8A-!KJDY>MgJeb@CznMa`c;)KjH(6>E#L48pgUZCBpcK6D$%@sMc<{dat}$jba)Qn;r~)=uE-pAj-A}f zSAIySwU%p3jfJtXO^b2h6hX?+#}qCwO(gM3!|L#D2A9>sau4`~7~XHfM(AT}%9NE12Y|kOnVImqvd8F+nj{ literal 0 HcmV?d00001 diff --git a/10-Data Analysis With Python/sales1_data.csv b/10-Data Analysis With Python/sales1_data.csv new file mode 100644 index 000000000..bf7d7d235 --- /dev/null +++ b/10-Data Analysis With Python/sales1_data.csv @@ -0,0 +1,26 @@ +Date,Product,Sales,Region +2023-01-01,Product3,738.0,West +2023-01-02,Product2,868.0,North +2023-01-03,Product2,554.0,West +2023-01-04,Product1,618.0,South +2023-01-05,Product3,501.0,East +2023-01-06,Product1,,West +2023-01-07,Product3,339.0,South +2023-01-08,Product3,280.0,South +2023-01-09,Product2,806.0,North +2023-01-10,Product2,816.0,South +2023-01-11,Product3,469.0,West +2023-01-12,Product3,,East +2023-01-13,Product3,,East +2023-01-14,Product3,676.0,East +2023-01-15,Product1,183.0,South +2023-01-16,Product1,424.0,South +2023-01-17,Product1,,South +2023-01-18,Product1,,South +2023-01-19,Product2,124.0,North +2023-01-20,Product3,732.0,West +2023-01-21,Product2,,West +2023-01-22,Product3,296.0,West +2023-01-23,Product2,737.0,West +2023-01-24,Product3,531.0,East +2023-01-25,Product2,834.0,North diff --git a/10-Data Analysis With Python/sales_data.csv b/10-Data Analysis With Python/sales_data.csv new file mode 100644 index 000000000..dd13b61f1 --- /dev/null +++ b/10-Data Analysis With Python/sales_data.csv @@ -0,0 +1,241 @@ +Transaction ID,Date,Product Category,Product Name,Units Sold,Unit Price,Total Revenue,Region,Payment Method +10001,2024-01-01,Electronics,iPhone 14 Pro,2,999.99,1999.98,North America,Credit Card +10002,2024-01-02,Home Appliances,Dyson V11 Vacuum,1,499.99,499.99,Europe,PayPal +10003,2024-01-03,Clothing,Levi's 501 Jeans,3,69.99,209.97,Asia,Debit Card +10004,2024-01-04,Books,The Da Vinci Code,4,15.99,63.96,North America,Credit Card +10005,2024-01-05,Beauty Products,Neutrogena Skincare Set,1,89.99,89.99,Europe,PayPal +10006,2024-01-06,Sports,Wilson Evolution Basketball,5,29.99,149.95,Asia,Credit Card +10007,2024-01-07,Electronics,MacBook Pro 16-inch,1,2499.99,2499.99,North America,Credit Card +10008,2024-01-08,Home Appliances,Blueair Classic 480i,2,599.99,1199.98,Europe,PayPal +10009,2024-01-09,Clothing,Nike Air Force 1,6,89.99,539.94,Asia,Debit Card +10010,2024-01-10,Books,Dune by Frank Herbert,2,25.99,51.98,North America,Credit Card +10011,2024-01-11,Beauty Products,Chanel No. 5 Perfume,1,129.99,129.99,Europe,PayPal +10012,2024-01-12,Sports,Babolat Pure Drive Tennis Racket,3,199.99,599.97,Asia,Credit Card +10013,2024-01-13,Electronics,Samsung Galaxy Tab S8,2,749.99,1499.98,North America,Credit Card +10014,2024-01-14,Home Appliances,Keurig K-Elite Coffee Maker,1,189.99,189.99,Europe,PayPal +10015,2024-01-15,Clothing,North Face Down Jacket,2,249.99,499.98,Asia,Debit Card +10016,2024-01-16,Books,"Salt, Fat, Acid, Heat by Samin Nosrat",3,35.99,107.97,North America,Credit Card +10017,2024-01-17,Beauty Products,Dyson Supersonic Hair Dryer,1,399.99,399.99,Europe,PayPal +10018,2024-01-18,Sports,Manduka PRO Yoga Mat,4,119.99,479.96,Asia,Credit Card +10019,2024-01-19,Electronics,Garmin Forerunner 945,2,499.99,999.98,North America,Credit Card +10020,2024-01-20,Home Appliances,Ninja Professional Blender,1,99.99,99.99,Europe,PayPal +10021,2024-01-21,Clothing,Zara Summer Dress,3,59.99,179.97,Asia,Debit Card +10022,2024-01-22,Books,Gone Girl by Gillian Flynn,2,22.99,45.98,North America,Credit Card +10023,2024-01-23,Beauty Products,Olay Regenerist Face Cream,1,49.99,49.99,Europe,PayPal +10024,2024-01-24,Sports,Adidas FIFA World Cup Football,3,29.99,89.97,Asia,Credit Card +10025,2024-01-25,Electronics,Bose QuietComfort 35 Headphones,1,299.99,299.99,North America,Credit Card +10026,2024-01-26,Home Appliances,Panasonic NN-SN966S Microwave,1,179.99,179.99,Europe,PayPal +10027,2024-01-27,Clothing,Adidas Ultraboost Shoes,2,179.99,359.98,Asia,Debit Card +10028,2024-01-28,Books,Pride and Prejudice by Jane Austen,3,12.99,38.97,North America,Credit Card +10029,2024-01-29,Beauty Products,MAC Ruby Woo Lipstick,1,29.99,29.99,Europe,PayPal +10030,2024-01-30,Sports,Nike Air Zoom Pegasus 37,2,129.99,259.98,Asia,Credit Card +10031,2024-01-31,Electronics,Sony WH-1000XM4 Headphones,2,349.99,699.98,North America,Credit Card +10032,2024-02-01,Home Appliances,Instant Pot Duo,3,89.99,269.97,Europe,PayPal +10033,2024-02-02,Clothing,Under Armour HeatGear T-Shirt,5,29.99,149.95,Asia,Debit Card +10034,2024-02-03,Books,1984 by George Orwell,4,19.99,79.96,North America,Credit Card +10035,2024-02-04,Beauty Products,L'Oreal Revitalift Serum,2,39.99,79.98,Europe,PayPal +10036,2024-02-05,Sports,Peloton Bike,1,1895,1895,Asia,Credit Card +10037,2024-02-06,Electronics,Apple Watch Series 8,3,399.99,1199.97,North America,Credit Card +10038,2024-02-07,Home Appliances,Roomba i7+,2,799.99,1599.98,Europe,PayPal +10039,2024-02-08,Clothing,Columbia Fleece Jacket,4,59.99,239.96,Asia,Debit Card +10040,2024-02-09,Books,Harry Potter and the Sorcerer's Stone,3,24.99,74.97,North America,Credit Card +10041,2024-02-10,Beauty Products,Estee Lauder Advanced Night Repair,1,105,105,Europe,PayPal +10042,2024-02-11,Sports,Fitbit Charge 5,2,129.99,259.98,Asia,Credit Card +10043,2024-02-12,Electronics,GoPro HERO10 Black,3,399.99,1199.97,North America,Credit Card +10044,2024-02-13,Home Appliances,Nespresso VertuoPlus,1,199.99,199.99,Europe,PayPal +10045,2024-02-14,Clothing,Patagonia Better Sweater,2,139.99,279.98,Asia,Debit Card +10046,2024-02-15,Books,Becoming by Michelle Obama,4,32.5,130,North America,Credit Card +10047,2024-02-16,Beauty Products,Clinique Moisture Surge,1,52,52,Europe,PayPal +10048,2024-02-17,Sports,Yeti Rambler Tumbler,6,39.99,239.94,Asia,Credit Card +10049,2024-02-18,Electronics,Kindle Paperwhite,2,129.99,259.98,North America,Credit Card +10050,2024-02-19,Home Appliances,Breville Smart Oven,1,299.99,299.99,Europe,PayPal +10051,2024-02-20,Clothing,Ray-Ban Aviator Sunglasses,3,154.99,464.97,Asia,Debit Card +10052,2024-02-21,Books,The Silent Patient by Alex Michaelides,2,26.99,53.98,North America,Credit Card +10053,2024-02-22,Beauty Products,Shiseido Ultimate Sun Protector,1,49,49,Europe,PayPal +10054,2024-02-23,Sports,Titleist Pro V1 Golf Balls,5,49.99,249.95,Asia,Credit Card +10055,2024-02-24,Electronics,Anker PowerCore Portable Charger,4,59.99,239.96,North America,Credit Card +10056,2024-02-25,Home Appliances,KitchenAid Artisan Stand Mixer,1,499.99,499.99,Europe,PayPal +10057,2024-02-26,Clothing,Calvin Klein Boxer Briefs,5,29.99,149.95,Asia,Debit Card +10058,2024-02-27,Books,Educated by Tara Westover,3,28,84,North America,Credit Card +10059,2024-02-28,Beauty Products,Anastasia Beverly Hills Brow Wiz,2,23,46,Europe,PayPal +10060,2024-02-29,Sports,Hyperice Hypervolt Massager,1,349,349,Asia,Credit Card +10061,2024-03-01,Electronics,Nintendo Switch,3,299.99,899.97,North America,Credit Card +10062,2024-03-02,Home Appliances,Philips Airfryer XXL,2,199.99,399.98,Europe,PayPal +10063,2024-03-03,Clothing,Hanes ComfortSoft T-Shirt,10,9.99,99.9,Asia,Debit Card +10064,2024-03-04,Books,Where the Crawdads Sing by Delia Owens,4,18.99,75.96,North America,Credit Card +10065,2024-03-05,Beauty Products,Lancome La Vie Est Belle,1,102,102,Europe,PayPal +10066,2024-03-06,Sports,Garmin Edge 530,2,299.99,599.98,Asia,Credit Card +10067,2024-03-07,Electronics,Samsung QLED 4K TV,1,1199.99,1199.99,North America,Credit Card +10068,2024-03-08,Home Appliances,Eufy RoboVac 11S,3,219.99,659.97,Europe,PayPal +10069,2024-03-09,Clothing,Puma Suede Classic Sneakers,4,59.99,239.96,Asia,Debit Card +10070,2024-03-10,Books,The Great Gatsby by F. Scott Fitzgerald,2,10.99,21.98,North America,Credit Card +10071,2024-03-11,Beauty Products,Drunk Elephant C-Firma Day Serum,1,78,78,Europe,PayPal +10072,2024-03-12,Sports,Nike Metcon 6,3,129.99,389.97,Asia,Credit Card +10073,2024-03-13,Electronics,HP Spectre x360 Laptop,1,1599.99,1599.99,North America,Credit Card +10074,2024-03-14,Home Appliances,De'Longhi Magnifica Espresso Machine,1,899.99,899.99,Europe,PayPal +10075,2024-03-15,Clothing,Tommy Hilfiger Polo Shirt,5,49.99,249.95,Asia,Debit Card +10076,2024-03-16,Books,To Kill a Mockingbird by Harper Lee,4,14.99,59.96,North America,Credit Card +10077,2024-03-17,Beauty Products,Glossier Boy Brow,2,16,32,Europe,PayPal +10078,2024-03-18,Sports,Rogue Fitness Kettlebell,3,69.99,209.97,Asia,Credit Card +10079,2024-03-19,Electronics,Apple AirPods Pro,2,249.99,499.98,North America,Credit Card +10080,2024-03-20,Home Appliances,Dyson Pure Cool Link,1,499.99,499.99,Europe,PayPal +10081,2024-03-21,Clothing,Levi's Trucker Jacket,2,89.99,179.98,Asia,Debit Card +10082,2024-03-22,Books,The Hobbit by J.R.R. Tolkien,3,12.99,38.97,North America,Credit Card +10083,2024-03-23,Beauty Products,Charlotte Tilbury Magic Cream,1,100,100,Europe,PayPal +10084,2024-03-24,Sports,Spalding NBA Street Basketball,6,24.99,149.94,Asia,Credit Card +10085,2024-03-25,Electronics,Ring Video Doorbell,1,99.99,99.99,North America,Credit Card +10086,2024-03-26,Home Appliances,LG OLED TV,2,1299.99,2599.98,Europe,PayPal +10087,2024-03-27,Clothing,Uniqlo Ultra Light Down Jacket,3,79.99,239.97,Asia,Debit Card +10088,2024-03-28,Books,The Catcher in the Rye by J.D. Salinger,4,13.99,55.96,North America,Credit Card +10089,2024-03-29,Beauty Products,Sunday Riley Good Genes,1,105,105,Europe,PayPal +10090,2024-03-30,Sports,On Running Cloud Shoes,2,129.99,259.98,Asia,Credit Card +10091,2024-03-31,Electronics,Logitech MX Master 3 Mouse,2,99.99,199.98,North America,Credit Card +10092,2024-04-01,Home Appliances,Instant Pot Duo Crisp,1,179.99,179.99,Europe,PayPal +10093,2024-04-02,Clothing,Adidas Originals Superstar Sneakers,4,79.99,319.96,Asia,Debit Card +10094,2024-04-03,Books,The Alchemist by Paulo Coelho,3,14.99,44.97,North America,Credit Card +10095,2024-04-04,Beauty Products,Tatcha The Water Cream,1,68,68,Europe,PayPal +10096,2024-04-05,Sports,Garmin Fenix 6X Pro,1,999.99,999.99,Asia,Credit Card +10097,2024-04-06,Electronics,Bose SoundLink Revolve+ Speaker,3,299.99,899.97,North America,Credit Card +10098,2024-04-07,Home Appliances,Vitamix Explorian Blender,1,349.99,349.99,Europe,PayPal +10099,2024-04-08,Clothing,Gap Essential Crewneck T-Shirt,6,19.99,119.94,Asia,Debit Card +10100,2024-04-09,Books,The Power of Now by Eckhart Tolle,2,12.99,25.98,North America,Credit Card +10101,2024-04-10,Beauty Products,Kiehl's Midnight Recovery Concentrate,1,82,82,Europe,PayPal +10102,2024-04-11,Sports,Under Armour HOVR Sonic 4 Shoes,2,109.99,219.98,Asia,Credit Card +10103,2024-04-12,Electronics,Canon EOS R5 Camera,1,3899.99,3899.99,North America,Credit Card +10104,2024-04-13,Home Appliances,Shark IQ Robot Vacuum,2,349.99,699.98,Europe,PayPal +10105,2024-04-14,Clothing,H&M Slim Fit Jeans,3,39.99,119.97,Asia,Debit Card +10106,2024-04-15,Books,The Girl on the Train by Paula Hawkins,4,10.99,43.96,North America,Credit Card +10107,2024-04-16,Beauty Products,The Ordinary Niacinamide Serum,1,6.5,6.5,Europe,PayPal +10108,2024-04-17,Sports,Bowflex SelectTech 552 Dumbbells,1,399.99,399.99,Asia,Credit Card +10109,2024-04-18,Electronics,Google Nest Hub Max,2,229.99,459.98,North America,Credit Card +10110,2024-04-19,Home Appliances,Cuisinart Griddler Deluxe,1,159.99,159.99,Europe,PayPal +10111,2024-04-20,Clothing,Old Navy Relaxed-Fit T-Shirt,4,14.99,59.96,Asia,Debit Card +10112,2024-04-21,Books,Sapiens: A Brief History of Humankind by Yuval Noah Harari,2,18.99,37.98,North America,Credit Card +10113,2024-04-22,Beauty Products,Biore UV Aqua Rich Watery Essence Sunscreen,1,15,15,Europe,PayPal +10114,2024-04-23,Sports,Fitbit Versa 3,3,229.95,689.85,Asia,Credit Card +10115,2024-04-24,Electronics,Amazon Echo Show 10,1,249.99,249.99,North America,Credit Card +10116,2024-04-25,Home Appliances,Breville Smart Grill,2,299.95,599.9,Europe,PayPal +10117,2024-04-26,Clothing,Gap High Rise Skinny Jeans,3,49.99,149.97,Asia,Debit Card +10118,2024-04-27,Books,Atomic Habits by James Clear,4,16.99,67.96,North America,Credit Card +10119,2024-04-28,Beauty Products,CeraVe Hydrating Facial Cleanser,2,14.99,29.98,Europe,PayPal +10120,2024-04-29,Sports,YETI Hopper Flip Portable Cooler,1,249.99,249.99,Asia,Credit Card +10121,2024-04-30,Electronics,Apple iPad Air,2,599.99,1199.98,North America,Credit Card +10122,2024-05-01,Home Appliances,Hamilton Beach FlexBrew Coffee Maker,1,89.99,89.99,Europe,PayPal +10123,2024-05-02,Clothing,Forever 21 Graphic Tee,5,12.99,64.95,Asia,Debit Card +10124,2024-05-03,Books,The Subtle Art of Not Giving a F*ck by Mark Manson,3,14.99,44.97,North America,Credit Card +10125,2024-05-04,Beauty Products,NARS Radiant Creamy Concealer,1,30,30,Europe,PayPal +10126,2024-05-05,Sports,Yeti Roadie 24 Cooler,1,199.99,199.99,Asia,Credit Card +10127,2024-05-06,Electronics,Sony PlayStation 5,1,499.99,499.99,North America,Credit Card +10128,2024-05-07,Home Appliances,Dyson Supersonic Hair Dryer,2,399.99,799.98,Europe,PayPal +10129,2024-05-08,Clothing,Lululemon Align Leggings,3,98,294,Asia,Debit Card +10130,2024-05-09,Books,The Four Agreements by Don Miguel Ruiz,2,8.99,17.98,North America,Credit Card +10131,2024-05-10,Beauty Products,Fenty Beauty Killawatt Highlighter,1,36,36,Europe,PayPal +10132,2024-05-11,Sports,Hydro Flask Wide Mouth Water Bottle,4,39.95,159.8,Asia,Credit Card +10133,2024-05-12,Electronics,Microsoft Surface Laptop 4,1,1299.99,1299.99,North America,Credit Card +10134,2024-05-13,Home Appliances,Keurig K-Mini Coffee Maker,2,79.99,159.98,Europe,PayPal +10135,2024-05-14,Clothing,Gap Crewneck Sweatshirt,4,34.99,139.96,Asia,Debit Card +10136,2024-05-15,Books,Think and Grow Rich by Napoleon Hill,3,9.99,29.97,North America,Credit Card +10137,2024-05-16,Beauty Products,The Ordinary Hyaluronic Acid Serum,1,6.8,6.8,Europe,PayPal +10138,2024-05-17,Sports,Fitbit Inspire 2,2,99.95,199.9,Asia,Credit Card +10139,2024-05-18,Electronics,Samsung Odyssey G9 Gaming Monitor,1,1499.99,1499.99,North America,Credit Card +10140,2024-05-19,Home Appliances,Instant Pot Ultra,1,139.99,139.99,Europe,PayPal +10141,2024-05-20,Clothing,Adidas Essential Track Pants,3,44.99,134.97,Asia,Debit Card +10142,2024-05-21,Books,The Power of Habit by Charles Duhigg,2,11.99,23.98,North America,Credit Card +10143,2024-05-22,Beauty Products,Clinique Dramatically Different Moisturizing Lotion,1,29.5,29.5,Europe,PayPal +10144,2024-05-23,Sports,YETI Tundra 45 Cooler,1,299.99,299.99,Asia,Credit Card +10145,2024-05-24,Electronics,Apple AirPods Max,1,549,549,North America,Credit Card +10146,2024-05-25,Home Appliances,Cuisinart Coffee Center,2,199.95,399.9,Europe,PayPal +10147,2024-05-26,Clothing,Levi's Sherpa Trucker Jacket,2,98,196,Asia,Debit Card +10148,2024-05-27,Books,The Outsiders by S.E. Hinton,3,10.99,32.97,North America,Credit Card +10149,2024-05-28,Beauty Products,Laneige Water Sleeping Mask,1,25,25,Europe,PayPal +10150,2024-05-29,Sports,Bose SoundSport Wireless Earbuds,2,149.99,299.98,Asia,Credit Card +10151,2024-05-30,Electronics,Sony WH-1000XM4 Headphones,1,349.99,349.99,North America,Credit Card +10152,2024-05-31,Home Appliances,Ninja Foodi Pressure Cooker,2,199.99,399.98,Europe,PayPal +10153,2024-06-01,Clothing,Nike Sportswear Club Fleece Hoodie,3,54.99,164.97,Asia,Debit Card +10154,2024-06-02,Books,The Night Circus by Erin Morgenstern,2,16.99,33.98,North America,Credit Card +10155,2024-06-03,Beauty Products,GlamGlow Supermud Clearing Treatment,1,59,59,Europe,PayPal +10156,2024-06-04,Sports,Garmin Forerunner 245,1,299.99,299.99,Asia,Credit Card +10157,2024-06-05,Electronics,Google Pixel 6 Pro,1,899.99,899.99,North America,Credit Card +10158,2024-06-06,Home Appliances,Breville Nespresso Creatista Plus,1,499.95,499.95,Europe,PayPal +10159,2024-06-07,Clothing,Under Armour Tech 2.0 T-Shirt,4,24.99,99.96,Asia,Debit Card +10160,2024-06-08,Books,The Art of War by Sun Tzu,3,7.99,23.97,North America,Credit Card +10161,2024-06-09,Beauty Products,Youth to the People Superfood Antioxidant Cleanser,1,36,36,Europe,PayPal +10162,2024-06-10,Sports,TriggerPoint GRID Foam Roller,2,34.99,69.98,Asia,Credit Card +10163,2024-06-11,Electronics,Apple MacBook Air,1,1199.99,1199.99,North America,Credit Card +10164,2024-06-12,Home Appliances,Cuisinart Custom 14-Cup Food Processor,1,199.99,199.99,Europe,PayPal +10165,2024-06-13,Clothing,Adidas 3-Stripes Shorts,5,29.99,149.95,Asia,Debit Card +10166,2024-06-14,Books,The Hunger Games by Suzanne Collins,4,8.99,35.96,North America,Credit Card +10167,2024-06-15,Beauty Products,Neutrogena Hydro Boost Water Gel,1,16.99,16.99,Europe,PayPal +10168,2024-06-16,Sports,Yeti Rambler Bottle,3,49.99,149.97,Asia,Credit Card +10169,2024-06-17,Electronics,Samsung Odyssey G7 Gaming Monitor,1,699.99,699.99,North America,Credit Card +10170,2024-06-18,Home Appliances,Instant Pot Duo Evo Plus,2,139.99,279.98,Europe,PayPal +10171,2024-06-19,Clothing,Nike Tempo Running Shorts,3,34.99,104.97,Asia,Debit Card +10172,2024-06-20,Books,The Girl with the Dragon Tattoo by Stieg Larsson,2,9.99,19.98,North America,Credit Card +10173,2024-06-21,Beauty Products,Paula's Choice Skin Perfecting 2% BHA Liquid Exfoliant,1,29.5,29.5,Europe,PayPal +10174,2024-06-22,Sports,Bowflex SelectTech 1090 Adjustable Dumbbells,1,699.99,699.99,Asia,Credit Card +10175,2024-06-23,Electronics,Amazon Fire TV Stick 4K,3,49.99,149.97,North America,Credit Card +10176,2024-06-24,Home Appliances,Crock-Pot 6-Quart Slow Cooker,2,49.99,99.98,Europe,PayPal +10177,2024-06-25,Clothing,Uniqlo Airism Mesh Boxer Briefs,4,14.9,59.6,Asia,Debit Card +10178,2024-06-26,Books,The Sun Also Rises by Ernest Hemingway,3,11.99,35.97,North America,Credit Card +10179,2024-06-27,Beauty Products,First Aid Beauty Ultra Repair Cream,2,34,68,Europe,PayPal +10180,2024-06-28,Sports,Oakley Holbrook Sunglasses,1,146,146,Asia,Credit Card +10181,2024-06-29,Electronics,Google Pixelbook Go,1,649.99,649.99,North America,Credit Card +10182,2024-06-30,Home Appliances,Dyson V8 Absolute,1,399.99,399.99,Europe,PayPal +10183,2024-07-01,Clothing,Levi's 511 Slim Fit Jeans,3,59.99,179.97,Asia,Debit Card +10184,2024-07-02,Books,The Martian by Andy Weir,2,12.99,25.98,North America,Credit Card +10185,2024-07-03,Beauty Products,La Mer Crème de la Mer Moisturizer,1,190,190,Europe,PayPal +10186,2024-07-04,Sports,Polar Vantage V2,1,499.95,499.95,Asia,Credit Card +10187,2024-07-05,Electronics,Sonos Beam Soundbar,1,399,399,North America,Credit Card +10188,2024-07-06,Home Appliances,Anova Precision Cooker,2,199,398,Europe,PayPal +10189,2024-07-07,Clothing,Nike Dri-FIT Training Shorts,4,34.99,139.96,Asia,Debit Card +10190,2024-07-08,Books,The Catcher in the Rye by J.D. Salinger,3,10.99,32.97,North America,Credit Card +10191,2024-07-09,Beauty Products,Glossier Cloud Paint,1,18,18,Europe,PayPal +10192,2024-07-10,Sports,TRX All-in-One Suspension Training System,1,169.95,169.95,Asia,Credit Card +10193,2024-07-11,Electronics,Logitech G Pro X Wireless Gaming Headset,1,199.99,199.99,North America,Credit Card +10194,2024-07-12,Home Appliances,Breville Smart Coffee Grinder Pro,1,199.95,199.95,Europe,PayPal +10195,2024-07-13,Clothing,Adidas Ultraboost Running Shoes,2,179.99,359.98,Asia,Debit Card +10196,2024-07-14,Books,The Road by Cormac McCarthy,2,11.99,23.98,North America,Credit Card +10197,2024-07-15,Beauty Products,Tom Ford Black Orchid Perfume,1,125,125,Europe,PayPal +10198,2024-07-16,Sports,GoPro HERO9 Black,1,449.99,449.99,Asia,Credit Card +10199,2024-07-17,Electronics,Apple TV 4K,2,179,358,North America,Credit Card +10200,2024-07-18,Home Appliances,Instant Pot Duo Nova,1,99.95,99.95,Europe,PayPal +10201,2024-07-19,Clothing,Gap 1969 Original Fit Jeans,3,59.99,179.97,Asia,Debit Card +10202,2024-07-20,Books,The Goldfinch by Donna Tartt,2,14.99,29.98,North America,Credit Card +10203,2024-07-21,Beauty Products,Dr. Jart+ Cicapair Tiger Grass Color Correcting Treatment,1,52,52,Europe,PayPal +10204,2024-07-22,Sports,Yeti Tundra Haul Portable Wheeled Cooler,1,399.99,399.99,Asia,Credit Card +10205,2024-07-23,Electronics,Samsung Galaxy Watch 4,1,299.99,299.99,North America,Credit Card +10206,2024-07-24,Home Appliances,KitchenAid Stand Mixer,1,379.99,379.99,Europe,PayPal +10207,2024-07-25,Clothing,Lululemon Wunder Under High-Rise Leggings,2,98,196,Asia,Debit Card +10208,2024-07-26,Books,The Great Alone by Kristin Hannah,3,16.99,50.97,North America,Credit Card +10209,2024-07-27,Beauty Products,Caudalie Vinoperfect Radiance Serum,1,79,79,Europe,PayPal +10210,2024-07-28,Sports,Bose SoundLink Color Bluetooth Speaker II,1,129,129,Asia,Credit Card +10211,2024-07-29,Electronics,Canon EOS Rebel T7i DSLR Camera,1,749.99,749.99,North America,Credit Card +10212,2024-07-30,Home Appliances,Keurig K-Elite Coffee Maker,2,169.99,339.98,Europe,PayPal +10213,2024-07-31,Clothing,Uniqlo Airism Seamless Boxer Briefs,4,9.9,39.6,Asia,Debit Card +10214,2024-08-01,Books,The Girl with the Dragon Tattoo by Stieg Larsson,3,10.99,32.97,North America,Credit Card +10215,2024-08-02,Beauty Products,L'Occitane Shea Butter Hand Cream,2,29,58,Europe,PayPal +10216,2024-08-03,Sports,YETI Tundra 65 Cooler,1,349.99,349.99,Asia,Credit Card +10217,2024-08-04,Electronics,Apple MacBook Pro 16-inch,1,2399,2399,North America,Credit Card +10218,2024-08-05,Home Appliances,iRobot Braava Jet M6,1,449.99,449.99,Europe,PayPal +10219,2024-08-06,Clothing,Champion Reverse Weave Hoodie,3,49.99,149.97,Asia,Debit Card +10220,2024-08-07,Books,The Nightingale by Kristin Hannah,2,12.99,25.98,North America,Credit Card +10221,2024-08-08,Beauty Products,Tarte Shape Tape Concealer,1,27,27,Europe,PayPal +10222,2024-08-09,Sports,Garmin Forerunner 945,1,599.99,599.99,Asia,Credit Card +10223,2024-08-10,Electronics,Amazon Echo Dot (4th Gen),4,49.99,199.96,North America,Credit Card +10224,2024-08-11,Home Appliances,Philips Sonicare DiamondClean Toothbrush,2,229.99,459.98,Europe,PayPal +10225,2024-08-12,Clothing,Old Navy Mid-Rise Rockstar Super Skinny Jeans,2,44.99,89.98,Asia,Debit Card +10226,2024-08-13,Books,The Silent Patient by Alex Michaelides,3,26.99,80.97,North America,Credit Card +10227,2024-08-14,Beauty Products,The Ordinary Caffeine Solution 5% + EGCG,1,6.7,6.7,Europe,PayPal +10228,2024-08-15,Sports,Fitbit Luxe,2,149.95,299.9,Asia,Credit Card +10229,2024-08-16,Electronics,Google Nest Wifi Router,1,169,169,North America,Credit Card +10230,2024-08-17,Home Appliances,Anova Precision Oven,1,599,599,Europe,PayPal +10231,2024-08-18,Clothing,Adidas Originals Trefoil Hoodie,4,64.99,259.96,Asia,Debit Card +10232,2024-08-19,Books,Dune by Frank Herbert,2,9.99,19.98,North America,Credit Card +10233,2024-08-20,Beauty Products,Fresh Sugar Lip Treatment,1,24,24,Europe,PayPal +10234,2024-08-21,Sports,Hydro Flask Standard Mouth Water Bottle,3,32.95,98.85,Asia,Credit Card +10235,2024-08-22,Electronics,Bose QuietComfort 35 II Wireless Headphones,1,299,299,North America,Credit Card +10236,2024-08-23,Home Appliances,Nespresso Vertuo Next Coffee and Espresso Maker,1,159.99,159.99,Europe,PayPal +10237,2024-08-24,Clothing,Nike Air Force 1 Sneakers,3,90,270,Asia,Debit Card +10238,2024-08-25,Books,The Handmaid's Tale by Margaret Atwood,3,10.99,32.97,North America,Credit Card +10239,2024-08-26,Beauty Products,Sunday Riley Luna Sleeping Night Oil,1,55,55,Europe,PayPal +10240,2024-08-27,Sports,Yeti Rambler 20 oz Tumbler,2,29.99,59.98,Asia,Credit Card \ No newline at end of file diff --git a/10-Data Analysis With Python/sample_data.xlsx b/10-Data Analysis With Python/sample_data.xlsx new file mode 100644 index 000000000..e69de29bb diff --git a/10-Data Analysis With Python/wine.csv b/10-Data Analysis With Python/wine.csv new file mode 100644 index 000000000..024229e07 --- /dev/null +++ b/10-Data Analysis With Python/wine.csv @@ -0,0 +1,179 @@ +,0,1,2,3,4,5,6,7,8,9,10,11,12,13 +0,1,14.23,1.71,2.43,15.6,127,2.8,3.06,0.28,2.29,5.64,1.04,3.92,1065 +1,1,13.2,1.78,2.14,11.2,100,2.65,2.76,0.26,1.28,4.38,1.05,3.4,1050 +2,1,13.16,2.36,2.67,18.6,101,2.8,3.24,0.3,2.81,5.68,1.03,3.17,1185 +3,1,14.37,1.95,2.5,16.8,113,3.85,3.49,0.24,2.18,7.8,0.86,3.45,1480 +4,1,13.24,2.59,2.87,21.0,118,2.8,2.69,0.39,1.82,4.32,1.04,2.93,735 +5,1,14.2,1.76,2.45,15.2,112,3.27,3.39,0.34,1.97,6.75,1.05,2.85,1450 +6,1,14.39,1.87,2.45,14.6,96,2.5,2.52,0.3,1.98,5.25,1.02,3.58,1290 +7,1,14.06,2.15,2.61,17.6,121,2.6,2.51,0.31,1.25,5.05,1.06,3.58,1295 +8,1,14.83,1.64,2.17,14.0,97,2.8,2.98,0.29,1.98,5.2,1.08,2.85,1045 +9,1,13.86,1.35,2.27,16.0,98,2.98,3.15,0.22,1.85,7.22,1.01,3.55,1045 +10,1,14.1,2.16,2.3,18.0,105,2.95,3.32,0.22,2.38,5.75,1.25,3.17,1510 +11,1,14.12,1.48,2.32,16.8,95,2.2,2.43,0.26,1.57,5.0,1.17,2.82,1280 +12,1,13.75,1.73,2.41,16.0,89,2.6,2.76,0.29,1.81,5.6,1.15,2.9,1320 +13,1,14.75,1.73,2.39,11.4,91,3.1,3.69,0.43,2.81,5.4,1.25,2.73,1150 +14,1,14.38,1.87,2.38,12.0,102,3.3,3.64,0.29,2.96,7.5,1.2,3.0,1547 +15,1,13.63,1.81,2.7,17.2,112,2.85,2.91,0.3,1.46,7.3,1.28,2.88,1310 +16,1,14.3,1.92,2.72,20.0,120,2.8,3.14,0.33,1.97,6.2,1.07,2.65,1280 +17,1,13.83,1.57,2.62,20.0,115,2.95,3.4,0.4,1.72,6.6,1.13,2.57,1130 +18,1,14.19,1.59,2.48,16.5,108,3.3,3.93,0.32,1.86,8.7,1.23,2.82,1680 +19,1,13.64,3.1,2.56,15.2,116,2.7,3.03,0.17,1.66,5.1,0.96,3.36,845 +20,1,14.06,1.63,2.28,16.0,126,3.0,3.17,0.24,2.1,5.65,1.09,3.71,780 +21,1,12.93,3.8,2.65,18.6,102,2.41,2.41,0.25,1.98,4.5,1.03,3.52,770 +22,1,13.71,1.86,2.36,16.6,101,2.61,2.88,0.27,1.69,3.8,1.11,4.0,1035 +23,1,12.85,1.6,2.52,17.8,95,2.48,2.37,0.26,1.46,3.93,1.09,3.63,1015 +24,1,13.5,1.81,2.61,20.0,96,2.53,2.61,0.28,1.66,3.52,1.12,3.82,845 +25,1,13.05,2.05,3.22,25.0,124,2.63,2.68,0.47,1.92,3.58,1.13,3.2,830 +26,1,13.39,1.77,2.62,16.1,93,2.85,2.94,0.34,1.45,4.8,0.92,3.22,1195 +27,1,13.3,1.72,2.14,17.0,94,2.4,2.19,0.27,1.35,3.95,1.02,2.77,1285 +28,1,13.87,1.9,2.8,19.4,107,2.95,2.97,0.37,1.76,4.5,1.25,3.4,915 +29,1,14.02,1.68,2.21,16.0,96,2.65,2.33,0.26,1.98,4.7,1.04,3.59,1035 +30,1,13.73,1.5,2.7,22.5,101,3.0,3.25,0.29,2.38,5.7,1.19,2.71,1285 +31,1,13.58,1.66,2.36,19.1,106,2.86,3.19,0.22,1.95,6.9,1.09,2.88,1515 +32,1,13.68,1.83,2.36,17.2,104,2.42,2.69,0.42,1.97,3.84,1.23,2.87,990 +33,1,13.76,1.53,2.7,19.5,132,2.95,2.74,0.5,1.35,5.4,1.25,3.0,1235 +34,1,13.51,1.8,2.65,19.0,110,2.35,2.53,0.29,1.54,4.2,1.1,2.87,1095 +35,1,13.48,1.81,2.41,20.5,100,2.7,2.98,0.26,1.86,5.1,1.04,3.47,920 +36,1,13.28,1.64,2.84,15.5,110,2.6,2.68,0.34,1.36,4.6,1.09,2.78,880 +37,1,13.05,1.65,2.55,18.0,98,2.45,2.43,0.29,1.44,4.25,1.12,2.51,1105 +38,1,13.07,1.5,2.1,15.5,98,2.4,2.64,0.28,1.37,3.7,1.18,2.69,1020 +39,1,14.22,3.99,2.51,13.2,128,3.0,3.04,0.2,2.08,5.1,0.89,3.53,760 +40,1,13.56,1.71,2.31,16.2,117,3.15,3.29,0.34,2.34,6.13,0.95,3.38,795 +41,1,13.41,3.84,2.12,18.8,90,2.45,2.68,0.27,1.48,4.28,0.91,3.0,1035 +42,1,13.88,1.89,2.59,15.0,101,3.25,3.56,0.17,1.7,5.43,0.88,3.56,1095 +43,1,13.24,3.98,2.29,17.5,103,2.64,2.63,0.32,1.66,4.36,0.82,3.0,680 +44,1,13.05,1.77,2.1,17.0,107,3.0,3.0,0.28,2.03,5.04,0.88,3.35,885 +45,1,14.21,4.04,2.44,18.9,111,2.85,2.65,0.3,1.25,5.24,0.87,3.33,1080 +46,1,14.38,3.59,2.28,16.0,102,3.25,3.17,0.27,2.19,4.9,1.04,3.44,1065 +47,1,13.9,1.68,2.12,16.0,101,3.1,3.39,0.21,2.14,6.1,0.91,3.33,985 +48,1,14.1,2.02,2.4,18.8,103,2.75,2.92,0.32,2.38,6.2,1.07,2.75,1060 +49,1,13.94,1.73,2.27,17.4,108,2.88,3.54,0.32,2.08,8.9,1.12,3.1,1260 +50,1,13.05,1.73,2.04,12.4,92,2.72,3.27,0.17,2.91,7.2,1.12,2.91,1150 +51,1,13.83,1.65,2.6,17.2,94,2.45,2.99,0.22,2.29,5.6,1.24,3.37,1265 +52,1,13.82,1.75,2.42,14.0,111,3.88,3.74,0.32,1.87,7.05,1.01,3.26,1190 +53,1,13.77,1.9,2.68,17.1,115,3.0,2.79,0.39,1.68,6.3,1.13,2.93,1375 +54,1,13.74,1.67,2.25,16.4,118,2.6,2.9,0.21,1.62,5.85,0.92,3.2,1060 +55,1,13.56,1.73,2.46,20.5,116,2.96,2.78,0.2,2.45,6.25,0.98,3.03,1120 +56,1,14.22,1.7,2.3,16.3,118,3.2,3.0,0.26,2.03,6.38,0.94,3.31,970 +57,1,13.29,1.97,2.68,16.8,102,3.0,3.23,0.31,1.66,6.0,1.07,2.84,1270 +58,1,13.72,1.43,2.5,16.7,108,3.4,3.67,0.19,2.04,6.8,0.89,2.87,1285 +59,2,12.37,0.94,1.36,10.6,88,1.98,0.57,0.28,0.42,1.95,1.05,1.82,520 +60,2,12.33,1.1,2.28,16.0,101,2.05,1.09,0.63,0.41,3.27,1.25,1.67,680 +61,2,12.64,1.36,2.02,16.8,100,2.02,1.41,0.53,0.62,5.75,0.98,1.59,450 +62,2,13.67,1.25,1.92,18.0,94,2.1,1.79,0.32,0.73,3.8,1.23,2.46,630 +63,2,12.37,1.13,2.16,19.0,87,3.5,3.1,0.19,1.87,4.45,1.22,2.87,420 +64,2,12.17,1.45,2.53,19.0,104,1.89,1.75,0.45,1.03,2.95,1.45,2.23,355 +65,2,12.37,1.21,2.56,18.1,98,2.42,2.65,0.37,2.08,4.6,1.19,2.3,678 +66,2,13.11,1.01,1.7,15.0,78,2.98,3.18,0.26,2.28,5.3,1.12,3.18,502 +67,2,12.37,1.17,1.92,19.6,78,2.11,2.0,0.27,1.04,4.68,1.12,3.48,510 +68,2,13.34,0.94,2.36,17.0,110,2.53,1.3,0.55,0.42,3.17,1.02,1.93,750 +69,2,12.21,1.19,1.75,16.8,151,1.85,1.28,0.14,2.5,2.85,1.28,3.07,718 +70,2,12.29,1.61,2.21,20.4,103,1.1,1.02,0.37,1.46,3.05,0.906,1.82,870 +71,2,13.86,1.51,2.67,25.0,86,2.95,2.86,0.21,1.87,3.38,1.36,3.16,410 +72,2,13.49,1.66,2.24,24.0,87,1.88,1.84,0.27,1.03,3.74,0.98,2.78,472 +73,2,12.99,1.67,2.6,30.0,139,3.3,2.89,0.21,1.96,3.35,1.31,3.5,985 +74,2,11.96,1.09,2.3,21.0,101,3.38,2.14,0.13,1.65,3.21,0.99,3.13,886 +75,2,11.66,1.88,1.92,16.0,97,1.61,1.57,0.34,1.15,3.8,1.23,2.14,428 +76,2,13.03,0.9,1.71,16.0,86,1.95,2.03,0.24,1.46,4.6,1.19,2.48,392 +77,2,11.84,2.89,2.23,18.0,112,1.72,1.32,0.43,0.95,2.65,0.96,2.52,500 +78,2,12.33,0.99,1.95,14.8,136,1.9,1.85,0.35,2.76,3.4,1.06,2.31,750 +79,2,12.7,3.87,2.4,23.0,101,2.83,2.55,0.43,1.95,2.57,1.19,3.13,463 +80,2,12.0,0.92,2.0,19.0,86,2.42,2.26,0.3,1.43,2.5,1.38,3.12,278 +81,2,12.72,1.81,2.2,18.8,86,2.2,2.53,0.26,1.77,3.9,1.16,3.14,714 +82,2,12.08,1.13,2.51,24.0,78,2.0,1.58,0.4,1.4,2.2,1.31,2.72,630 +83,2,13.05,3.86,2.32,22.5,85,1.65,1.59,0.61,1.62,4.8,0.84,2.01,515 +84,2,11.84,0.89,2.58,18.0,94,2.2,2.21,0.22,2.35,3.05,0.79,3.08,520 +85,2,12.67,0.98,2.24,18.0,99,2.2,1.94,0.3,1.46,2.62,1.23,3.16,450 +86,2,12.16,1.61,2.31,22.8,90,1.78,1.69,0.43,1.56,2.45,1.33,2.26,495 +87,2,11.65,1.67,2.62,26.0,88,1.92,1.61,0.4,1.34,2.6,1.36,3.21,562 +88,2,11.64,2.06,2.46,21.6,84,1.95,1.69,0.48,1.35,2.8,1.0,2.75,680 +89,2,12.08,1.33,2.3,23.6,70,2.2,1.59,0.42,1.38,1.74,1.07,3.21,625 +90,2,12.08,1.83,2.32,18.5,81,1.6,1.5,0.52,1.64,2.4,1.08,2.27,480 +91,2,12.0,1.51,2.42,22.0,86,1.45,1.25,0.5,1.63,3.6,1.05,2.65,450 +92,2,12.69,1.53,2.26,20.7,80,1.38,1.46,0.58,1.62,3.05,0.96,2.06,495 +93,2,12.29,2.83,2.22,18.0,88,2.45,2.25,0.25,1.99,2.15,1.15,3.3,290 +94,2,11.62,1.99,2.28,18.0,98,3.02,2.26,0.17,1.35,3.25,1.16,2.96,345 +95,2,12.47,1.52,2.2,19.0,162,2.5,2.27,0.32,3.28,2.6,1.16,2.63,937 +96,2,11.81,2.12,2.74,21.5,134,1.6,0.99,0.14,1.56,2.5,0.95,2.26,625 +97,2,12.29,1.41,1.98,16.0,85,2.55,2.5,0.29,1.77,2.9,1.23,2.74,428 +98,2,12.37,1.07,2.1,18.5,88,3.52,3.75,0.24,1.95,4.5,1.04,2.77,660 +99,2,12.29,3.17,2.21,18.0,88,2.85,2.99,0.45,2.81,2.3,1.42,2.83,406 +100,2,12.08,2.08,1.7,17.5,97,2.23,2.17,0.26,1.4,3.3,1.27,2.96,710 +101,2,12.6,1.34,1.9,18.5,88,1.45,1.36,0.29,1.35,2.45,1.04,2.77,562 +102,2,12.34,2.45,2.46,21.0,98,2.56,2.11,0.34,1.31,2.8,0.8,3.38,438 +103,2,11.82,1.72,1.88,19.5,86,2.5,1.64,0.37,1.42,2.06,0.94,2.44,415 +104,2,12.51,1.73,1.98,20.5,85,2.2,1.92,0.32,1.48,2.94,1.04,3.57,672 +105,2,12.42,2.55,2.27,22.0,90,1.68,1.84,0.66,1.42,2.7,0.86,3.3,315 +106,2,12.25,1.73,2.12,19.0,80,1.65,2.03,0.37,1.63,3.4,1.0,3.17,510 +107,2,12.72,1.75,2.28,22.5,84,1.38,1.76,0.48,1.63,3.3,0.88,2.42,488 +108,2,12.22,1.29,1.94,19.0,92,2.36,2.04,0.39,2.08,2.7,0.86,3.02,312 +109,2,11.61,1.35,2.7,20.0,94,2.74,2.92,0.29,2.49,2.65,0.96,3.26,680 +110,2,11.46,3.74,1.82,19.5,107,3.18,2.58,0.24,3.58,2.9,0.75,2.81,562 +111,2,12.52,2.43,2.17,21.0,88,2.55,2.27,0.26,1.22,2.0,0.9,2.78,325 +112,2,11.76,2.68,2.92,20.0,103,1.75,2.03,0.6,1.05,3.8,1.23,2.5,607 +113,2,11.41,0.74,2.5,21.0,88,2.48,2.01,0.42,1.44,3.08,1.1,2.31,434 +114,2,12.08,1.39,2.5,22.5,84,2.56,2.29,0.43,1.04,2.9,0.93,3.19,385 +115,2,11.03,1.51,2.2,21.5,85,2.46,2.17,0.52,2.01,1.9,1.71,2.87,407 +116,2,11.82,1.47,1.99,20.8,86,1.98,1.6,0.3,1.53,1.95,0.95,3.33,495 +117,2,12.42,1.61,2.19,22.5,108,2.0,2.09,0.34,1.61,2.06,1.06,2.96,345 +118,2,12.77,3.43,1.98,16.0,80,1.63,1.25,0.43,0.83,3.4,0.7,2.12,372 +119,2,12.0,3.43,2.0,19.0,87,2.0,1.64,0.37,1.87,1.28,0.93,3.05,564 +120,2,11.45,2.4,2.42,20.0,96,2.9,2.79,0.32,1.83,3.25,0.8,3.39,625 +121,2,11.56,2.05,3.23,28.5,119,3.18,5.08,0.47,1.87,6.0,0.93,3.69,465 +122,2,12.42,4.43,2.73,26.5,102,2.2,2.13,0.43,1.71,2.08,0.92,3.12,365 +123,2,13.05,5.8,2.13,21.5,86,2.62,2.65,0.3,2.01,2.6,0.73,3.1,380 +124,2,11.87,4.31,2.39,21.0,82,2.86,3.03,0.21,2.91,2.8,0.75,3.64,380 +125,2,12.07,2.16,2.17,21.0,85,2.6,2.65,0.37,1.35,2.76,0.86,3.28,378 +126,2,12.43,1.53,2.29,21.5,86,2.74,3.15,0.39,1.77,3.94,0.69,2.84,352 +127,2,11.79,2.13,2.78,28.5,92,2.13,2.24,0.58,1.76,3.0,0.97,2.44,466 +128,2,12.37,1.63,2.3,24.5,88,2.22,2.45,0.4,1.9,2.12,0.89,2.78,342 +129,2,12.04,4.3,2.38,22.0,80,2.1,1.75,0.42,1.35,2.6,0.79,2.57,580 +130,3,12.86,1.35,2.32,18.0,122,1.51,1.25,0.21,0.94,4.1,0.76,1.29,630 +131,3,12.88,2.99,2.4,20.0,104,1.3,1.22,0.24,0.83,5.4,0.74,1.42,530 +132,3,12.81,2.31,2.4,24.0,98,1.15,1.09,0.27,0.83,5.7,0.66,1.36,560 +133,3,12.7,3.55,2.36,21.5,106,1.7,1.2,0.17,0.84,5.0,0.78,1.29,600 +134,3,12.51,1.24,2.25,17.5,85,2.0,0.58,0.6,1.25,5.45,0.75,1.51,650 +135,3,12.6,2.46,2.2,18.5,94,1.62,0.66,0.63,0.94,7.1,0.73,1.58,695 +136,3,12.25,4.72,2.54,21.0,89,1.38,0.47,0.53,0.8,3.85,0.75,1.27,720 +137,3,12.53,5.51,2.64,25.0,96,1.79,0.6,0.63,1.1,5.0,0.82,1.69,515 +138,3,13.49,3.59,2.19,19.5,88,1.62,0.48,0.58,0.88,5.7,0.81,1.82,580 +139,3,12.84,2.96,2.61,24.0,101,2.32,0.6,0.53,0.81,4.92,0.89,2.15,590 +140,3,12.93,2.81,2.7,21.0,96,1.54,0.5,0.53,0.75,4.6,0.77,2.31,600 +141,3,13.36,2.56,2.35,20.0,89,1.4,0.5,0.37,0.64,5.6,0.7,2.47,780 +142,3,13.52,3.17,2.72,23.5,97,1.55,0.52,0.5,0.55,4.35,0.89,2.06,520 +143,3,13.62,4.95,2.35,20.0,92,2.0,0.8,0.47,1.02,4.4,0.91,2.05,550 +144,3,12.25,3.88,2.2,18.5,112,1.38,0.78,0.29,1.14,8.21,0.65,2.0,855 +145,3,13.16,3.57,2.15,21.0,102,1.5,0.55,0.43,1.3,4.0,0.6,1.68,830 +146,3,13.88,5.04,2.23,20.0,80,0.98,0.34,0.4,0.68,4.9,0.58,1.33,415 +147,3,12.87,4.61,2.48,21.5,86,1.7,0.65,0.47,0.86,7.65,0.54,1.86,625 +148,3,13.32,3.24,2.38,21.5,92,1.93,0.76,0.45,1.25,8.42,0.55,1.62,650 +149,3,13.08,3.9,2.36,21.5,113,1.41,1.39,0.34,1.14,9.4,0.57,1.33,550 +150,3,13.5,3.12,2.62,24.0,123,1.4,1.57,0.22,1.25,8.6,0.59,1.3,500 +151,3,12.79,2.67,2.48,22.0,112,1.48,1.36,0.24,1.26,10.8,0.48,1.47,480 +152,3,13.11,1.9,2.75,25.5,116,2.2,1.28,0.26,1.56,7.1,0.61,1.33,425 +153,3,13.23,3.3,2.28,18.5,98,1.8,0.83,0.61,1.87,10.52,0.56,1.51,675 +154,3,12.58,1.29,2.1,20.0,103,1.48,0.58,0.53,1.4,7.6,0.58,1.55,640 +155,3,13.17,5.19,2.32,22.0,93,1.74,0.63,0.61,1.55,7.9,0.6,1.48,725 +156,3,13.84,4.12,2.38,19.5,89,1.8,0.83,0.48,1.56,9.01,0.57,1.64,480 +157,3,12.45,3.03,2.64,27.0,97,1.9,0.58,0.63,1.14,7.5,0.67,1.73,880 +158,3,14.34,1.68,2.7,25.0,98,2.8,1.31,0.53,2.7,13.0,0.57,1.96,660 +159,3,13.48,1.67,2.64,22.5,89,2.6,1.1,0.52,2.29,11.75,0.57,1.78,620 +160,3,12.36,3.83,2.38,21.0,88,2.3,0.92,0.5,1.04,7.65,0.56,1.58,520 +161,3,13.69,3.26,2.54,20.0,107,1.83,0.56,0.5,0.8,5.88,0.96,1.82,680 +162,3,12.85,3.27,2.58,22.0,106,1.65,0.6,0.6,0.96,5.58,0.87,2.11,570 +163,3,12.96,3.45,2.35,18.5,106,1.39,0.7,0.4,0.94,5.28,0.68,1.75,675 +164,3,13.78,2.76,2.3,22.0,90,1.35,0.68,0.41,1.03,9.58,0.7,1.68,615 +165,3,13.73,4.36,2.26,22.5,88,1.28,0.47,0.52,1.15,6.62,0.78,1.75,520 +166,3,13.45,3.7,2.6,23.0,111,1.7,0.92,0.43,1.46,10.68,0.85,1.56,695 +167,3,12.82,3.37,2.3,19.5,88,1.48,0.66,0.4,0.97,10.26,0.72,1.75,685 +168,3,13.58,2.58,2.69,24.5,105,1.55,0.84,0.39,1.54,8.66,0.74,1.8,750 +169,3,13.4,4.6,2.86,25.0,112,1.98,0.96,0.27,1.11,8.5,0.67,1.92,630 +170,3,12.2,3.03,2.32,19.0,96,1.25,0.49,0.4,0.73,5.5,0.66,1.83,510 +171,3,12.77,2.39,2.28,19.5,86,1.39,0.51,0.48,0.64,9.899999,0.57,1.63,470 +172,3,14.16,2.51,2.48,20.0,91,1.68,0.7,0.44,1.24,9.7,0.62,1.71,660 +173,3,13.71,5.65,2.45,20.5,95,1.68,0.61,0.52,1.06,7.7,0.64,1.74,740 +174,3,13.4,3.91,2.48,23.0,102,1.8,0.75,0.43,1.41,7.3,0.7,1.56,750 +175,3,13.27,4.28,2.26,20.0,120,1.59,0.69,0.43,1.35,10.2,0.59,1.56,835 +176,3,13.17,2.59,2.37,20.0,120,1.65,0.68,0.53,1.46,9.3,0.6,1.62,840 +177,3,14.13,4.1,2.74,24.5,96,2.05,0.76,0.56,1.35,9.2,0.61,1.6,560 From c6a7db6350c1d161c7d1bd547c7ec20e9f7f1139 Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Wed, 19 Jun 2024 15:15:40 +0530 Subject: [PATCH 3/7] Add files via upload --- 11-Working With Databases/11.1-sqlite.ipynb | 361 ++++++++++++++++++++ 11-Working With Databases/example.db | Bin 0 -> 8192 bytes 11-Working With Databases/sales_data.db | Bin 0 -> 8192 bytes 3 files changed, 361 insertions(+) create mode 100644 11-Working With Databases/11.1-sqlite.ipynb create mode 100644 11-Working With Databases/example.db create mode 100644 11-Working With Databases/sales_data.db diff --git a/11-Working With Databases/11.1-sqlite.ipynb b/11-Working With Databases/11.1-sqlite.ipynb new file mode 100644 index 000000000..358284adb --- /dev/null +++ b/11-Working With Databases/11.1-sqlite.ipynb @@ -0,0 +1,361 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### SQL And SQLite\n", + "SQL (Structured Query Language) is a standard language for managing and manipulating relational databases. SQLite is a self-contained, serverless, and zero-configuration database engine that is widely used for embedded database systems. In this lesson, we will cover the basics of SQL and SQLite, including creating databases, tables, and performing various SQL operations." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import sqlite3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Connect to an SQLite database\n", + "connection=sqlite3.connect('example.db')\n", + "connection" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "cursor=connection.cursor()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "## Create a Table\n", + "cursor.execute('''\n", + "Create Table If Not Exists employees(\n", + " id Integer Primary Key,\n", + " name Text Not Null,\n", + " age Integer,\n", + " department text\n", + " )\n", + "''')\n", + "\n", + "## Commit the changes\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cursor.execute('''\n", + "Select * from employees\n", + " \n", + "''')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "## Insert the data in sqlite table\n", + "cursor.execute('''\n", + "Insert Into employees(name,age,department)\n", + " values('Krish',32,'Data Scientist')\n", + "\n", + "''')\n", + "\n", + "cursor.execute('''\n", + "INSERT INTO employees (name, age, department)\n", + "VALUES ('Bob', 25, 'Engineering')\n", + "''')\n", + "\n", + "cursor.execute('''\n", + "INSERT INTO employees (name, age, department)\n", + "VALUES ('Charlie', 35, 'Finance')\n", + "''')\n", + "\n", + "## commi the changes\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 'Krish', 32, 'Data Scientist')\n", + "(2, 'Bob', 25, 'Engineering')\n", + "(3, 'Charlie', 35, 'Finance')\n" + ] + } + ], + "source": [ + "## Query the data from the table\n", + "cursor.execute('Select * from employees')\n", + "rows=cursor.fetchall()\n", + "\n", + "## print the queried data\n", + "\n", + "for row in rows:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "## Update the data in the table\n", + "cursor.execute('''\n", + "UPDATE employees\n", + "Set age=34\n", + "where name=\"Krish\"\n", + "''')\n", + "\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 'Krish', 34, 'Data Scientist')\n", + "(2, 'Bob', 25, 'Engineering')\n", + "(3, 'Charlie', 35, 'Finance')\n" + ] + } + ], + "source": [ + "## Query the data from the table\n", + "cursor.execute('Select * from employees')\n", + "rows=cursor.fetchall()\n", + "\n", + "## print the queried data\n", + "\n", + "for row in rows:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "## Delete the data from the table\n", + "cursor.execute('''\n", + "Delete from employees\n", + " where name ='Bob'\n", + "''')\n", + "\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 'Krish', 34, 'Data Scientist')\n", + "(3, 'Charlie', 35, 'Finance')\n" + ] + } + ], + "source": [ + "## Query the data from the table\n", + "cursor.execute('Select * from employees')\n", + "rows=cursor.fetchall()\n", + "\n", + "## print the queried data\n", + "\n", + "for row in rows:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "## Working Wwith Sales Data\n", + "# Connect to an SQLite database\n", + "connection = sqlite3.connect('sales_data.db')\n", + "cursor = connection.cursor()\n", + "\n", + "# Create a table for sales data\n", + "cursor.execute('''\n", + "CREATE TABLE IF NOT EXISTS sales (\n", + " id INTEGER PRIMARY KEY,\n", + " date TEXT NOT NULL,\n", + " product TEXT NOT NULL,\n", + " sales INTEGER,\n", + " region TEXT\n", + ")\n", + "''')\n", + "\n", + "# Insert data into the sales table\n", + "sales_data = [\n", + " ('2023-01-01', 'Product1', 100, 'North'),\n", + " ('2023-01-02', 'Product2', 200, 'South'),\n", + " ('2023-01-03', 'Product1', 150, 'East'),\n", + " ('2023-01-04', 'Product3', 250, 'West'),\n", + " ('2023-01-05', 'Product2', 300, 'North')\n", + "]\n", + "\n", + "cursor.executemany('''\n", + "Insert into sales(date,product,sales,region)\n", + " values(?,?,?,?)\n", + "''',sales_data)\n", + "\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, '2023-01-01', 'Product1', 100, 'North')\n", + "(2, '2023-01-02', 'Product2', 200, 'South')\n", + "(3, '2023-01-03', 'Product1', 150, 'East')\n", + "(4, '2023-01-04', 'Product3', 250, 'West')\n", + "(5, '2023-01-05', 'Product2', 300, 'North')\n" + ] + } + ], + "source": [ + "# Query data from the sales table\n", + "cursor.execute('SELECT * FROM sales')\n", + "rows = cursor.fetchall()\n", + "\n", + "# Print the queried data\n", + "for row in rows:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "## close the connection\n", + "connection.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "ename": "ProgrammingError", + "evalue": "Cannot operate on a closed database.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mProgrammingError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[22], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Query data from the sales table\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[43mcursor\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mSELECT * FROM sales\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3\u001b[0m rows \u001b[38;5;241m=\u001b[39m cursor\u001b[38;5;241m.\u001b[39mfetchall()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Print the queried data\u001b[39;00m\n", + "\u001b[1;31mProgrammingError\u001b[0m: Cannot operate on a closed database." + ] + } + ], + "source": [ + "# Query data from the sales table\n", + "cursor.execute('SELECT * FROM sales')\n", + "rows = cursor.fetchall()\n", + "\n", + "# Print the queried data\n", + "for row in rows:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/11-Working With Databases/example.db b/11-Working With Databases/example.db new file mode 100644 index 0000000000000000000000000000000000000000..e67221eb76fc7ec27b2c5313ac7b95eb8c64cb28 GIT binary patch literal 8192 zcmeI$PfEi;6bA5_+9C)gf`3Zsq7S>VAa1;XZH*u;qBa+pw$EfBnUu*WX4$nT>M1;h z_i);hZrzG}AM?oM>zojm& z-#?pvN(PDW3xNOxAOHafKmY;|fB*y_009X6Yk}37JZyEla#cDtOPRA}nwQMQep4I0 zgo7xgXfT|Fv~OP?k&j-`gK-?Qr6;R1WlI`!dA0p!RK^tXhoi^b*ISzI`YPt?(5|uI zrLrz#pPAOHafKmY;|fB*y_009U<00MtW;Pjv&IyFiy|_ literal 0 HcmV?d00001 diff --git a/11-Working With Databases/sales_data.db b/11-Working With Databases/sales_data.db new file mode 100644 index 0000000000000000000000000000000000000000..a4b19008d8f12145dd8627eb01900c6d021820a6 GIT binary patch literal 8192 zcmeI#F-yZh6bJCT*eVnxE|RIuxhb@gCb}EtkYbEAjc6Akny3Xel3ZOyS9e!GimM;P z&*9|dk}4Fz$))@sxx3`BqRgWDDUlZf0uX=z1Rwwb2tWV=5P$##ATWahk0xC(41+#3MRazZqo>$J_ zWobM<7r!l)TUR@l*;#TqN^eziW38yo>qTw;p}*;``U7h88T<|LNf3Yl1Rwwb2tWV= z5P$##An?xuW__NlG&RGvY^P&&JJx2uEY)q=_R~yUwQ4G1`8#2wN^r>MagvMH+|;^L jt#`=_k8)vZQwP|S1IYUz9m@k~kwAampgY+hRxj`cs|a5u literal 0 HcmV?d00001 From 5fc53df110e2f7ac92362005ff8599a0ce2ceace Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Wed, 19 Jun 2024 15:15:59 +0530 Subject: [PATCH 4/7] Add files via upload --- 12-Logging In Python/12.1-logging.ipynb | 139 ++++++++++++++++ .../12.2-multiplelogger.ipynb | 149 ++++++++++++++++++ 12-Logging In Python/app.log | 10 ++ 12-Logging In Python/app.py | 44 ++++++ 12-Logging In Python/app1.log | 14 ++ .../logs/__pycache__/logger.cpython-312.pyc | Bin 0 -> 422 bytes 12-Logging In Python/logs/app.log | 2 + 12-Logging In Python/logs/logger.py | 10 ++ 12-Logging In Python/logs/test.py | 8 + 9 files changed, 376 insertions(+) create mode 100644 12-Logging In Python/12.1-logging.ipynb create mode 100644 12-Logging In Python/12.2-multiplelogger.ipynb create mode 100644 12-Logging In Python/app.log create mode 100644 12-Logging In Python/app.py create mode 100644 12-Logging In Python/app1.log create mode 100644 12-Logging In Python/logs/__pycache__/logger.cpython-312.pyc create mode 100644 12-Logging In Python/logs/app.log create mode 100644 12-Logging In Python/logs/logger.py create mode 100644 12-Logging In Python/logs/test.py diff --git a/12-Logging In Python/12.1-logging.ipynb b/12-Logging In Python/12.1-logging.ipynb new file mode 100644 index 000000000..ea24691fc --- /dev/null +++ b/12-Logging In Python/12.1-logging.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Python Logging\n", + "Logging is a crucial aspect of any application, providing a way to track events, errors, and operational information. Python's built-in logging module offers a flexible framework for emitting log messages from Python programs. In this lesson, we will cover the basics of logging, including how to configure logging, log levels, and best practices for using logging in Python applications." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-19 12:14:39 - root - DEBUG - This is a debug message\n", + "2024-06-19 12:14:39 - root - INFO - This is an info message\n", + "2024-06-19 12:14:39 - root - WARNING - This is a warning message\n", + "2024-06-19 12:14:39 - root - ERROR - This is an error message\n", + "2024-06-19 12:14:39 - root - CRITICAL - This is a critical message\n" + ] + } + ], + "source": [ + "import logging\n", + "\n", + "## Configure the basic logging settings\n", + "logging.basicConfig(level=logging.DEBUG)\n", + "\n", + "## log messages with different severity levels\n", + "logging.debug(\"This is a debug message\")\n", + "logging.info(\"This is an info message\")\n", + "logging.warning(\"This is a warning message\")\n", + "logging.error(\"This is an error message\")\n", + "logging.critical(\"This is a critical message\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Log Levels\n", + "Python's logging module has several log levels indicating the severity of events. The default levels are:\n", + "\n", + "- DEBUG: Detailed information, typically of interest only when diagnosing problems.\n", + "- INFO: Confirmation that things are working as expected.\n", + "- WARNING: An indication that something unexpected happened or indicative of some problem in the near future (e.g., ‘disk space low’). The software is still working as expected.\n", + "- ERROR: Due to a more serious problem, the software has not been able to perform some function.\n", + "- CRITICAL: A very serious error, indicating that the program itself may be unable to continue running." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "## configuring logging\n", + "import logging\n", + "\n", + "logging.basicConfig(\n", + " filename='app.log',\n", + " filemode='w',\n", + " level=logging.DEBUG,\n", + " format='%(asctime)s-%(name)s-%(levelname)s-%(message)s',\n", + " datefmt='%Y-%m-%d %H:%M:%S'\n", + " )\n", + "\n", + "## log messages with different severity levels\n", + "logging.debug(\"This is a debug message\")\n", + "logging.info(\"This is an info message\")\n", + "logging.warning(\"This is a warning message\")\n", + "logging.error(\"This is an error message\")\n", + "logging.critical(\"This is a critical message\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "logging.debug(\"This is a debug message\")\n", + "logging.info(\"This is an info message\")\n", + "logging.warning(\"This is a warning message\")\n", + "logging.error(\"This is an error message\")\n", + "logging.critical(\"This is a critical message\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12-Logging In Python/12.2-multiplelogger.ipynb b/12-Logging In Python/12.2-multiplelogger.ipynb new file mode 100644 index 000000000..b2cc84519 --- /dev/null +++ b/12-Logging In Python/12.2-multiplelogger.ipynb @@ -0,0 +1,149 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Logging with Multiple Loggers\n", + "You can create multiple loggers for different parts of your application." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "## create a logger for module1\n", + "logger1=logging.getLogger(\"module1\")\n", + "logger1.setLevel(logging.DEBUG)\n", + "\n", + "##create a logger for module 2\n", + "\n", + "logger2=logging.getLogger(\"module2\")\n", + "logger2.setLevel(logging.WARNING)\n", + "\n", + "# Configure logging settings\n", + "logging.basicConfig(\n", + " level=logging.DEBUG,\n", + " format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n", + " datefmt='%Y-%m-%d %H:%M:%S'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-06-19 13:21:55 - module1 - DEBUG - This is debug message for module1\n", + "2024-06-19 13:21:55 - module2 - WARNING - This is a warning message for module 2\n", + "2024-06-19 13:21:55 - module2 - ERROR - This is an error message\n" + ] + } + ], + "source": [ + "## log message with different loggers\n", + "logger1.debug(\"This is debug message for module1\")\n", + "logger2.warning(\"This is a warning message for module 2\")\n", + "logger2.error(\"This is an error message\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12-Logging In Python/app.log b/12-Logging In Python/app.log new file mode 100644 index 000000000..ab2eacced --- /dev/null +++ b/12-Logging In Python/app.log @@ -0,0 +1,10 @@ +2024-06-19 12:25:46-root-DEBUG-This is a debug message +2024-06-19 12:25:46-root-INFO-This is an info message +2024-06-19 12:25:46-root-WARNING-This is a warning message +2024-06-19 12:25:46-root-ERROR-This is an error message +2024-06-19 12:25:46-root-CRITICAL-This is a critical message +2024-06-19 12:26:04-root-DEBUG-This is a debug message +2024-06-19 12:26:04-root-INFO-This is an info message +2024-06-19 12:26:04-root-WARNING-This is a warning message +2024-06-19 12:26:04-root-ERROR-This is an error message +2024-06-19 12:26:04-root-CRITICAL-This is a critical message diff --git a/12-Logging In Python/app.py b/12-Logging In Python/app.py new file mode 100644 index 000000000..9345cabee --- /dev/null +++ b/12-Logging In Python/app.py @@ -0,0 +1,44 @@ +import logging + +## logging setting + +logging.basicConfig( + level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + handlers=[ + logging.FileHandler("app1.log"), + logging.StreamHandler() + ] +) + +logger=logging.getLogger("ArithmethicApp") + +def add(a,b): + result=a+b + logger.debug(f"Adding {a} + {b}= {result}") + return result + +def subtract(a, b): + result = a - b + logger.debug(f"Subtracting {a} - {b} = {result}") + return result + +def multiply(a, b): + result = a * b + logger.debug(f"Multiplying {a} * {b} = {result}") + return result + +def divide(a, b): + try: + result = a / b + logger.debug(f"Dividing {a} / {b} = {result}") + return result + except ZeroDivisionError: + logger.error("Division by zero error") + return None + +add(10,15) +subtract(15,10) +multiply(10,20) +divide(20,0) \ No newline at end of file diff --git a/12-Logging In Python/app1.log b/12-Logging In Python/app1.log new file mode 100644 index 000000000..4214a3f37 --- /dev/null +++ b/12-Logging In Python/app1.log @@ -0,0 +1,14 @@ +2024-06-19 13:34:00 - ArithmethicApp - DEBUG - Subtracting 15 - 10 = 5 +2024-06-19 13:34:00 - ArithmethicApp - DEBUG - Multiplying 10 * 20 = 200 +2024-06-19 13:34:00 - ArithmethicApp - DEBUG - Dividing 20 / 10 = 2.0 +2024-06-19 13:34:31 - ArithmethicApp - DEBUG - Subtracting 15 - 10 = 5 +2024-06-19 13:34:31 - ArithmethicApp - DEBUG - Multiplying 10 * 20 = 200 +2024-06-19 13:34:31 - ArithmethicApp - DEBUG - Dividing 20 / 10 = 2.0 +2024-06-19 13:35:26 - ArithmethicApp - DEBUG - Adding 10 + 15= 25 +2024-06-19 13:35:26 - ArithmethicApp - DEBUG - Subtracting 15 - 10 = 5 +2024-06-19 13:35:26 - ArithmethicApp - DEBUG - Multiplying 10 * 20 = 200 +2024-06-19 13:35:26 - ArithmethicApp - DEBUG - Dividing 20 / 10 = 2.0 +2024-06-19 13:36:12 - ArithmethicApp - DEBUG - Adding 10 + 15= 25 +2024-06-19 13:36:12 - ArithmethicApp - DEBUG - Subtracting 15 - 10 = 5 +2024-06-19 13:36:12 - ArithmethicApp - DEBUG - Multiplying 10 * 20 = 200 +2024-06-19 13:36:12 - ArithmethicApp - ERROR - Division by zero error diff --git a/12-Logging In Python/logs/__pycache__/logger.cpython-312.pyc b/12-Logging In Python/logs/__pycache__/logger.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ce6ae5f983aea9775f03826466270ecfb9ecc15 GIT binary patch literal 422 zcmX@j%ge<81m2BBX|I6vV-N=h*rANien7@_h7^Vr#vFzy1}277hAbwSA_Senl)?;@ zVL^z%SSc(itZUd-vqJcc43&(U>@Ptazbf{`f&#sq{PbIlUD{zBL YuwS=R_XfB14IcS#+-!_&MZ7@u0I{ZTYXATM literal 0 HcmV?d00001 diff --git a/12-Logging In Python/logs/app.log b/12-Logging In Python/logs/app.log new file mode 100644 index 000000000..958a54141 --- /dev/null +++ b/12-Logging In Python/logs/app.log @@ -0,0 +1,2 @@ +2024-06-19 12:29:57-root-DEBUG-The addition function is called +2024-06-19 12:29:57-root-DEBUG-The addition operation is taking place diff --git a/12-Logging In Python/logs/logger.py b/12-Logging In Python/logs/logger.py new file mode 100644 index 000000000..2bc2ae8f1 --- /dev/null +++ b/12-Logging In Python/logs/logger.py @@ -0,0 +1,10 @@ +## configuring logging +import logging + +logging.basicConfig( + filename='app.log', + filemode='w', + level=logging.DEBUG, + format='%(asctime)s-%(name)s-%(levelname)s-%(message)s', + datefmt='%Y-%m-%d %H:%M:%S' + ) \ No newline at end of file diff --git a/12-Logging In Python/logs/test.py b/12-Logging In Python/logs/test.py new file mode 100644 index 000000000..d451397ab --- /dev/null +++ b/12-Logging In Python/logs/test.py @@ -0,0 +1,8 @@ +from logger import logging + +def add(a,b): + logging.debug("The addition operation is taking place") + return a+b + +logging.debug("The addition function is called") +add(10,15) \ No newline at end of file From 33b4e7d7548e59d1bb2c2e9c69d323a60eb8f286 Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Fri, 21 Jun 2024 18:11:12 +0530 Subject: [PATCH 5/7] Add files via upload --- 13-Flask/flask/api.py | 68 +++++++++++++++++++ 13-Flask/flask/app.py | 19 ++++++ 13-Flask/flask/getpost.py | 37 ++++++++++ 13-Flask/flask/jinja.py | 89 +++++++++++++++++++++++++ 13-Flask/flask/main.py | 23 +++++++ 13-Flask/flask/sample.json | 3 + 13-Flask/flask/templates/about.html | 11 +++ 13-Flask/flask/templates/form.html | 15 +++++ 13-Flask/flask/templates/getresult.html | 29 ++++++++ 13-Flask/flask/templates/index.html | 11 +++ 13-Flask/flask/templates/result.html | 11 +++ 13-Flask/flask/templates/result1.html | 19 ++++++ 12 files changed, 335 insertions(+) create mode 100644 13-Flask/flask/api.py create mode 100644 13-Flask/flask/app.py create mode 100644 13-Flask/flask/getpost.py create mode 100644 13-Flask/flask/jinja.py create mode 100644 13-Flask/flask/main.py create mode 100644 13-Flask/flask/sample.json create mode 100644 13-Flask/flask/templates/about.html create mode 100644 13-Flask/flask/templates/form.html create mode 100644 13-Flask/flask/templates/getresult.html create mode 100644 13-Flask/flask/templates/index.html create mode 100644 13-Flask/flask/templates/result.html create mode 100644 13-Flask/flask/templates/result1.html diff --git a/13-Flask/flask/api.py b/13-Flask/flask/api.py new file mode 100644 index 000000000..270ff823b --- /dev/null +++ b/13-Flask/flask/api.py @@ -0,0 +1,68 @@ +### Put and Delete-HTTP Verbs +### Working With API's--Json + +from flask import Flask, jsonify, request + +app = Flask(__name__) + +##Initial Data in my to do list +items = [ + {"id": 1, "name": "Item 1", "description": "This is item 1"}, + {"id": 2, "name": "Item 2", "description": "This is item 2"} +] + +@app.route('/') +def home(): + return "Welcome To The Sample To DO List App" + +## Get: Retrieve all the items + +@app.route('/items',methods=['GET']) +def get_items(): + return jsonify(items) + +## get: Retireve a specific item by Id +@app.route('/items/',methods=['GET']) +def get_item(item_id): + item=next((item for item in items if item["id"]==item_id),None) + if item is None: + return jsonify({"error":"item not found"}) + return jsonify(item) + +## Post :create a new task- API +@app.route('/items',methods=['POST']) +def create_item(): + if not request.json or not 'name' in request.json: + return jsonify({"error":"item not found"}) + new_item={ + "id": items[-1]["id"] + 1 if items else 1, + "name":request.json['name'], + "description":request.json["description"] + + + } + items.append(new_item) + return jsonify(new_item) + +# Put: Update an existing item +@app.route('/items/',methods=['PUT']) +def update_item(item_id): + item = next((item for item in items if item["id"] == item_id), None) + if item is None: + return jsonify({"error": "Item not found"}) + item['name'] = request.json.get('name', item['name']) + item['description'] = request.json.get('description', item['description']) + return jsonify(item) + +# DELETE: Delete an item +@app.route('/items/', methods=['DELETE']) +def delete_item(item_id): + global items + items = [item for item in items if item["id"] != item_id] + return jsonify({"result": "Item deleted"}) + + + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/13-Flask/flask/app.py b/13-Flask/flask/app.py new file mode 100644 index 000000000..dfdd9fc91 --- /dev/null +++ b/13-Flask/flask/app.py @@ -0,0 +1,19 @@ +from flask import Flask +''' + It creates an instance of the Flask class, + which will be your WSGI (Web Server Gateway Interface) application. +''' +###WSGI Application +app=Flask(__name__) + +@app.route("/") +def welcome(): + return "Welcome to this best Flask course.This should be an amazing course" + +@app.route("/index") +def index(): + return "Welcome to the index page" + + +if __name__=="__main__": + app.run(debug=True) \ No newline at end of file diff --git a/13-Flask/flask/getpost.py b/13-Flask/flask/getpost.py new file mode 100644 index 000000000..bc93c7ccc --- /dev/null +++ b/13-Flask/flask/getpost.py @@ -0,0 +1,37 @@ +from flask import Flask,render_template,request +''' + It creates an instance of the Flask class, + which will be your WSGI (Web Server Gateway Interface) application. +''' +###WSGI Application +app=Flask(__name__) + +@app.route("/") +def welcome(): + return "

Welcome to the flask course

" + +@app.route("/index",methods=['GET']) +def index(): + return render_template('index.html') + +@app.route('/about') +def about(): + return render_template('about.html') + +@app.route('/form',methods=['GET','POST']) +def form(): + if request.method=='POST': + name=request.form['name'] + return f'Hello {name}!' + return render_template('form.html') + +@app.route('/submit',methods=['GET','POST']) +def submit(): + if request.method=='POST': + name=request.form['name'] + return f'Hello {name}!' + return render_template('form.html') + + +if __name__=="__main__": + app.run(debug=True) \ No newline at end of file diff --git a/13-Flask/flask/jinja.py b/13-Flask/flask/jinja.py new file mode 100644 index 000000000..69dc181c3 --- /dev/null +++ b/13-Flask/flask/jinja.py @@ -0,0 +1,89 @@ +### Building Url Dynamically +## Variable Rule +### Jinja 2 Template Engine + +### Jinja2 Template Engine +''' +{{ }} expressions to print output in html +{%...%} conditions, for loops +{#...#} this is for comments +''' + +from flask import Flask,render_template,request,redirect,url_for +''' + It creates an instance of the Flask class, + which will be your WSGI (Web Server Gateway Interface) application. +''' +###WSGI Application +app=Flask(__name__) + +@app.route("/") +def welcome(): + return "

Welcome to the flask course

" + +@app.route("/index",methods=['GET']) +def index(): + return render_template('index.html') + +@app.route('/about') +def about(): + return render_template('about.html') + + + +## Variable Rule +@app.route('/success/') +def success(score): + res="" + if score>=50: + res="PASSED" + else: + res="FAILED" + + return render_template('result.html',results=res) + +## Variable Rule +@app.route('/successres/') +def successres(score): + res="" + if score>=50: + res="PASSED" + else: + res="FAILED" + + exp={'score':score,"res":res} + + return render_template('result1.html',results=exp) + +## if confition +@app.route('/sucessif/') +def successif(score): + + return render_template('result.html',results=score) + +@app.route('/fail/') +def fail(score): + return render_template('result.html',results=score) + +@app.route('/submit',methods=['POST','GET']) +def submit(): + total_score=0 + if request.method=='POST': + science=float(request.form['science']) + maths=float(request.form['maths']) + c=float(request.form['c']) + data_science=float(request.form['datascience']) + + total_score=(science+maths+c+data_science)/4 + else: + return render_template('getresult.html') + return redirect(url_for('successres',score=total_score)) + + + + + + +if __name__=="__main__": + app.run(debug=True) + diff --git a/13-Flask/flask/main.py b/13-Flask/flask/main.py new file mode 100644 index 000000000..95eb8b9db --- /dev/null +++ b/13-Flask/flask/main.py @@ -0,0 +1,23 @@ +from flask import Flask,render_template +''' + It creates an instance of the Flask class, + which will be your WSGI (Web Server Gateway Interface) application. +''' +###WSGI Application +app=Flask(__name__) + +@app.route("/") +def welcome(): + return "

Welcome to the flask course

" + +@app.route("/index") +def index(): + return render_template('index.html') + +@app.route('/about') +def about(): + return render_template('about.html') + + +if __name__=="__main__": + app.run(debug=True) \ No newline at end of file diff --git a/13-Flask/flask/sample.json b/13-Flask/flask/sample.json new file mode 100644 index 000000000..49e349fc7 --- /dev/null +++ b/13-Flask/flask/sample.json @@ -0,0 +1,3 @@ +{"name": "New Item", "description": "This is a new item"} + +{"name": "Updated Item", "description": "This item has been updated"} \ No newline at end of file diff --git a/13-Flask/flask/templates/about.html b/13-Flask/flask/templates/about.html new file mode 100644 index 000000000..ae5ed031c --- /dev/null +++ b/13-Flask/flask/templates/about.html @@ -0,0 +1,11 @@ + + + + + About + + +

About

+

This is the about page of my Flask app.

+ + diff --git a/13-Flask/flask/templates/form.html b/13-Flask/flask/templates/form.html new file mode 100644 index 000000000..cf3afa77a --- /dev/null +++ b/13-Flask/flask/templates/form.html @@ -0,0 +1,15 @@ + + + + + Form + + +

Submit a Form

+
+ + + +
+ + diff --git a/13-Flask/flask/templates/getresult.html b/13-Flask/flask/templates/getresult.html new file mode 100644 index 000000000..f0f1c22ff --- /dev/null +++ b/13-Flask/flask/templates/getresult.html @@ -0,0 +1,29 @@ + + + + + + + + + +

HTML Forms

+ +
+
+
+
+

+
+

+
+

+ +
+ +

If you click the "Submit" button, the form-data will be sent to a page called "/submit".

+ + + \ No newline at end of file diff --git a/13-Flask/flask/templates/index.html b/13-Flask/flask/templates/index.html new file mode 100644 index 000000000..afa676dfd --- /dev/null +++ b/13-Flask/flask/templates/index.html @@ -0,0 +1,11 @@ + + + + + Flask App + + +

Welcome to My Flask App!

+

This is a simple web application built with Flask.

+ + diff --git a/13-Flask/flask/templates/result.html b/13-Flask/flask/templates/result.html new file mode 100644 index 000000000..0143b8a1f --- /dev/null +++ b/13-Flask/flask/templates/result.html @@ -0,0 +1,11 @@ +

+ + Based on the marks You have {{ results }} + + {% if results>=50 %} +

You have passed with marks {{results}}

+ {% else %} +

You have failed with marks {{results}}

+ {% endif %} + + \ No newline at end of file diff --git a/13-Flask/flask/templates/result1.html b/13-Flask/flask/templates/result1.html new file mode 100644 index 000000000..c07f15860 --- /dev/null +++ b/13-Flask/flask/templates/result1.html @@ -0,0 +1,19 @@ + +

+ Final Results +

+ + + + {% for key,value in results.items() %} + + {# This is the comment section #} +

{{ key }}

+

{{ value }}

+ + + {% endfor %} + + + + \ No newline at end of file From a67334dea861d0949b67c4f507ccc6896ebb8daf Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Tue, 25 Jun 2024 12:21:16 +0530 Subject: [PATCH 6/7] Add files via upload --- 14-Streamlit/app.py | 29 + 14-Streamlit/classification.py | 32 + 14-Streamlit/sampledata.csv | 5 + 14-Streamlit/streamlit.ipynb | 140 +++ 14-Streamlit/widgets.py | 37 + 15-Memory Management/memory_manage.ipynb | 1119 ++++++++++++++++++++++ requirements.txt | 9 +- 7 files changed, 1370 insertions(+), 1 deletion(-) create mode 100644 14-Streamlit/app.py create mode 100644 14-Streamlit/classification.py create mode 100644 14-Streamlit/sampledata.csv create mode 100644 14-Streamlit/streamlit.ipynb create mode 100644 14-Streamlit/widgets.py create mode 100644 15-Memory Management/memory_manage.ipynb diff --git a/14-Streamlit/app.py b/14-Streamlit/app.py new file mode 100644 index 000000000..98b29a209 --- /dev/null +++ b/14-Streamlit/app.py @@ -0,0 +1,29 @@ +import streamlit as st +import pandas as pd +import numpy as np + +## Title of the aplication +st.title("Hello Streamlit") + +## Diplay a Simple Text +st.write("This is a imple text") + +##create a simple Dataframe + +df = pd.DataFrame({ + 'first column': [1, 2, 3, 4], + 'second column': [10, 20, 30, 40] +}) + + +## Display the Dataframe +st.write("Here is the dataframe") +st.write(df) + + +##create a line chart + +chart_data=pd.DataFrame( + np.random.randn(20,3),columns=['a','b','c'] +) +st.line_chart(chart_data) \ No newline at end of file diff --git a/14-Streamlit/classification.py b/14-Streamlit/classification.py new file mode 100644 index 000000000..77a9c7203 --- /dev/null +++ b/14-Streamlit/classification.py @@ -0,0 +1,32 @@ +import streamlit as st +import pandas as pd +from sklearn.datasets import load_iris +from sklearn.ensemble import RandomForestClassifier + +@st.cache_data +def load_data(): + iris = load_iris() + df = pd.DataFrame(iris.data, columns=iris.feature_names) + df['species'] = iris.target + return df, iris.target_names + +df,target_names=load_data() + +model=RandomForestClassifier() +model.fit(df.iloc[:,:-1],df['species']) + +st.sidebar.title("Input Features") +sepal_length = st.sidebar.slider("Sepal length", float(df['sepal length (cm)'].min()), float(df['sepal length (cm)'].max())) +sepal_width = st.sidebar.slider("Sepal width", float(df['sepal width (cm)'].min()), float(df['sepal width (cm)'].max())) +petal_length = st.sidebar.slider("Petal length", float(df['petal length (cm)'].min()), float(df['petal length (cm)'].max())) +petal_width = st.sidebar.slider("Petal width", float(df['petal width (cm)'].min()), float(df['petal width (cm)'].max())) + +input_data = [[sepal_length, sepal_width, petal_length, petal_width]] + +## PRediction +prediction = model.predict(input_data) +predicted_species = target_names[prediction[0]] + +st.write("Prediction") +st.write(f"The predicted species is: {predicted_species}") + diff --git a/14-Streamlit/sampledata.csv b/14-Streamlit/sampledata.csv new file mode 100644 index 000000000..a43ecda13 --- /dev/null +++ b/14-Streamlit/sampledata.csv @@ -0,0 +1,5 @@ +,Name,Age,City +0,John,28,New York +1,Jane,24,Los Angeles +2,Jake,35,Chicago +3,Jill,40,Houston diff --git a/14-Streamlit/streamlit.ipynb b/14-Streamlit/streamlit.ipynb new file mode 100644 index 000000000..b87272155 --- /dev/null +++ b/14-Streamlit/streamlit.ipynb @@ -0,0 +1,140 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Introduction to Streamlit\n", + "Streamlit is an open-source app framework for Machine Learning and Data Science projects. It allows you to create beautiful web applications for your machine learning and data science projects with simple Python scripts." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/14-Streamlit/widgets.py b/14-Streamlit/widgets.py new file mode 100644 index 000000000..7508e7484 --- /dev/null +++ b/14-Streamlit/widgets.py @@ -0,0 +1,37 @@ +import streamlit as st +import pandas as pd + +st.title("Streamlit Text Input") + +name=st.text_input("Enter your name:") + + +age=st.slider("Select your age:",0,100,25) + +st.write(f"Your age is {age}.") + +options = ["Python", "Java", "C++", "JavaScript"] +choice = st.selectbox("Choose your favorite language:", options) +st.write(f"You selected {choice}.") + +if name: + st.write(f"Hello, {name}") + + +data = { + "Name": ["John", "Jane", "Jake", "Jill"], + "Age": [28, 24, 35, 40], + "City": ["New York", "Los Angeles", "Chicago", "Houston"] +} + +df = pd.DataFrame(data) +df.to_csv("sampledata.csv") +st.write(df) + + +uploaded_file=st.file_uploader("Choose a CSV file",type="csv") + +if uploaded_file is not None: + df=pd.read_csv(uploaded_file) + st.write(df) + diff --git a/15-Memory Management/memory_manage.ipynb b/15-Memory Management/memory_manage.ipynb new file mode 100644 index 000000000..c8a0f8d57 --- /dev/null +++ b/15-Memory Management/memory_manage.ipynb @@ -0,0 +1,1119 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Python Memory Management\n", + "Memory management in Python involves a combination of automatic garbage collection, reference counting, and various internal optimizations to efficiently manage memory allocation and deallocation. Understanding these mechanisms can help developers write more efficient and robust applications.\n", + "\n", + "1. Key Concepts in Python Memory Management\n", + "2. Memory Allocation and Deallocation\n", + "3. Reference Counting\n", + "4. Garbage Collection\n", + "5. The gc Module\n", + "6. Memory Management Best Practices" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Reference Counting\n", + "Reference counting is the primary method Python uses to manage memory. Each object in Python maintains a count of references pointing to it. When the reference count drops to zero, the memory occupied by the object is deallocated." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "import sys\n", + "\n", + "a=[]\n", + "## 2 (one reference from 'a' and one from getrefcount())\n", + "print(sys.getrefcount(a))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n" + ] + } + ], + "source": [ + "b=a\n", + "print(sys.getrefcount(b))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "del b\n", + "print(sys.getrefcount(a))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Garbage Collection\n", + "Python includes a cyclic garbage collector to handle reference cycles. Reference cycles occur when objects reference each other, preventing their reference counts from reaching zero." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import gc\n", + "## enable garbage collection\n", + "gc.enable()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "gc.disable()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1036" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gc.collect()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'collections': 182, 'collected': 1611, 'uncollectable': 0}, {'collections': 16, 'collected': 255, 'uncollectable': 0}, {'collections': 2, 'collected': 1036, 'uncollectable': 0}]\n" + ] + } + ], + "source": [ + "### Get garbage collection stats\n", + "print(gc.get_stats())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + } + ], + "source": [ + "### get unreachable objects\n", + "print(gc.garbage)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Memory Management Best Practices\n", + "1. Use Local Variables: Local variables have a shorter lifespan and are freed sooner than global variables.\n", + "2. Avoid Circular References: Circular references can lead to memory leaks if not properly managed.\n", + "3. Use Generators: Generators produce items one at a time and only keep one item in memory at a time, making them memory efficient.\n", + "4. Explicitly Delete Objects: Use the del statement to delete variables and objects explicitly.\n", + "5. Profile Memory Usage: Use memory profiling tools like tracemalloc and memory_profiler to identify memory leaks and optimize memory usage." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Object obj1 created\n", + "Object obj2 created\n", + "Object obj1 deleted\n", + "Object obj2 deleted\n", + "Object obj1 deleted\n", + "Object obj2 deleted\n", + "Object obj1 deleted\n", + "Object obj2 deleted\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable <_ctypes.PyCArrayType 0x00000205D597D480>\n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable <_ctypes.PyCArrayType 0x00000205D597B1A0>\n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n", + "gc: collectable \n" + ] + }, + { + "data": { + "text/plain": [ + "592" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "## Handled Circular reference\n", + "import gc\n", + "\n", + "class MyObject:\n", + " def __init__(self, name):\n", + " self.name = name\n", + " print(f\"Object {self.name} created\")\n", + "\n", + " def __del__(self):\n", + " print(f\"Object {self.name} deleted\")\n", + "\n", + "# Create circular reference\n", + "obj1 = MyObject(\"obj1\")\n", + "obj2 = MyObject(\"obj2\")\n", + "obj1.ref = obj2\n", + "obj2.ref = obj1\n", + "\n", + "del obj1\n", + "del obj2\n", + "\n", + "## Manually trigger the garbage collection\n", + "gc.collect()\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "5\n", + "6\n", + "7\n", + "8\n", + "9\n", + "10\n", + "11\n" + ] + } + ], + "source": [ + "## Generators For Memory Efficiency\n", + "#Generators allow you to produce items one at a time, using memory efficiently by only keeping one item in memory at a time.\n", + "\n", + "def generate_numbers(n):\n", + " for i in range(n):\n", + " yield i\n", + "\n", + "## using the generator\n", + "for num in generate_numbers(100000):\n", + " print(num)\n", + " if num>10:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "## Profiling Memory USage with tracemalloc\n", + "import tracemalloc\n", + "\n", + "def create_list():\n", + " return [i for i in range(10000)]\n", + "\n", + "def main():\n", + " tracemalloc.start()\n", + " \n", + " create_list()\n", + " \n", + " snapshot = tracemalloc.take_snapshot()\n", + " top_stats = snapshot.statistics('lineno')\n", + " \n", + " print(\"[ Top 10 ]\")\n", + " for stat in top_stats[::]:\n", + " print(stat)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ Top 10 ]\n", + "e:\\UDemy Final\\python\\venv\\Lib\\selectors.py:314: size=144 KiB, count=3, average=48.0 KiB\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\compilerop.py:174: size=11.2 KiB, count=122, average=94 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\builtin_trap.py:70: size=6512 B, count=1, average=6512 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\json\\decoder.py:353: size=5812 B, count=92, average=63 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:272: size=3800 B, count=10, average=380 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\codeop.py:118: size=3509 B, count=47, average=75 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\attrsettr.py:45: size=3431 B, count=73, average=47 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\compilerop.py:86: size=3395 B, count=52, average=65 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\traitlets\\traitlets.py:731: size=2883 B, count=46, average=63 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\jsonutil.py:111: size=2050 B, count=41, average=50 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\traitlets\\traitlets.py:1543: size=2031 B, count=33, average=62 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\jsonutil.py:75: size=1456 B, count=7, average=208 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\re\\_compiler.py:759: size=1360 B, count=5, average=272 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:346: size=1328 B, count=16, average=83 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\traitlets\\traitlets.py:1514: size=1320 B, count=11, average=120 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:1057: size=1276 B, count=11, average=116 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:100: size=1243 B, count=8, average=155 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\socket.py:369: size=1152 B, count=5, average=230 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\socket.py:809: size=1056 B, count=6, average=176 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:568: size=864 B, count=16, average=54 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:917: size=800 B, count=20, average=40 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:276: size=776 B, count=8, average=97 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\compiler.py:91: size=726 B, count=7, average=104 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\events.py:84: size=648 B, count=6, average=108 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\_weakrefset.py:88: size=640 B, count=8, average=80 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:1349: size=640 B, count=4, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:287: size=632 B, count=7, average=90 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:154: size=568 B, count=1, average=568 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3104: size=520 B, count=4, average=130 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:1027: size=480 B, count=8, average=60 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:782: size=440 B, count=2, average=220 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:775: size=424 B, count=2, average=212 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:836: size=416 B, count=6, average=69 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\context.py:354: size=416 B, count=4, average=104 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:790: size=416 B, count=1, average=416 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:789: size=416 B, count=1, average=416 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\fnmatch.py:46: size=400 B, count=5, average=80 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:783: size=393 B, count=1, average=393 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3334: size=376 B, count=1, average=376 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:262: size=360 B, count=5, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:261: size=360 B, count=5, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:362: size=360 B, count=1, average=360 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:269: size=344 B, count=3, average=115 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\dateutil\\parser\\_parser.py:1195: size=336 B, count=7, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:912: size=320 B, count=8, average=40 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3566: size=320 B, count=5, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\base_events.py:792: size=312 B, count=3, average=104 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:527: size=304 B, count=4, average=76 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3517: size=296 B, count=1, average=296 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\tornado\\queues.py:248: size=288 B, count=2, average=144 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\base_events.py:427: size=288 B, count=2, average=144 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:142: size=288 B, count=1, average=288 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\fnmatch.py:185: size=280 B, count=5, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\fnmatch.py:52: size=280 B, count=5, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:534: size=264 B, count=1, average=264 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:435: size=248 B, count=1, average=248 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:121: size=248 B, count=1, average=248 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:894: size=244 B, count=4, average=61 B\n", + ":66: size=240 B, count=5, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\socket.py:806: size=240 B, count=3, average=80 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\logging\\__init__.py:1622: size=240 B, count=1, average=240 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\3835544042.py:7: size=232 B, count=2, average=116 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\3835544042.py:4: size=232 B, count=2, average=116 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:545: size=232 B, count=1, average=232 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\zmqshell.py:549: size=224 B, count=3, average=75 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\compilerop.py:171: size=216 B, count=3, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3223: size=208 B, count=4, average=52 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\tornado\\platform\\asyncio.py:235: size=208 B, count=3, average=69 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\811388706.py:22: size=208 B, count=2, average=104 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\3581627739.py:22: size=208 B, count=2, average=104 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\2565588716.py:22: size=208 B, count=2, average=104 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\2547200138.py:22: size=208 B, count=2, average=104 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:1085: size=208 B, count=1, average=208 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:770: size=208 B, count=1, average=208 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\futures.py:418: size=200 B, count=5, average=40 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:688: size=194 B, count=2, average=97 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:750: size=192 B, count=2, average=96 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3224: size=176 B, count=4, average=44 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:1182: size=173 B, count=2, average=86 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\compilerop.py:172: size=168 B, count=6, average=28 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:969: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:570: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3577: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3493: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3237: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\futures.py:394: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\futures.py:387: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\futures.py:381: size=160 B, count=1, average=160 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:722: size=144 B, count=2, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\async_helpers.py:151: size=142 B, count=3, average=47 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:1016: size=140 B, count=5, average=28 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3509: size=128 B, count=3, average=43 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\jsonutil.py:73: size=128 B, count=2, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:121: size=120 B, count=2, average=60 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\traitlets\\traitlets.py:1540: size=120 B, count=2, average=60 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:318: size=120 B, count=2, average=60 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\eventloop\\zmqstream.py:652: size=120 B, count=1, average=120 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\inspect.py:265: size=120 B, count=1, average=120 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\base_events.py:755: size=120 B, count=1, average=120 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:1020: size=112 B, count=4, average=28 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:770: size=112 B, count=4, average=28 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:989: size=111 B, count=2, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\socket.py:755: size=96 B, count=2, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3375: size=96 B, count=2, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\warnings.py:189: size=96 B, count=1, average=96 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:805: size=90 B, count=2, average=45 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:996: size=88 B, count=2, average=44 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:551: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:528: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:477: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:420: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:312: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:225: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:220: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:215: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:212: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:203: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:187: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:172: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:155: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:151: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:147: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:66: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:52: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:37: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tracemalloc.py:13: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:271: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\threading.py:267: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:851: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:837: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:834: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\json\\encoder.py:224: size=72 B, count=1, average=72 B\n", + "C:\\Users\\win10\\AppData\\Local\\Temp\\ipykernel_37980\\451043146.py:0: size=72 B, count=1, average=72 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\base_events.py:1935: size=64 B, count=2, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\socket.py:810: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\eventloop\\zmqstream.py:640: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\eventloop\\zmqstream.py:561: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:1053: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:721: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\kernelbase.py:69: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:384: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:383: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:381: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:294: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\ipkernel.py:291: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\decorator.py:232: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3303: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3300: size=64 B, count=1, average=64 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\tokenize.py:537: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\traitlets\\traitlets.py:1534: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:1088: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:738: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3498: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:866: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\completer.py:1120: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\selectors.py:323: size=56 B, count=1, average=56 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:200: size=48 B, count=1, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3505: size=48 B, count=1, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:835: size=48 B, count=1, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\concurrent\\futures\\_base.py:330: size=48 B, count=1, average=48 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\zmq\\sugar\\attrsettr.py:29: size=47 B, count=1, average=47 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\prefilter.py:317: size=47 B, count=1, average=47 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\jupyter_client\\session.py:603: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:637: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\ipykernel\\iostream.py:168: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3503: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\history.py:793: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\completer.py:2813: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\completer.py:881: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\compilerop.py:192: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\concurrent\\futures\\_base.py:421: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\asyncio\\base_events.py:758: size=32 B, count=1, average=32 B\n", + "e:\\UDemy Final\\python\\venv\\Lib\\site-packages\\IPython\\core\\interactiveshell.py:3485: size=8 B, count=1, average=8 B\n" + ] + } + ], + "source": [ + "main()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/requirements.txt b/requirements.txt index 24ca97ad3..07b0ec227 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,9 @@ ipykernel -numpy \ No newline at end of file +numpy +pandas +matplotlib +seaborn +flask +memory_profiler +streamlit +scikit-learn From cb4a197385cc5f997d03b8b3f3a65bd3b1e89f63 Mon Sep 17 00:00:00 2001 From: Krish C Naik Date: Wed, 26 Jun 2024 14:57:55 +0530 Subject: [PATCH 7/7] Add files via upload --- .../advance_multi_processing.py | 17 +++++++ .../advance_multi_threading.py | 16 +++++++ .../factorial_multi_processing.py | 40 ++++++++++++++++ .../multi_processing.py | 35 ++++++++++++++ .../multi_threading.py | 33 +++++++++++++ .../webscrapping_multi_threading.py | 48 +++++++++++++++++++ 6 files changed, 189 insertions(+) create mode 100644 16-Multithreading and Multiprocessing/advance_multi_processing.py create mode 100644 16-Multithreading and Multiprocessing/advance_multi_threading.py create mode 100644 16-Multithreading and Multiprocessing/factorial_multi_processing.py create mode 100644 16-Multithreading and Multiprocessing/multi_processing.py create mode 100644 16-Multithreading and Multiprocessing/multi_threading.py create mode 100644 16-Multithreading and Multiprocessing/webscrapping_multi_threading.py diff --git a/16-Multithreading and Multiprocessing/advance_multi_processing.py b/16-Multithreading and Multiprocessing/advance_multi_processing.py new file mode 100644 index 000000000..2544a09b9 --- /dev/null +++ b/16-Multithreading and Multiprocessing/advance_multi_processing.py @@ -0,0 +1,17 @@ +### Multiprocessing with ProcessPoolExecutor + +from concurrent.futures import ProcessPoolExecutor +import time + +def square_number(number): + time.sleep(2) + return f"Square: {number * number}" + +numbers=[1,2,3,4,5,6,7,8,9,11,2,3,12,14] +if __name__=="__main__": + + with ProcessPoolExecutor(max_workers=3) as executor: + results=executor.map(square_number,numbers) + + for result in results: + print(result) \ No newline at end of file diff --git a/16-Multithreading and Multiprocessing/advance_multi_threading.py b/16-Multithreading and Multiprocessing/advance_multi_threading.py new file mode 100644 index 000000000..89ca2eec3 --- /dev/null +++ b/16-Multithreading and Multiprocessing/advance_multi_threading.py @@ -0,0 +1,16 @@ +### Multithreading With Thread Pool Executor + +from concurrent.futures import ThreadPoolExecutor +import time + +def print_number(number): + time.sleep(1) + return f"Number :{number}" + +numbers=[1,2,3,4,5,6,7,8,9,0,1,2,3] + +with ThreadPoolExecutor(max_workers=3) as executor: + results=executor.map(print_number,numbers) + +for result in results: + print(result) \ No newline at end of file diff --git a/16-Multithreading and Multiprocessing/factorial_multi_processing.py b/16-Multithreading and Multiprocessing/factorial_multi_processing.py new file mode 100644 index 000000000..c4b1548d4 --- /dev/null +++ b/16-Multithreading and Multiprocessing/factorial_multi_processing.py @@ -0,0 +1,40 @@ +''' +Real-World Example: Multiprocessing for CPU-bound Tasks +Scenario: Factorial Calculation +Factorial calculations, especially for large numbers, +involve significant computational work. Multiprocessing +can be used to distribute the workload across multiple +CPU cores, improving performance. + +''' + +import multiprocessing +import math +import sys +import time + +# Increase the maximum number of digits for integer conversion +sys.set_int_max_str_digits(100000) + +## function to compute factorials of a given number + +def computer_factorial(number): + print(f"Computing factorial of {number}") + result=math.factorial(number) + print(f"Factorial of {number} is {result}") + return result + +if __name__=="__main__": + numbers=[5000,6000,700,8000] + + start_time=time.time() + + ##create a pool of worker processes + with multiprocessing.Pool() as pool: + results=pool.map(computer_factorial,numbers) + + end_time=time.time() + + print(f"Results: {results}") + print(f"Time taken: {end_time - start_time} seconds") + diff --git a/16-Multithreading and Multiprocessing/multi_processing.py b/16-Multithreading and Multiprocessing/multi_processing.py new file mode 100644 index 000000000..70f4957a2 --- /dev/null +++ b/16-Multithreading and Multiprocessing/multi_processing.py @@ -0,0 +1,35 @@ +## PRocesses that run in parallel +### CPU-Bound Tasks-Tasks that are heavy on CPU usage (e.g., mathematical computations, data processing). +## PArallel execution- Multiple cores of the CPU + +import multiprocessing + +import time + +def square_numbers(): + for i in range(5): + time.sleep(1) + print(f"Square: {i*i}") + +def cube_numbers(): + for i in range(5): + time.sleep(1.5) + print(f"Cube: {i * i * i}") + +if __name__=="__main__": + + ## create 2 processes + p1=multiprocessing.Process(target=square_numbers) + p2=multiprocessing.Process(target=cube_numbers) + t=time.time() + + ## start the process + p1.start() + p2.start() + + ## Wait for the process to complete + p1.join() + p2.join() + + finished_time=time.time()-t + print(finished_time) \ No newline at end of file diff --git a/16-Multithreading and Multiprocessing/multi_threading.py b/16-Multithreading and Multiprocessing/multi_threading.py new file mode 100644 index 000000000..4f2ca6550 --- /dev/null +++ b/16-Multithreading and Multiprocessing/multi_threading.py @@ -0,0 +1,33 @@ +### Multithreading +## When to use Multi Threading +###I/O-bound tasks: Tasks that spend more time waiting for I/O operations (e.g., file operations, network requests). +### Concurrent execution: When you want to improve the throughput of your application by performing multiple operations concurrently. + +import threading +import time + +def print_numbers(): + for i in range(5): + time.sleep(2) + print(f"Number:{i}") + +def print_letter(): + for letter in "abcde": + time.sleep(2) + print(f"Letter: {letter}") + +##create 2 threads +t1=threading.Thread(target=print_numbers) +t2=threading.Thread(target=print_letter) + +t=time.time() +## start the thread +t1.start() +t2.start() + +### Wait for the threads to complete +t1.join() +t2.join() + +finished_time=time.time()-t +print(finished_time) \ No newline at end of file diff --git a/16-Multithreading and Multiprocessing/webscrapping_multi_threading.py b/16-Multithreading and Multiprocessing/webscrapping_multi_threading.py new file mode 100644 index 000000000..06eca14bc --- /dev/null +++ b/16-Multithreading and Multiprocessing/webscrapping_multi_threading.py @@ -0,0 +1,48 @@ +''' +Real-World Example: Multithreading for I/O-bound Tasks +Scenario: Web Scraping +Web scraping often involves making numerous network requests to +fetch web pages. These tasks are I/O-bound because they spend a lot of +time waiting for responses from servers. Multithreading can significantly +improve the performance by allowing multiple web pages to be fetched concurrently. + +''' + +''' + +https://python.langchain.com/v0.2/docs/introduction/ + +https://python.langchain.com/v0.2/docs/concepts/ + +https://python.langchain.com/v0.2/docs/tutorials/ +''' + +import threading +import requests +from bs4 import BeautifulSoup + +urls=[ +'https://python.langchain.com/v0.2/docs/introduction/', + +'https://python.langchain.com/v0.2/docs/concepts/', + +'https://python.langchain.com/v0.2/docs/tutorials/' + +] + +def fetch_content(url): + response=requests.get(url) + soup=BeautifulSoup(response.content,'html.parser') + print(f'Fetched {len(soup.text)} characters from {url}') + +threads=[] + +for url in urls: + thread=threading.Thread(target=fetch_content,args=(url,)) + threads.append(thread) + thread.start() + +for thread in threads: + thread.join() + +print("All web pages fetched") \ No newline at end of file