diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..4b16f59 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/Assignment/Assignment1 Numpy Solution.ipynb b/Assignment/Assignment1 Numpy Solution.ipynb new file mode 100644 index 0000000..77853a7 --- /dev/null +++ b/Assignment/Assignment1 Numpy Solution.ipynb @@ -0,0 +1,394 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Assignment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make a python list => \\[1,2,3,4,5\\]\n", + "\n", + "Convert it into numpy array and print it" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2, 3, 4, 5])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a=[1,2,3,4,5]\n", + "np.array(a)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make a python matrix (3 x 3) => \\[[1,2,3],[4,5,6],[7,8,9]\\]\n", + "\n", + "Convert it into numpy array and print it" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array( [[1,2,3],[4,5,6],[7,8,9]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make a matrix (3 x 3) using built-in methods (like arange(), reshape() etc.):\n", + "\n", + "\\[ [1,3,5],\n", + "\n", + " [7,9,11],\n", + " \n", + " [13,15,17] \\]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 3, 5],\n", + " [ 7, 9, 11],\n", + " [13, 15, 17]])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.arange(1,18,2).reshape(3,3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a numpy array with 10 random numbers from 0 to 10 (there should be few numbers greater than 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5.21123512, 3.42271411, 8.41863607, 9.05091877, 0.87481072,\n", + " 9.42826073, 4.98176773, 9.20505637, 5.70994345, 1.70182866])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.rand(10)*10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create numpy array => \\[1,2,3,4,5\\] and convert it to 2D array with 5 rows" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1],\n", + " [2],\n", + " [3],\n", + " [4],\n", + " [5]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b=np.array([1,2,3,4,5]).reshape(5,1)\n", + "b" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print the shape of the above created array" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5, 1)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a numpy array with 10 elements in it. Access and print its 3rd, 4th and 9th element." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c=np.arange(10)\n", + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2 3 8\n" + ] + } + ], + "source": [ + "print(c[2], c[3], c[8])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print alternate elements of that array" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 2, 4, 6, 8])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c[::2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Change last 3 elements into 100 using broadcasting and print" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 100, 100, 100])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c[-3:]=100\n", + "c" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a 5 x 5 matrix (fill it with any element you like), print it.\n", + "\n", + "Then print the middle (3 x 3) matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2, 3, 4],\n", + " [ 5, 6, 7, 8, 9],\n", + " [10, 11, 12, 13, 14],\n", + " [15, 16, 17, 18, 19],\n", + " [20, 21, 22, 23, 24]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=np.arange(25).reshape(5,5)\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 6, 7, 8],\n", + " [11, 12, 13],\n", + " [16, 17, 18]])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d[1:4,1:4]" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Assignment/Assignment2 pandas.ipynb b/Assignment/Assignment2 pandas.ipynb new file mode 100644 index 0000000..f382b27 --- /dev/null +++ b/Assignment/Assignment2 pandas.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "#%matplotlib notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "import the dataset into a dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display the column names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display the number of rows and cols" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display the dataframe info (types of data in columns and not null values etc.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display stats of the dataframe like count, mean, std, max, 25% etc....." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display null values per column" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "remove columns will all values as NaN" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "display number of unique values in each column" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "mean of total pay of all people based on year" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "how many people have 0 overtime pay" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "max, min, mean, median and other stats of TotalPay of people having 0 OvertimePay" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "find Id of that person with max TotalPay you got in previous question" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "name of employee with total pay benefits = 87619.78" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "how many people have BasePay > 150000 and OvertimePay > 100000" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which job title generally has highest average TotalPayBenefits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How many employees are POLICE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# .str.contains()" + ] + } + ], + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Day 5 pandas.ipynb b/Day 5 pandas.ipynb new file mode 100644 index 0000000..85c85c1 --- /dev/null +++ b/Day 5 pandas.ipynb @@ -0,0 +1,1083 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "df2=pd.DataFrame(np.random.rand(15).reshape(5,3), columns=['col1','col2','col3'], index=['a','b','c','d','e'])\n", + "df2['col4']= np.arange(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
b0.6507800.9240540.8345341
c0.8251240.1984400.0242212
d0.9315590.0766590.3824283
e0.6527080.9956720.5722944
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "b 0.650780 0.924054 0.834534 1\n", + "c 0.825124 0.198440 0.024221 2\n", + "d 0.931559 0.076659 0.382428 3\n", + "e 0.652708 0.995672 0.572294 4" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
col1col2col3col4col5
a0.9947000.3743230.83017101.824871
b0.6507800.9240540.83453411.485314
c0.8251240.1984400.02422120.849345
d0.9315590.0766590.38242831.313987
e0.6527080.9956720.57229441.225002
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4 col5\n", + "a 0.994700 0.374323 0.830171 0 1.824871\n", + "b 0.650780 0.924054 0.834534 1 1.485314\n", + "c 0.825124 0.198440 0.024221 2 0.849345\n", + "d 0.931559 0.076659 0.382428 3 1.313987\n", + "e 0.652708 0.995672 0.572294 4 1.225002" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2['col5']= df2['col1'] + df2['col3']\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
b0.6507800.9240540.8345341
c0.8251240.1984400.0242212
d0.9315590.0766590.3824283
e0.6527080.9956720.5722944
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "b 0.650780 0.924054 0.834534 1\n", + "c 0.825124 0.198440 0.024221 2\n", + "d 0.931559 0.076659 0.382428 3\n", + "e 0.652708 0.995672 0.572294 4" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# drop\n", + "df2.drop('col5', axis=1)" + ] + }, + { + "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", + "
col1col2col3col4col5
a0.9947000.3743230.83017101.824871
b0.6507800.9240540.83453411.485314
c0.8251240.1984400.02422120.849345
d0.9315590.0766590.38242831.313987
e0.6527080.9956720.57229441.225002
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4 col5\n", + "a 0.994700 0.374323 0.830171 0 1.824871\n", + "b 0.650780 0.924054 0.834534 1 1.485314\n", + "c 0.825124 0.198440 0.024221 2 0.849345\n", + "d 0.931559 0.076659 0.382428 3 1.313987\n", + "e 0.652708 0.995672 0.572294 4 1.225002" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "df2.drop('col5', axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
b0.6507800.9240540.8345341
c0.8251240.1984400.0242212
d0.9315590.0766590.3824283
e0.6527080.9956720.5722944
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "b 0.650780 0.924054 0.834534 1\n", + "c 0.825124 0.198440 0.024221 2\n", + "d 0.931559 0.076659 0.382428 3\n", + "e 0.652708 0.995672 0.572294 4" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
b0.6507800.9240540.8345341
c0.8251240.1984400.0242212
d0.9315590.0766590.3824283
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "b 0.650780 0.924054 0.834534 1\n", + "c 0.825124 0.198440 0.024221 2\n", + "d 0.931559 0.076659 0.382428 3" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# drooping a row\n", + "df2.drop('e')" + ] + }, + { + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
b0.6507800.9240540.8345341
c0.8251240.1984400.0242212
d0.9315590.0766590.3824283
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "b 0.650780 0.924054 0.834534 1\n", + "c 0.825124 0.198440 0.024221 2\n", + "d 0.931559 0.076659 0.382428 3" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# drop rows based on conditions\n", + "df2.drop(df2[df2['col4'] > 3].index)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['e'], dtype='object')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[df2['col4']>3].index" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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", + "
col1col2col3col4
a0.9947000.3743230.8301710
d0.9315590.0766590.3824283
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "a 0.994700 0.374323 0.830171 0\n", + "d 0.931559 0.076659 0.382428 3" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2.drop(df2[(df2['col4']>3) | (df2['col1']<0.9)].index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multi-Index" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MultiIndex(levels=[['Task1', 'Task2'], ['Lucky', 'Ram']],\n", + " labels=[[0, 0, 1, 1], [1, 0, 1, 0]])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "outer=['Task1','Task1','Task2','Task2']\n", + "inner=['Ram','Lucky','Ram','Lucky']\n", + "multiIndex= pd.MultiIndex.from_tuples(list(zip(outer, inner)))\n", + "multiIndex" + ] + }, + { + "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", + "
level1level2
Task1Ram0.1761300.080082
Lucky0.1029940.235086
Task2Ram0.8465690.390396
Lucky0.4642710.384739
\n", + "
" + ], + "text/plain": [ + " level1 level2\n", + "Task1 Ram 0.176130 0.080082\n", + " Lucky 0.102994 0.235086\n", + "Task2 Ram 0.846569 0.390396\n", + " Lucky 0.464271 0.384739" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3= pd.DataFrame(np.random.rand(4,2), index=multiIndex, columns=['level1','level2'])\n", + "df3" + ] + }, + { + "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", + "
level1level2
Ram0.1761300.080082
Lucky0.1029940.235086
\n", + "
" + ], + "text/plain": [ + " level1 level2\n", + "Ram 0.176130 0.080082\n", + "Lucky 0.102994 0.235086" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc['Task1']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "level1 0.102994\n", + "level2 0.235086\n", + "Name: Lucky, dtype: float64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc['Task1'].loc['Lucky']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ram 0.080082\n", + "Lucky 0.235086\n", + "Name: level2, dtype: float64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc['Task1','level2']" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Task1 Ram 0.080082\n", + " Lucky 0.235086\n", + "Task2 Ram 0.390396\n", + " Lucky 0.384739\n", + "Name: level2, dtype: float64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc[['Task1','Task2'], 'level2']" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "level1 0.176130\n", + "level2 0.080082\n", + "Name: (Task1, Ram), dtype: float64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc[('Task1','Ram')]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.1761304116915441" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc[('Task1','Ram'),'level1']" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Task1 Ram 0.080082\n", + "Task2 Lucky 0.384739\n", + "Name: level2, dtype: float64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.loc[[('Task1','Ram'), ('Task2','Lucky')],'level2']" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Day 6 Pandas.ipynb b/Day 6 Pandas.ipynb new file mode 100644 index 0000000..4f3cfea --- /dev/null +++ b/Day 6 Pandas.ipynb @@ -0,0 +1,1474 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "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", + "
col1col2col3
0a101
1b202
2c301
3d401
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 a 10 1\n", + "1 b 20 2\n", + "2 c 30 1\n", + "3 d 40 1" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.DataFrame({'col1':['a','b','c','d'],'col2':[10,20,30,40],'col3':[1,2,1,1]})\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Handy DataFrame Operations" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(4, 3)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.shape" + ] + }, + { + "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", + "
col1col2col3
0a101
1b202
2c301
3d401
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 a 10 1\n", + "1 b 20 2\n", + "2 c 30 1\n", + "3 d 40 1" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 4 entries, 0 to 3\n", + "Data columns (total 3 columns):\n", + "col1 4 non-null object\n", + "col2 4 non-null int64\n", + "col3 4 non-null int64\n", + "dtypes: int64(2), object(1)\n", + "memory usage: 176.0+ bytes\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col2col3
count4.0000004.00
mean25.0000001.25
std12.9099440.50
min10.0000001.00
25%17.5000001.00
50%25.0000001.00
75%32.5000001.25
max40.0000002.00
\n", + "
" + ], + "text/plain": [ + " col2 col3\n", + "count 4.000000 4.00\n", + "mean 25.000000 1.25\n", + "std 12.909944 0.50\n", + "min 10.000000 1.00\n", + "25% 17.500000 1.00\n", + "50% 25.000000 1.00\n", + "75% 32.500000 1.25\n", + "max 40.000000 2.00" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2], dtype=int64)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col3'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col3'].nunique()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 3\n", + "2 1\n", + "Name: col3, dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col3'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['col1', 'col2', 'col3'], dtype='object')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RangeIndex(start=0, stop=4, step=1)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.index" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sorting" + ] + }, + { + "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", + "
col1col2col3
0a101
2c301
3d401
1b202
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 a 10 1\n", + "2 c 30 1\n", + "3 d 40 1\n", + "1 b 20 2" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.sort_values(by='col3')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "sort_values() missing 1 required positional argument: 'by'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: sort_values() missing 1 required positional argument: 'by'" + ] + } + ], + "source": [ + "df.sort_values()" + ] + }, + { + "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", + "
col1col2col3
1b202
0a101
2c301
3d401
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "1 b 20 2\n", + "0 a 10 1\n", + "2 c 30 1\n", + "3 d 40 1" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.sort_values(by='col3', ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "2 1\n", + "3 1\n", + "1 2\n", + "Name: col3, dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col3'].sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## apply()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def add(x):\n", + " return x+2" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 12\n", + "1 22\n", + "2 32\n", + "3 42\n", + "Name: col2, dtype: int64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col2'].apply(lambda x:x+2)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 10\n", + "1 20\n", + "2 30\n", + "3 40\n", + "Name: col2, dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col2']" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col2'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col2'].apply('sum')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "25.0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['col2'].apply('mean')" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 a.?\n", + "1 b.?\n", + "2 c.?\n", + "3 d.?\n", + "Name: col1, dtype: object" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def rename(x):\n", + " return x+'.?'\n", + "df['col1'].apply(rename)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + "
latlong
022°35'82°35'
125°55'85°55'
\n", + "
" + ], + "text/plain": [ + " lat long\n", + "0 22°35' 82°35'\n", + "1 25°55' 85°55'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2=pd.DataFrame({'lat':[\"22°35'\",\"25°55'\"],'long':[\"82°35'\",\"85°55'\"]})\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 22.583333\n", + "1 25.916667\n", + "Name: lat, dtype: float64" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def deg(x):\n", + " degree= float(x.split(\"°\")[0])\n", + " minute= float(x.split(\"°\")[1][:-1])\n", + " total= degree+ (minute/60)\n", + " return total\n", + "\n", + "df2['lat'].apply(deg)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 82.583333\n", + "1 85.916667\n", + "Name: long, dtype: float64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2['long'].apply(deg)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Missing values" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "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", + "
abc
01.0NaN7.0
1NaNNaN8.0
23.06.0NaN
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.0 NaN 7.0\n", + "1 NaN NaN 8.0\n", + "2 3.0 6.0 NaN\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df=pd.DataFrame({'a':[1, np.nan, 3,10], 'b':[np.nan,np.nan,6,11], 'c':[7,8,np.nan,12]})\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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", + "
abc
0FalseTrueFalse
1TrueTrueFalse
2FalseFalseTrue
3FalseFalseFalse
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 False True False\n", + "1 True True False\n", + "2 False False True\n", + "3 False False False" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 1\n", + "b 2\n", + "c 1\n", + "dtype: int64" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "1 2\n", + "2 1\n", + "3 0\n", + "dtype: int64" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "# dropna" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abc
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dropna()" + ] + }, + { + "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", + "
0
1
2
3
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: [0, 1, 2, 3]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dropna(axis=1)" + ] + }, + { + "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", + "
abc
01.0NaN7.0
23.06.0NaN
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.0 NaN 7.0\n", + "2 3.0 6.0 NaN\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dropna(thresh=2)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "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", + "
abc
01.0NaN7.0
1NaNNaN8.0
23.06.0NaN
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.0 NaN 7.0\n", + "1 NaN NaN 8.0\n", + "2 3.0 6.0 NaN\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abc
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dropna(thresh=3)" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Day 7 Pandas.ipynb b/Day 7 Pandas.ipynb new file mode 100644 index 0000000..7bf8c4e --- /dev/null +++ b/Day 7 Pandas.ipynb @@ -0,0 +1,1715 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Groupby" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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", + "
NameGroupScoreGender
0Ram1201
1Sam2401
2Hari1351
3Lucky3111
4Sita2540
\n", + "
" + ], + "text/plain": [ + " Name Group Score Gender\n", + "0 Ram 1 20 1\n", + "1 Sam 2 40 1\n", + "2 Hari 1 35 1\n", + "3 Lucky 3 11 1\n", + "4 Sita 2 54 0" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df= pd.DataFrame({'Name':['Ram','Sam','Hari','Lucky','Sita'],\n", + " 'Group':[1,2,1,3,2],'Score': [20,40,35,11,54], 'Gender':[1,1,1,1,0]})\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Group')" + ] + }, + { + "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", + "
ScoreGender
Group
127.51.0
247.00.5
311.01.0
\n", + "
" + ], + "text/plain": [ + " Score Gender\n", + "Group \n", + "1 27.5 1.0\n", + "2 47.0 0.5\n", + "3 11.0 1.0" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Group').mean()" + ] + }, + { + "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", + "
GroupScore
Gender
02.0054.0
11.7526.5
\n", + "
" + ], + "text/plain": [ + " Group Score\n", + "Gender \n", + "0 2.00 54.0\n", + "1 1.75 26.5" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Gender').mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "a=df.groupby('Group').mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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", + "
ScoreGender
Group
127.51.0
247.00.5
311.01.0
\n", + "
" + ], + "text/plain": [ + " Score Gender\n", + "Group \n", + "1 27.5 1.0\n", + "2 47.0 0.5\n", + "3 11.0 1.0" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Group\n", + "1 27.5\n", + "2 47.0\n", + "3 11.0\n", + "Name: Score, dtype: float64" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a['Score']" + ] + }, + { + "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", + "
Score
Group
127.5
247.0
311.0
\n", + "
" + ], + "text/plain": [ + " Score\n", + "Group \n", + "1 27.5\n", + "2 47.0\n", + "3 11.0" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[['Score']]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAADGNJREFUeJzt3W2IpfV5x/HvL7trE7DUJDtJF9dmLEiJLY3aRbYIJWgCNhYVasFQ0rVYFvpADS2027xoSekLfZOEPkDYVum2hKiYUK0mFGuUUGg3HY0m2m2qEdsuSnbyoEZaUja9+mJum2Wc8dxn5szMnivfDwxzHu4zc/251++cuefcx1QVkqT594adHkCSNBsGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSE7u385vt3bu3FhcXt/NbStLce/TRR79eVQuTttvWoC8uLrK0tLSd31KS5l6Sfx+znYdcJKkJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqYltPVNU318Wjzyw0yO09dyt1+z0CDoL+Qxdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUxOigJ9mV5ItJ7h+uX5jkeJKnk9yV5JytG1OSNMk0z9BvAU6ccf024KNVdRHwLeDmWQ4mSZrOqKAn2Q9cA/zFcD3AlcA9wybHgOu3YkBJ0jhjn6F/DPgd4H+H628FXqyq08P1k8D5M55NkjSFiUFP8nPAqap69Myb19i01nn84SRLSZaWl5c3OKYkaZIxz9CvAK5N8hxwJyuHWj4GnJdk97DNfuD5tR5cVUer6kBVHVhYWJjByJKktUwMelX9XlXtr6pF4Ebgc1X1i8DDwA3DZoeAe7dsSknSRJt5HfrvAr+V5BlWjqnfPpuRJEkbsXvyJt9TVY8AjwyXnwUun/1IkqSN8ExRSWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmpgY9CRvTPKFJE8keSrJh4fbL0xyPMnTSe5Kcs7WjytJWs+YZ+jfAa6sqncBlwBXJzkI3AZ8tKouAr4F3Lx1Y0qSJpkY9FrxynB1z/BRwJXAPcPtx4Drt2RCSdIoo46hJ9mV5HHgFPAg8FXgxao6PWxyEjh/a0aUJI0xKuhV9d2qugTYD1wOvHOtzdZ6bJLDSZaSLC0vL298UknS65rqVS5V9SLwCHAQOC/J7uGu/cDz6zzmaFUdqKoDCwsLm5lVkvQ6xrzKZSHJecPlNwHvAU4ADwM3DJsdAu7dqiElSZPtnrwJ+4BjSXax8gPg7qq6P8m/AHcm+SPgi8DtWzinJGmCiUGvqi8Bl65x+7OsHE+XJJ0FPFNUkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNjHkd+llh8cgDOz1CW8/des1OjyBpBnyGLklNGHRJasKgS1ITBl2SmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmpgY9CQXJHk4yYkkTyW5Zbj9LUkeTPL08PnNWz+uJGk9Y56hnwZ+u6reCRwEfj3JxcAR4KGqugh4aLguSdohE4NeVS9U1WPD5W8DJ4DzgeuAY8Nmx4Drt2pISdJkUx1DT7IIXAocB95eVS/ASvSBt816OEnSeKODnuRc4FPAB6vq5SkedzjJUpKl5eXljcwoSRphVNCT7GEl5p+oqk8PN38tyb7h/n3AqbUeW1VHq+pAVR1YWFiYxcySpDWMeZVLgNuBE1X1kTPuug84NFw+BNw7+/EkSWPtHrHNFcAHgC8neXy47UPArcDdSW4G/gP4ha0ZUZI0xsSgV9U/AFnn7qtmO44kaaM8U1SSmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1MTunR5A0tlh8cgDOz1CW8/des22fJ+Jz9CT3JHkVJInz7jtLUkeTPL08PnNWzumJGmSMYdc/hK4etVtR4CHquoi4KHhuiRpB00MelV9HvjmqpuvA44Nl48B1894LknSlDb6R9G3V9ULAMPnt81uJEnSRmz5q1ySHE6ylGRpeXl5q7+dJH3f2mjQv5ZkH8Dw+dR6G1bV0ao6UFUHFhYWNvjtJEmTbDTo9wGHhsuHgHtnM44kaaPGvGzxk8A/Aj+W5GSSm4FbgfcmeRp473BdkrSDJp5YVFXvX+euq2Y8iyRpEzz1X5KaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCYMuiQ1YdAlqQmDLklNGHRJasKgS1ITBl2SmjDoktSEQZekJgy6JDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6QmDLokNWHQJakJgy5JTRh0SWrCoEtSEwZdkpow6JLUhEGXpCY2FfQkVyf5SpJnkhyZ1VCSpOltOOhJdgF/BvwscDHw/iQXz2owSdJ0NvMM/XLgmap6tqr+B7gTuG42Y0mSprWZoJ8P/OcZ108Ot0mSdsDuTTw2a9xWr9koOQwcHq6+kuQrZ9y9F/j6JmY4m83N2nLbVJvPzbqmNFfrcp8Bc7SuGeyvd4x54GaCfhK44Izr+4HnV29UVUeBo2t9gSRLVXVgEzOctbquzXXNn65rc12vtZlDLv8MXJTkwiTnADcC923i60mSNmHDz9Cr6nSS3wD+DtgF3FFVT81sMknSVDZzyIWq+gzwmU18iTUPxTTRdW2ua/50XZvrWiVVr/k7piRpDnnqvyQ1sS1Bn/QWAUluSrKc5PHh41e2Y67NSnJHklNJnlzn/iT542HdX0py2XbPuBEj1vXuJC+dsb9+f7tn3IgkFyR5OMmJJE8luWWNbeZun41c17zuszcm+UKSJ4a1fXiNbX4gyV3DPjueZHH7J53OyHVN38Wq2tIPVv5g+lXgR4FzgCeAi1dtcxPwp1s9yxas7WeAy4An17n/fcBnWXnN/kHg+E7PPKN1vRu4f6fn3MC69gGXDZd/EPi3Nf4tzt0+G7mued1nAc4dLu8BjgMHV23za8DHh8s3Anft9NwzWtfUXdyOZ+ht3yKgqj4PfPN1NrkO+Kta8U/AeUn2bc90GzdiXXOpql6oqseGy98GTvDas5vnbp+NXNdcGvbDK8PVPcPH6j/8XQccGy7fA1yVZK0TH88aI9c1te0I+ti3CPj54Vfce5JcsMb986jz2yP89PDr4meT/PhODzOt4dfyS1l5ZnSmud5nr7MumNN9lmRXkseBU8CDVbXuPquq08BLwFu3d8rpjVgXTNnF7Qj6mLcI+Ftgsap+Evh7vvfTdt6NenuEOfQY8I6qehfwJ8Df7PA8U0lyLvAp4INV9fLqu9d4yFzsswnrmtt9VlXfrapLWDkb/fIkP7Fqk7ncZyPWNXUXtyPoE98ioKq+UVXfGa7+OfBT2zDXdhj19gjzpqpefvXXxVo5F2FPkr07PNYoSfawEr1PVNWn19hkLvfZpHXN8z57VVW9CDwCXL3qrv/fZ0l2Az/EHB0yXG9dG+nidgR94lsErDpGeS0rxwA7uA/4peGVEweBl6rqhZ0earOS/PCrxyiTXM7Kv6Nv7OxUkw0z3w6cqKqPrLPZ3O2zMeua4322kOS84fKbgPcA/7pqs/uAQ8PlG4DP1fBXxbPVmHVtpIubOlN0jFrnLQKS/CGwVFX3Ab+Z5FrgNCs/WW/a6rlmIcknWXn1wN4kJ4E/YOWPG1TVx1k5i/Z9wDPAfwG/vDOTTmfEum4AfjXJaeC/gRvP9v+ABlcAHwC+PBy7BPgQ8CMw1/tszLrmdZ/tA45l5X+o8wbg7qq6f1U/bgf+OskzrPTjxp0bd7Qx65q6i54pKklNeKaoJDVh0CWpCYMuSU0YdElqwqBLUhMGXZKaMOiS1IRBl6Qm/g/a1fqwERYMOQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.bar([1,2,3], df.groupby('Group').mean()['Score'])\n", + "plt.show()" + ] + }, + { + "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", + " \n", + "
ScoreGender
Group
127.51.0
247.00.5
311.01.0
\n", + "
" + ], + "text/plain": [ + " Score Gender\n", + "Group \n", + "1 27.5 1.0\n", + "2 47.0 0.5\n", + "3 11.0 1.0" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Group').agg('mean')" + ] + }, + { + "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", + " \n", + "
ScoreGender
Group
110.6066020.000000
29.8994950.707107
3NaNNaN
\n", + "
" + ], + "text/plain": [ + " Score Gender\n", + "Group \n", + "1 10.606602 0.000000\n", + "2 9.899495 0.707107\n", + "3 NaN NaN" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Group').std()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Group\n", + "1 2\n", + "2 2\n", + "3 1\n", + "Name: Score, dtype: int64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby('Group').count()['Score']" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 4\n", + "0 1\n", + "Name: Gender, dtype: int64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.Gender.value_counts()" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameGroupScoreGender
0Ram1201
1Sam2401
2Hari1351
3Lucky3111
4Sita2540
\n", + "
" + ], + "text/plain": [ + " Name Group Score Gender\n", + "0 Ram 1 20 1\n", + "1 Sam 2 40 1\n", + "2 Hari 1 35 1\n", + "3 Lucky 3 11 1\n", + "4 Sita 2 54 0" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 Ram\n", + "1 Sam\n", + "2 Hari\n", + "3 Lucky\n", + "4 Sita\n" + ] + } + ], + "source": [ + "for index, row in df.iterrows():\n", + " print(index, row['Name'])" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "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", + "
NameGroupScoreClass
0Ram120A
1Sam240A
2Hari135A
3Lucky311B
4Sita254B
\n", + "
" + ], + "text/plain": [ + " Name Group Score Class\n", + "0 Ram 1 20 A\n", + "1 Sam 2 40 A\n", + "2 Hari 1 35 A\n", + "3 Lucky 3 11 B\n", + "4 Sita 2 54 B" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df= pd.DataFrame({'Name':['Ram','Sam','Hari','Lucky','Sita'],\n", + " 'Group':[1,2,1,3,2],'Score': [20,40,35,11,54], 'Class':['A','A','A','B','B']})\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "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", + "
NameScore
ClassGroup
A122
211
B211
311
\n", + "
" + ], + "text/plain": [ + " Name Score\n", + "Class Group \n", + "A 1 2 2\n", + " 2 1 1\n", + "B 2 1 1\n", + " 3 1 1" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1= df.groupby(['Class','Group']).count()\n", + "g1" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + "
Score
ClassGroup
A127.5
240.0
B254.0
311.0
\n", + "
" + ], + "text/plain": [ + " Score\n", + "Class Group \n", + "A 1 27.5\n", + " 2 40.0\n", + "B 2 54.0\n", + " 3 11.0" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.groupby(['Class','Group']).agg('mean')" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameScore
ClassGroup
A122
211
B211
311
\n", + "
" + ], + "text/plain": [ + " Name Score\n", + "Class Group \n", + "A 1 2 2\n", + " 2 1 1\n", + "B 2 1 1\n", + " 3 1 1" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MultiIndex(levels=[['A', 'B'], [1, 2, 3]],\n", + " labels=[[0, 0, 1, 1], [0, 1, 1, 2]],\n", + " names=['Class', 'Group'])" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1.index" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g1.loc[('B',2),'Name']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## fillna()" + ] + }, + { + "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", + "
abc
01.0NaN7.0
1NaNNaN8.0
23.06.0NaN
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.0 NaN 7.0\n", + "1 NaN NaN 8.0\n", + "2 3.0 6.0 NaN\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df= pd.DataFrame({'a':[1,np.nan,3,10],'b':[np.nan,np.nan,6,11],'c':[7,8,np.nan,12]})\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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", + "
abc
01.00.07.0
10.00.08.0
23.06.00.0
310.011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.0 0.0 7.0\n", + "1 0.0 0.0 8.0\n", + "2 3.0 6.0 0.0\n", + "3 10.0 11.0 12.0" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.fillna(0)" + ] + }, + { + "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", + "
abc
01.?7
1.?.?8
236.?
3101112
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1 .? 7\n", + "1 .? .? 8\n", + "2 3 6 .?\n", + "3 10 11 12" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.fillna('.?')" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "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", + "
abc
01.0000008.57.0
14.6666678.58.0
23.0000006.09.0
310.00000011.012.0
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 1.000000 8.5 7.0\n", + "1 4.666667 8.5 8.0\n", + "2 3.000000 6.0 9.0\n", + "3 10.000000 11.0 12.0" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.fillna(df.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1.000000\n", + "1 4.666667\n", + "2 3.000000\n", + "3 10.000000\n", + "Name: a, dtype: float64" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['a'].fillna(df['a'].mean())" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1.0\n", + "1 1.0\n", + "2 3.0\n", + "3 10.0\n", + "Name: a, dtype: float64" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['a'].fillna(method='ffill')\n", + "#bfill/ backfill, ffill/pad" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1.0\n", + "1 3.0\n", + "2 3.0\n", + "3 10.0\n", + "Name: a, dtype: float64" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['a'].fillna(method='bfill')" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "# 10, 1 , 1 , 1" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "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", + "
temp
0low
1low
2medium
3medium
4high
5high
6NaN
\n", + "
" + ], + "text/plain": [ + " temp\n", + "0 low\n", + "1 low\n", + "2 medium\n", + "3 medium\n", + "4 high\n", + "5 high\n", + "6 NaN" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# example\n", + "df2= pd.DataFrame({'temp':['low','low','medium','medium','high','high',np.nan]})\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 low\n", + "1 low\n", + "2 medium\n", + "3 medium\n", + "4 high\n", + "5 high\n", + "6 high\n", + "Name: temp, dtype: object" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2['temp'].fillna(method='ffill')" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 low\n", + "1 low\n", + "2 medium\n", + "3 medium\n", + "4 high\n", + "5 high\n", + "6 NaN\n", + "Name: temp, dtype: object" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2['temp']" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Day 8 Pandas.ipynb b/Day 8 Pandas.ipynb new file mode 100644 index 0000000..b313aa8 --- /dev/null +++ b/Day 8 Pandas.ipynb @@ -0,0 +1,2190 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Concatenation" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "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", + "
col1col2col3
0123
1456
2789
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1= pd.DataFrame({'col1':[1,4,7],'col2':[2,5,8],'col3':[3,6,9]})\n", + "df1" + ] + }, + { + "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", + "
col1col2col3
0111213
1141516
2171819
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 11 12 13\n", + "1 14 15 16\n", + "2 17 18 19" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2= pd.DataFrame({'col1':[11,14,17],'col2':[12,15,18],'col3':[13,16,19]})\n", + "df2" + ] + }, + { + "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", + "
col1col2col3
0212223
1242526
2272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 21 22 23\n", + "1 24 25 26\n", + "2 27 28 29" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3= pd.DataFrame({'col1':[21,24,27],'col2':[22,25,28],'col3':[23,26,29]})\n", + "df3" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2col3
0123
1456
2789
0111213
1141516
2171819
0212223
1242526
2272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "0 11 12 13\n", + "1 14 15 16\n", + "2 17 18 19\n", + "0 21 22 23\n", + "1 24 25 26\n", + "2 27 28 29" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df2,df3])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
col1col2col3
10123
1456
2789
20111213
1141516
2171819
30212223
1242526
2272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "1 0 1 2 3\n", + " 1 4 5 6\n", + " 2 7 8 9\n", + "2 0 11 12 13\n", + " 1 14 15 16\n", + " 2 17 18 19\n", + "3 0 21 22 23\n", + " 1 24 25 26\n", + " 2 27 28 29" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a=pd.concat([df1,df2,df3], keys=[1,2,3])\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MultiIndex(levels=[[1, 2, 3], [0, 1, 2]],\n", + " labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2], [0, 1, 2, 0, 1, 2, 0, 1, 2]])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.index" + ] + }, + { + "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", + "
col1col2col3
10123
1456
2789
20111213
1141516
2171819
30212223
1242526
2272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "1 0 1 2 3\n", + " 1 4 5 6\n", + " 2 7 8 9\n", + "2 0 11 12 13\n", + " 1 14 15 16\n", + " 2 17 18 19\n", + "3 0 21 22 23\n", + " 1 24 25 26\n", + " 2 27 28 29" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df2,df3], keys=[1,2,3,4])" + ] + }, + { + "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", + "
col1col2col3
0123
1456
2789
3111213
4141516
5171819
6212223
7242526
8272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "3 11 12 13\n", + "4 14 15 16\n", + "5 17 18 19\n", + "6 21 22 23\n", + "7 24 25 26\n", + "8 27 28 29" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df2,df3]).reset_index(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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", + "
col1col2col3
0123
1456
2789
3111213
4141516
5171819
6212223
7242526
8272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "3 11 12 13\n", + "4 14 15 16\n", + "5 17 18 19\n", + "6 21 22 23\n", + "7 24 25 26\n", + "8 27 28 29" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df2,df3], ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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", + "
col1col2col3
0100200300
4400500600
5700800900
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 100 200 300\n", + "4 400 500 600\n", + "5 700 800 900" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# prevent the result from including duplicate index\n", + "df10= pd.DataFrame({'col1':[100,400,700],'col2':[200,500,800],'col3':[300,600,900]}, index=[0,4,5])\n", + "df10" + ] + }, + { + "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", + "
col1col2col3
0123
1456
2789
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "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", + "
col1col2col3
0123
1456
2789
0100200300
4400500600
5700800900
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "0 100 200 300\n", + "4 400 500 600\n", + "5 700 800 900" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df10])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Indexes have overlapping values: Int64Index([0], dtype='int64')", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdf1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdf10\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mverify_integrity\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py\u001b[0m in \u001b[0;36mconcat\u001b[1;34m(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)\u001b[0m\n\u001b[0;32m 223\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mkeys\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlevels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlevels\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnames\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnames\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 224\u001b[0m \u001b[0mverify_integrity\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mverify_integrity\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 225\u001b[1;33m copy=copy, sort=sort)\n\u001b[0m\u001b[0;32m 226\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_result\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 227\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, objs, axis, join, join_axes, keys, levels, names, ignore_index, verify_integrity, copy, sort)\u001b[0m\n\u001b[0;32m 376\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 377\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 378\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnew_axes\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_new_axes\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 379\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 380\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mget_result\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py\u001b[0m in \u001b[0;36m_get_new_axes\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 456\u001b[0m \u001b[0mnew_axes\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 457\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 458\u001b[1;33m \u001b[0mnew_axes\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_concat_axis\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 459\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mnew_axes\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 460\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py\u001b[0m in \u001b[0;36m_get_concat_axis\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 514\u001b[0m self.levels, self.names)\n\u001b[0;32m 515\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 516\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_check_integrity\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mconcat_axis\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 517\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 518\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mconcat_axis\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\reshape\\concat.py\u001b[0m in \u001b[0;36m_maybe_check_integrity\u001b[1;34m(self, concat_index)\u001b[0m\n\u001b[0;32m 523\u001b[0m \u001b[0moverlap\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconcat_index\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mconcat_index\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mduplicated\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0munique\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 524\u001b[0m raise ValueError('Indexes have overlapping values: '\n\u001b[1;32m--> 525\u001b[1;33m '{overlap!s}'.format(overlap=overlap))\n\u001b[0m\u001b[0;32m 526\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 527\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: Indexes have overlapping values: Int64Index([0], dtype='int64')" + ] + } + ], + "source": [ + "pd.concat([df1,df10], verify_integrity= True)" + ] + }, + { + "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", + "
col1col2col3col1col2col3col1col2col3
0123111213212223
1456141516242526
2789171819272829
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col1 col2 col3 col1 col2 col3\n", + "0 1 2 3 11 12 13 21 22 23\n", + "1 4 5 6 14 15 16 24 25 26\n", + "2 7 8 9 17 18 19 27 28 29" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xyz=pd.concat([df1,df2,df3], axis=1)\n", + "xyz" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['col1', 'col2', 'col3', 'col1', 'col2', 'col3', 'col1', 'col2', 'col3'], dtype='object')" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xyz.columns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Merging\n", + "like in SQL" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + "
col1col2col3
011213
141516
271819
3102025
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 12 13\n", + "1 4 15 16\n", + "2 7 18 19\n", + "3 10 20 25" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4= pd.DataFrame({'col1':[1,4,7,10],'col2':[12,15,18,20], 'col3':[13,16,19,25]})\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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", + "
col1col2col3
0123
1456
2789
3112126
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "3 11 21 26" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df5= pd.DataFrame({'col1':[1,4,7,11],'col2':[2,5,8,21], 'col3':[3,6,9,26]})\n", + "df5" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2_xcol3_xcol2_ycol3_y
01231213
14561516
27891819
\n", + "
" + ], + "text/plain": [ + " col1 col2_x col3_x col2_y col3_y\n", + "0 1 2 3 12 13\n", + "1 4 5 6 15 16\n", + "2 7 8 9 18 19" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5, df4, on='col1', how='inner')" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2_xcol3_xcol2_ycol3_y
01231213
14561516
27891819
\n", + "
" + ], + "text/plain": [ + " col1 col2_x col3_x col2_y col3_y\n", + "0 1 2 3 12 13\n", + "1 4 5 6 15 16\n", + "2 7 8 9 18 19" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df5.merge(df4, on='col1')" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2_df5col3_df5col2_df4col3_df4
01231213
14561516
27891819
\n", + "
" + ], + "text/plain": [ + " col1 col2_df5 col3_df5 col2_df4 col3_df4\n", + "0 1 2 3 12 13\n", + "1 4 5 6 15 16\n", + "2 7 8 9 18 19" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5,df4, on='col1', suffixes=['_df5','_df4'])" + ] + }, + { + "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", + "
col1col2col3_xcol3_y
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [col1, col2, col3_x, col3_y]\n", + "Index: []" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5,df4, on=['col1','col2'])" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2_xcol3_xcol2_ycol3_y
012.03.012.013.0
145.06.015.016.0
278.09.018.019.0
31121.026.0NaNNaN
410NaNNaN20.025.0
\n", + "
" + ], + "text/plain": [ + " col1 col2_x col3_x col2_y col3_y\n", + "0 1 2.0 3.0 12.0 13.0\n", + "1 4 5.0 6.0 15.0 16.0\n", + "2 7 8.0 9.0 18.0 19.0\n", + "3 11 21.0 26.0 NaN NaN\n", + "4 10 NaN NaN 20.0 25.0" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5, df4, on='col1', how='outer')" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2_xcol3_xcol2_ycol3_y
012312.013.0
145615.016.0
278918.019.0
3112126NaNNaN
\n", + "
" + ], + "text/plain": [ + " col1 col2_x col3_x col2_y col3_y\n", + "0 1 2 3 12.0 13.0\n", + "1 4 5 6 15.0 16.0\n", + "2 7 8 9 18.0 19.0\n", + "3 11 21 26 NaN NaN" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5, df4, how='left', on='col1')" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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", + "
col1col2_xcol3_xcol2_ycol3_y
012.03.01213
145.06.01516
278.09.01819
310NaNNaN2025
\n", + "
" + ], + "text/plain": [ + " col1 col2_x col3_x col2_y col3_y\n", + "0 1 2.0 3.0 12 13\n", + "1 4 5.0 6.0 15 16\n", + "2 7 8.0 9.0 18 19\n", + "3 10 NaN NaN 20 25" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df5, df4, how='right', on='col1')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + "
col1col2col3
011213
141516
271819
3102025
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3\n", + "0 1 12 13\n", + "1 4 15 16\n", + "2 7 18 19\n", + "3 10 20 25" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "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", + "
ABC
0123
1456
2789
3112126
\n", + "
" + ], + "text/plain": [ + " A B C\n", + "0 1 2 3\n", + "1 4 5 6\n", + "2 7 8 9\n", + "3 11 21 26" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df6= pd.DataFrame({'A':[1,4,7,11],'B':[2,5,8,21],'C':[3,6,9,26]})\n", + "df6" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
col1col2col3ABC
011213123
141516456
271819789
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 A B C\n", + "0 1 12 13 1 2 3\n", + "1 4 15 16 4 5 6\n", + "2 7 18 19 7 8 9" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df4, df6, left_on='col1', right_on='A')" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Day 9 Pandas.ipynb b/Day 9 Pandas.ipynb new file mode 100644 index 0000000..fbd5e4c --- /dev/null +++ b/Day 9 Pandas.ipynb @@ -0,0 +1,2015 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Joining" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "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", + "
col1col2
012
145
278
\n", + "
" + ], + "text/plain": [ + " col1 col2\n", + "0 1 2\n", + "1 4 5\n", + "2 7 8" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1= pd.DataFrame({'col1':[1,4,7],'col2':[2,5,8]})\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
col3col4
012
145
379
\n", + "
" + ], + "text/plain": [ + " col3 col4\n", + "0 1 2\n", + "1 4 5\n", + "3 7 9" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2= pd.DataFrame({'col3':[1,4,7],'col4':[2,5,9]}, index=[0,1,3])\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
col1col2col3col4
0121.02.0
1454.05.0
278NaNNaN
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "0 1 2 1.0 2.0\n", + "1 4 5 4.0 5.0\n", + "2 7 8 NaN NaN" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.join(df2, how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
col1col2col3col4
01.02.012
14.05.045
3NaNNaN79
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "0 1.0 2.0 1 2\n", + "1 4.0 5.0 4 5\n", + "3 NaN NaN 7 9" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3=df1.join(df2, how='right')\n", + "df3" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.float64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df3.col1.values[2])" + ] + }, + { + "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", + "
col1col2col3col4
01.02.01.02.0
14.05.04.05.0
27.08.0NaNNaN
3NaNNaN7.09.0
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "0 1.0 2.0 1.0 2.0\n", + "1 4.0 5.0 4.0 5.0\n", + "2 7.0 8.0 NaN NaN\n", + "3 NaN NaN 7.0 9.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.join(df2, how='outer')" + ] + }, + { + "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", + "
col1col2col3col4
01212
14545
\n", + "
" + ], + "text/plain": [ + " col1 col2 col3 col4\n", + "0 1 2 1 2\n", + "1 4 5 4 5" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.join(df2, how='inner')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Input and Output using Pandas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# csv files" + ] + }, + { + "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", + "
abcd
00123
14567
2891011
312131415
\n", + "
" + ], + "text/plain": [ + " a b c d\n", + "0 0 1 2 3\n", + "1 4 5 6 7\n", + "2 8 9 10 11\n", + "3 12 13 14 15" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df= pd.read_csv('example')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_csv('H:\\\\example.csv', index=False)" + ] + }, + { + "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", + "
Namerollclass
0Subham110
1Sarthak29
2Khsitiz310
\n", + "
" + ], + "text/plain": [ + " Name roll class\n", + "0 Subham 1 10\n", + "1 Sarthak 2 9\n", + "2 Khsitiz 3 10" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv('example2.tsv', sep='\\t')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Excel" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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", + "
abcd
00123
14567
2891011
312131415
\n", + "
" + ], + "text/plain": [ + " a b c d\n", + "0 0 1 2 3\n", + "1 4 5 6 7\n", + "2 8 9 10 11\n", + "3 12 13 14 15" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_excel('Excel_Sample.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.to_excel('......',sheet_name='')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# HTML" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "df2= pd.read_html('https://en.wikipedia.org/wiki/Coronavirus_disease_2019', header=0)" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Coronavirus disease 2019(COVID-19)Unnamed: 1
0Other namesCoronavirus Corona COVID 2019-nCoV acute respi...
1NaNNaN
2False-color transmission electron microscope i...NaN
3Pronunciation/kəˈroʊnəˌvaɪrəs dɪˈziːz//ˌkoʊvɪdnaɪnˈtiːn, ˌk...
4SpecialtyInfectious disease
5SymptomsFever, cough, fatigue, shortness of breath, lo...
6ComplicationsPneumonia, viral sepsis, acute respiratory dis...
7Usual onset2–14 days (typically 5) from infection
8CausesSevere acute respiratory syndrome coronavirus ...
9Diagnostic methodrRT-PCR testing, CT scan
10PreventionHand washing, face coverings, quarantine, soci...
11TreatmentSymptomatic and supportive
12Frequency26,065,382[8] confirmed cases
13Deaths863,826 ([8]
\n", + "
" + ], + "text/plain": [ + " Coronavirus disease 2019(COVID-19) \\\n", + "0 Other names \n", + "1 NaN \n", + "2 False-color transmission electron microscope i... \n", + "3 Pronunciation \n", + "4 Specialty \n", + "5 Symptoms \n", + "6 Complications \n", + "7 Usual onset \n", + "8 Causes \n", + "9 Diagnostic method \n", + "10 Prevention \n", + "11 Treatment \n", + "12 Frequency \n", + "13 Deaths \n", + "\n", + " Unnamed: 1 \n", + "0 Coronavirus Corona COVID 2019-nCoV acute respi... \n", + "1 NaN \n", + "2 NaN \n", + "3 /kəˈroʊnəˌvaɪrəs dɪˈziːz//ˌkoʊvɪdnaɪnˈtiːn, ˌk... \n", + "4 Infectious disease \n", + "5 Fever, cough, fatigue, shortness of breath, lo... \n", + "6 Pneumonia, viral sepsis, acute respiratory dis... \n", + "7 2–14 days (typically 5) from infection \n", + "8 Severe acute respiratory syndrome coronavirus ... \n", + "9 rRT-PCR testing, CT scan \n", + "10 Hand washing, face coverings, quarantine, soci... \n", + "11 Symptomatic and supportive \n", + "12 26,065,382[8] confirmed cases \n", + "13 863,826 ([8] " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Part of a series on the
0COVID-19 pandemic
1SARS-CoV-2 (virus) COVID-19 (disease)
2Timeline 2019 December 2020 January February r...
3Locations By continent Africa Antarctica Asia ...
4International response United Nations National...
5Medical response Disease testing Vaccine resea...
6Impact Socio-economic Crime Death rates by cou...
7COVID-19 Portal
8vte
\n", + "
" + ], + "text/plain": [ + " Part of a series on the\n", + "0 COVID-19 pandemic\n", + "1 SARS-CoV-2 (virus) COVID-19 (disease)\n", + "2 Timeline 2019 December 2020 January February r...\n", + "3 Locations By continent Africa Antarctica Asia ...\n", + "4 International response United Nations National...\n", + "5 Medical response Disease testing Vaccine resea...\n", + "6 Impact Socio-economic Crime Death rates by cou...\n", + "7 COVID-19 Portal\n", + "8 vte" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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", + "
SymptomRange
0Fever83–99%
1Cough59–82%
2Loss of appetite40–84%
3Fatigue44–70%
4Shortness of breath31–40%
5Coughing up sputum28–33%
6Muscle aches and pains11–35%
\n", + "
" + ], + "text/plain": [ + " Symptom Range\n", + "0 Fever 83–99%\n", + "1 Cough 59–82%\n", + "2 Loss of appetite 40–84%\n", + "3 Fatigue 44–70%\n", + "4 Shortness of breath 31–40%\n", + "5 Coughing up sputum 28–33%\n", + "6 Muscle aches and pains 11–35%" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0AgeUnnamed: 2Unnamed: 3Unnamed: 4Unnamed: 5Unnamed: 6Unnamed: 7Unnamed: 8Unnamed: 9Unnamed: 10
0Country0–910–1920–2930–3940–4950–5960–6970–7980–8990+
1Argentina as of 7 May[164]0.00.00.10.41.33.612.918.828.4NaN
2Australia as of 4 June[165]0.00.00.00.00.10.21.14.118.140.8
3Canada as of 3 June[166]0.00.10.711.230.7NaNNaNNaNNaNNaN
4Alberta as of 3 June[167]0.00.00.10.10.10.21.911.930.8NaN
5Br. Columbia as of 2 June[168]0.00.00.00.00.50.84.612.333.833.6
6Ontario as of 3 June[169]0.00.00.10.20.51.55.617.726.033.3
7Quebec as of 2 June[170]0.00.10.10.21.16.121.430.436.1NaN
8Chile as of 31 May[171][172]0.10.30.72.37.715.6NaNNaNNaNNaN
9China as of 11 February[173]0.00.20.20.20.41.33.68.014.8NaN
10Colombia as of 3 June[174]0.30.00.20.51.63.49.418.125.635.1
11Denmark as of 4 June[175]0.24.116.528.148.2NaNNaNNaNNaNNaN
12Finland as of 4 June[176]0.00.0<0.4<0.4<0.50.83.818.142.3NaN
13Germany as of 5 June[177]0.00.00.11.919.731.0NaNNaNNaNNaN
14Bavaria as of 5 June[178]0.00.00.10.10.20.95.415.828.035.8
15Israel as of 3 May[179]0.00.00.00.90.93.19.722.930.831.3
16Italy as of 3 June[180]0.30.00.10.30.92.710.625.932.429.9
17Japan as of 7 May[181]0.00.00.00.10.30.62.56.814.8NaN
18Mexico as of 3 June[182]3.30.61.22.97.515.025.333.740.340.6
19Netherlands as of 3 June[183]0.00.20.10.30.51.78.125.633.334.5
20Norway as of 4 June[184]0.00.00.00.00.30.42.29.022.757.0
21Philippines as of 4 June[185]1.60.90.50.82.45.513.220.931.5NaN
22Portugal as of 3 June[186]0.00.00.00.00.31.33.610.521.2NaN
23South Africa as of 28 May[187]0.30.10.10.41.13.89.215.012.3NaN
24South Korea as of 17 July[188]0.00.00.00.10.20.62.39.525.2NaN
25Spain as of 29 May[189]0.30.20.20.30.61.45.014.320.821.7
26Sweden as of 5 June[190]0.50.00.20.20.61.76.623.435.640.3
27Switzerland as of 4 June[191]0.60.00.00.10.10.63.411.628.2NaN
28United StatesNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
29Colorado as of 3 June[192]0.20.20.20.20.81.96.218.539.0NaN
30Connecticut as of 3 June[193]0.20.10.10.30.71.87.018.031.2NaN
31Georgia as of 3 June[194]0.00.10.50.92.06.113.222.0NaNNaN
32Idaho as of 3 June[195]0.00.00.00.00.00.43.18.931.4NaN
33Indiana as of 3 June[196]0.10.10.20.61.87.317.130.2NaNNaN
34Kentucky as of 20 May[197]0.00.00.00.20.51.95.914.229.1NaN
35Maryland as of 20 May[198]0.00.10.20.30.71.96.114.628.8NaN
36Massachusetts as of 20 May[199]0.00.00.10.10.41.55.216.828.9NaN
37Minnesota as of 13 May[200]0.00.00.00.10.31.65.426.9NaNNaN
38Mississippi as of 19 May[201]0.00.10.50.92.18.116.119.427.2NaN
39Missouri as of 19 May[202]0.00.00.10.20.82.26.314.322.5NaN
40Nevada as of 20 May[203]0.00.30.30.41.72.67.722.3NaNNaN
41N. Hampshire as of 12 May[204]0.00.00.40.01.20.02.212.021.2NaN
42Oregon as of 12 May[205]0.00.00.00.00.50.85.612.128.9NaN
43Texas as of 20 May[206]0.00.50.40.30.82.15.510.130.6NaN
44Virginia as of 19 May[207]0.00.00.00.10.41.04.412.924.9NaN
45Washington as of 10 May[208]0.00.21.39.831.2NaNNaNNaNNaNNaN
46Wisconsin as of 20 May[209]0.00.00.20.20.62.05.014.719.930.4
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 Age Unnamed: 2 Unnamed: 3 Unnamed: 4 \\\n", + "0 Country 0–9 10–19 20–29 30–39 \n", + "1 Argentina as of 7 May[164] 0.0 0.0 0.1 0.4 \n", + "2 Australia as of 4 June[165] 0.0 0.0 0.0 0.0 \n", + "3 Canada as of 3 June[166] 0.0 0.1 0.7 11.2 \n", + "4 Alberta as of 3 June[167] 0.0 0.0 0.1 0.1 \n", + "5 Br. Columbia as of 2 June[168] 0.0 0.0 0.0 0.0 \n", + "6 Ontario as of 3 June[169] 0.0 0.0 0.1 0.2 \n", + "7 Quebec as of 2 June[170] 0.0 0.1 0.1 0.2 \n", + "8 Chile as of 31 May[171][172] 0.1 0.3 0.7 2.3 \n", + "9 China as of 11 February[173] 0.0 0.2 0.2 0.2 \n", + "10 Colombia as of 3 June[174] 0.3 0.0 0.2 0.5 \n", + "11 Denmark as of 4 June[175] 0.2 4.1 16.5 28.1 \n", + "12 Finland as of 4 June[176] 0.0 0.0 <0.4 <0.4 \n", + "13 Germany as of 5 June[177] 0.0 0.0 0.1 1.9 \n", + "14 Bavaria as of 5 June[178] 0.0 0.0 0.1 0.1 \n", + "15 Israel as of 3 May[179] 0.0 0.0 0.0 0.9 \n", + "16 Italy as of 3 June[180] 0.3 0.0 0.1 0.3 \n", + "17 Japan as of 7 May[181] 0.0 0.0 0.0 0.1 \n", + "18 Mexico as of 3 June[182] 3.3 0.6 1.2 2.9 \n", + "19 Netherlands as of 3 June[183] 0.0 0.2 0.1 0.3 \n", + "20 Norway as of 4 June[184] 0.0 0.0 0.0 0.0 \n", + "21 Philippines as of 4 June[185] 1.6 0.9 0.5 0.8 \n", + "22 Portugal as of 3 June[186] 0.0 0.0 0.0 0.0 \n", + "23 South Africa as of 28 May[187] 0.3 0.1 0.1 0.4 \n", + "24 South Korea as of 17 July[188] 0.0 0.0 0.0 0.1 \n", + "25 Spain as of 29 May[189] 0.3 0.2 0.2 0.3 \n", + "26 Sweden as of 5 June[190] 0.5 0.0 0.2 0.2 \n", + "27 Switzerland as of 4 June[191] 0.6 0.0 0.0 0.1 \n", + "28 United States NaN NaN NaN NaN \n", + "29 Colorado as of 3 June[192] 0.2 0.2 0.2 0.2 \n", + "30 Connecticut as of 3 June[193] 0.2 0.1 0.1 0.3 \n", + "31 Georgia as of 3 June[194] 0.0 0.1 0.5 0.9 \n", + "32 Idaho as of 3 June[195] 0.0 0.0 0.0 0.0 \n", + "33 Indiana as of 3 June[196] 0.1 0.1 0.2 0.6 \n", + "34 Kentucky as of 20 May[197] 0.0 0.0 0.0 0.2 \n", + "35 Maryland as of 20 May[198] 0.0 0.1 0.2 0.3 \n", + "36 Massachusetts as of 20 May[199] 0.0 0.0 0.1 0.1 \n", + "37 Minnesota as of 13 May[200] 0.0 0.0 0.0 0.1 \n", + "38 Mississippi as of 19 May[201] 0.0 0.1 0.5 0.9 \n", + "39 Missouri as of 19 May[202] 0.0 0.0 0.1 0.2 \n", + "40 Nevada as of 20 May[203] 0.0 0.3 0.3 0.4 \n", + "41 N. Hampshire as of 12 May[204] 0.0 0.0 0.4 0.0 \n", + "42 Oregon as of 12 May[205] 0.0 0.0 0.0 0.0 \n", + "43 Texas as of 20 May[206] 0.0 0.5 0.4 0.3 \n", + "44 Virginia as of 19 May[207] 0.0 0.0 0.0 0.1 \n", + "45 Washington as of 10 May[208] 0.0 0.2 1.3 9.8 \n", + "46 Wisconsin as of 20 May[209] 0.0 0.0 0.2 0.2 \n", + "\n", + " Unnamed: 5 Unnamed: 6 Unnamed: 7 Unnamed: 8 Unnamed: 9 Unnamed: 10 \n", + "0 40–49 50–59 60–69 70–79 80–89 90+ \n", + "1 1.3 3.6 12.9 18.8 28.4 NaN \n", + "2 0.1 0.2 1.1 4.1 18.1 40.8 \n", + "3 30.7 NaN NaN NaN NaN NaN \n", + "4 0.1 0.2 1.9 11.9 30.8 NaN \n", + "5 0.5 0.8 4.6 12.3 33.8 33.6 \n", + "6 0.5 1.5 5.6 17.7 26.0 33.3 \n", + "7 1.1 6.1 21.4 30.4 36.1 NaN \n", + "8 7.7 15.6 NaN NaN NaN NaN \n", + "9 0.4 1.3 3.6 8.0 14.8 NaN \n", + "10 1.6 3.4 9.4 18.1 25.6 35.1 \n", + "11 48.2 NaN NaN NaN NaN NaN \n", + "12 <0.5 0.8 3.8 18.1 42.3 NaN \n", + "13 19.7 31.0 NaN NaN NaN NaN \n", + "14 0.2 0.9 5.4 15.8 28.0 35.8 \n", + "15 0.9 3.1 9.7 22.9 30.8 31.3 \n", + "16 0.9 2.7 10.6 25.9 32.4 29.9 \n", + "17 0.3 0.6 2.5 6.8 14.8 NaN \n", + "18 7.5 15.0 25.3 33.7 40.3 40.6 \n", + "19 0.5 1.7 8.1 25.6 33.3 34.5 \n", + "20 0.3 0.4 2.2 9.0 22.7 57.0 \n", + "21 2.4 5.5 13.2 20.9 31.5 NaN \n", + "22 0.3 1.3 3.6 10.5 21.2 NaN \n", + "23 1.1 3.8 9.2 15.0 12.3 NaN \n", + "24 0.2 0.6 2.3 9.5 25.2 NaN \n", + "25 0.6 1.4 5.0 14.3 20.8 21.7 \n", + "26 0.6 1.7 6.6 23.4 35.6 40.3 \n", + "27 0.1 0.6 3.4 11.6 28.2 NaN \n", + "28 NaN NaN NaN NaN NaN NaN \n", + "29 0.8 1.9 6.2 18.5 39.0 NaN \n", + "30 0.7 1.8 7.0 18.0 31.2 NaN \n", + "31 2.0 6.1 13.2 22.0 NaN NaN \n", + "32 0.0 0.4 3.1 8.9 31.4 NaN \n", + "33 1.8 7.3 17.1 30.2 NaN NaN \n", + "34 0.5 1.9 5.9 14.2 29.1 NaN \n", + "35 0.7 1.9 6.1 14.6 28.8 NaN \n", + "36 0.4 1.5 5.2 16.8 28.9 NaN \n", + "37 0.3 1.6 5.4 26.9 NaN NaN \n", + "38 2.1 8.1 16.1 19.4 27.2 NaN \n", + "39 0.8 2.2 6.3 14.3 22.5 NaN \n", + "40 1.7 2.6 7.7 22.3 NaN NaN \n", + "41 1.2 0.0 2.2 12.0 21.2 NaN \n", + "42 0.5 0.8 5.6 12.1 28.9 NaN \n", + "43 0.8 2.1 5.5 10.1 30.6 NaN \n", + "44 0.4 1.0 4.4 12.9 24.9 NaN \n", + "45 31.2 NaN NaN NaN NaN NaN \n", + "46 0.6 2.0 5.0 14.7 19.9 30.4 " + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Coronavirus Corona COVID 2019-nCoV acute respi...\n", + "1 NaN\n", + "2 NaN\n", + "3 /kəˈroʊnəˌvaɪrəs dɪˈziːz//ˌkoʊvɪdnaɪnˈtiːn, ˌk...\n", + "4 Infectious disease\n", + "5 Fever, cough, fatigue, shortness of breath, lo...\n", + "6 Pneumonia, viral sepsis, acute respiratory dis...\n", + "7 2–14 days (typically 5) from infection\n", + "8 Severe acute respiratory syndrome coronavirus ...\n", + "9 rRT-PCR testing, CT scan\n", + "10 Hand washing, face coverings, quarantine, soci...\n", + "11 Symptomatic and supportive\n", + "12 26,065,382[8] confirmed cases\n", + "13 863,826 ([8]\n", + "Name: Unnamed: 1, dtype: object" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[0]['Unnamed: 1']" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Coronavirus Corona COVID 2019-nCoV acute respi...\n", + "1 nan\n", + "2 nan\n", + "3 /kəˈroʊnəˌvaɪrəs dɪˈziːz//ˌkoʊvɪdnaɪnˈtiːn, ˌk...\n", + "4 Infectious disease\n", + "5 Fever, cough, fatigue, shortness of breath, lo...\n", + "6 Pneumonia, viral sepsis, acute respiratory dis...\n", + "7 2–14 days (typically 5) from infection\n", + "8 Severe acute respiratory syndrome coronavirus ...\n", + "9 rRT-PCR testing, CT scan\n", + "10 Hand washing, face coverings, quarantine, soci...\n", + "11 Symptomatic and supportive\n", + "12 26,065,382 confirmed cases\n", + "13 863,826 (\n", + "Name: Unnamed: 1, dtype: object" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2[0]['Unnamed: 1'].apply(lambda x: re.sub('\\[\\d\\]', '', str(x)))" + ] + }, + { + "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.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}