Skip to content

Instantly share code, notes, and snippets.

@ccomte
Created May 20, 2019 11:37
Show Gist options
  • Save ccomte/41b78e562552db683b1d855629afc9e0 to your computer and use it in GitHub Desktop.
Save ccomte/41b78e562552db683b1d855629afc9e0 to your computer and use it in GitHub Desktop.
Manipulating and analysing data with pandas
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Manipulating and analysing data with pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook contains the examples showed during the session [Manipulating and analysing data with pandas](https://www.lincs.fr/events/manipulating-and-analyzing-data-with-pandas/) of the [Python Academy](https://www.lincs.fr/research/working-groups/python-academy/) working group at [LINCS](https://www.lincs.fr). The slides of the presentation are available [here](https://www.lincs.fr/wp-content/uploads/2019/05/pandas.pdf)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.854184Z",
"start_time": "2019-05-20T11:19:47.318740Z"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"## NumPy"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.867872Z",
"start_time": "2019-05-20T11:19:47.857768Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.array([[3., 0.], [20., 230.], [21., 275.]])\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.880504Z",
"start_time": "2019-05-20T11:19:47.870799Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"21.0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[2,0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.887766Z",
"start_time": "2019-05-20T11:19:47.882836Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.]])"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[:2, :]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.897828Z",
"start_time": "2019-05-20T11:19:47.889722Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.]])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = a[:2, :]\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.906623Z",
"start_time": "2019-05-20T11:19:47.899513Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[0,0] = 0.\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.914063Z",
"start_time": "2019-05-20T11:19:47.908855Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.array([[3., 0.], [20., 230.], [21., 275.]])\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.925159Z",
"start_time": "2019-05-20T11:19:47.917548Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"(3, 2)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.936086Z",
"start_time": "2019-05-20T11:19:47.928536Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.944769Z",
"start_time": "2019-05-20T11:19:47.938364Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"8"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.itemsize"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.953083Z",
"start_time": "2019-05-20T11:19:47.947486Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0., 20.],\n",
" [230., 21., 275.]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = a.reshape(2,3)\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.963857Z",
"start_time": "2019-05-20T11:19:47.954665Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.974137Z",
"start_time": "2019-05-20T11:19:47.965965Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0., 20.],\n",
" [230., 21., 275.]])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.resize(2,3)\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.985749Z",
"start_time": "2019-05-20T11:19:47.976552Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.resize(3,2)\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:47.991043Z",
"start_time": "2019-05-20T11:19:47.987680Z"
},
"hidden": true
},
"outputs": [],
"source": [
"b = np.resize(a, (2,3))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.001918Z",
"start_time": "2019-05-20T11:19:47.993555Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3., 0.],\n",
" [ 20., 230.],\n",
" [ 21., 275.]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b[0,0] = 0\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.012783Z",
"start_time": "2019-05-20T11:19:48.004136Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"549.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.sum()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.021546Z",
"start_time": "2019-05-20T11:19:48.015098Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 44., 505.])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.sum(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.028708Z",
"start_time": "2019-05-20T11:19:48.023791Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"275.0"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.max()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.039997Z",
"start_time": "2019-05-20T11:19:48.030994Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 21., 275.])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.max(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.050717Z",
"start_time": "2019-05-20T11:19:48.041747Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([( 3, 0.), (20, 230.), (21, 275.)],\n",
" dtype=[('Age', '<i8'), ('Weight', '<f8')])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.array([(3., 0.), (20., 230.), (21., 275.)],\n",
" dtype=np.dtype([('Age', int), ('Weight', float)]))\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.059135Z",
"start_time": "2019-05-20T11:19:48.052661Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3, 20, 21])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a['Age']"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.069844Z",
"start_time": "2019-05-20T11:19:48.064548Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0., 230., 275.])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a['Weight']"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.080500Z",
"start_time": "2019-05-20T11:19:48.075102Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"(3, 0.)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"## Data structures in pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Series"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.091504Z",
"start_time": "2019-05-20T11:19:48.082662Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3\n",
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series([3, 20, 21],\n",
" index=['Bei Bei', 'Mei Xiang', 'Tian Tian'],\n",
" name='Age')\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.100222Z",
"start_time": "2019-05-20T11:19:48.093809Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"<PandasArray>\n",
"[3, 20, 21]\n",
"Length: 3, dtype: int64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.array"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.107041Z",
"start_time": "2019-05-20T11:19:48.101880Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int64')"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.dtype"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.117096Z",
"start_time": "2019-05-20T11:19:48.108426Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"'Age'"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.name"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.128566Z",
"start_time": "2019-05-20T11:19:48.119470Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Bei Bei', 'Mei Xiang', 'Tian Tian'], dtype='object')"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.index"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.137381Z",
"start_time": "2019-05-20T11:19:48.131055Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s['Mei Xiang']"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.144055Z",
"start_time": "2019-05-20T11:19:48.139791Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"20"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[1]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.154477Z",
"start_time": "2019-05-20T11:19:48.145841Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s['Mei Xiang':'Tian Tian']"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.165256Z",
"start_time": "2019-05-20T11:19:48.156239Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[1:3]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.175884Z",
"start_time": "2019-05-20T11:19:48.167785Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s[1:]"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.183993Z",
"start_time": "2019-05-20T11:19:48.178238Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = s['Mei Xiang':'Tian Tian']\n",
"t"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.192775Z",
"start_time": "2019-05-20T11:19:48.185491Z"
},
"hidden": true
},
"outputs": [],
"source": [
"t['Tian Tian'] = 22"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.204706Z",
"start_time": "2019-05-20T11:19:48.194807Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3\n",
"Mei Xiang 20\n",
"Tian Tian 22\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.213850Z",
"start_time": "2019-05-20T11:19:48.206406Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3\n",
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series([3, 20, 21],\n",
" index=['Bei Bei', 'Mei Xiang', 'Tian Tian'],\n",
" name='Age')\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.221728Z",
"start_time": "2019-05-20T11:19:48.215724Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Mei Xiang 230.0\n",
"Tian Tian 275.0\n",
"Name: Weight, dtype: float64"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = pd.Series([230., 275.],\n",
" index=['Mei Xiang', 'Tian Tian'],\n",
" name='Weight')\n",
"u"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.233000Z",
"start_time": "2019-05-20T11:19:48.223337Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei NaN\n",
"Mei Xiang 250.0\n",
"Tian Tian 296.0\n",
"dtype: float64"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.add(u)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.246104Z",
"start_time": "2019-05-20T11:19:48.234552Z"
},
"hidden": true,
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3.0\n",
"Mei Xiang 250.0\n",
"Tian Tian 296.0\n",
"dtype: float64"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.add(u, fill_value=0)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.262026Z",
"start_time": "2019-05-20T11:19:48.248305Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Age</th>\n",
" <th>Weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Bei Bei</th>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mei Xiang</th>\n",
" <td>20</td>\n",
" <td>230.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tian Tian</th>\n",
" <td>21</td>\n",
" <td>275.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Age Weight\n",
"Bei Bei 3 NaN\n",
"Mei Xiang 20 230.0\n",
"Tian Tian 21 275.0"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({'Age': [3, 20, 21],\n",
" 'Weight': [np.nan, 230., 275.]},\n",
" index=['Bei Bei', 'Mei Xiang', 'Tian Tian'])\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.272166Z",
"start_time": "2019-05-20T11:19:48.264478Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Age int64\n",
"Weight float64\n",
"dtype: object"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.281907Z",
"start_time": "2019-05-20T11:19:48.274577Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"(3, 2)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.292929Z",
"start_time": "2019-05-20T11:19:48.284143Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Age', 'Weight'], dtype='object')"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.301831Z",
"start_time": "2019-05-20T11:19:48.295306Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Bei Bei', 'Mei Xiang', 'Tian Tian'], dtype='object')"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.index"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.310085Z",
"start_time": "2019-05-20T11:19:48.304929Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.size"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.321746Z",
"start_time": "2019-05-20T11:19:48.312699Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3\n",
"Mei Xiang 20\n",
"Tian Tian 21\n",
"Name: Age, dtype: int64"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Age']"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.336780Z",
"start_time": "2019-05-20T11:19:48.323760Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Age</th>\n",
" <th>Weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Mei Xiang</th>\n",
" <td>20</td>\n",
" <td>230.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tian Tian</th>\n",
" <td>21</td>\n",
" <td>275.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Age Weight\n",
"Mei Xiang 20 230.0\n",
"Tian Tian 21 275.0"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Mei Xiang':'Tian Tian']"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.344150Z",
"start_time": "2019-05-20T11:19:48.338681Z"
},
"hidden": true
},
"outputs": [],
"source": [
"# df['Mei Xiang']"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.354612Z",
"start_time": "2019-05-20T11:19:48.345825Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Age 20.0\n",
"Weight 230.0\n",
"Name: Mei Xiang, dtype: float64"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc['Mei Xiang','Age':'Weight']"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.370244Z",
"start_time": "2019-05-20T11:19:48.356886Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Age 44.0\n",
"Weight 505.0\n",
"dtype: float64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sum()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.382072Z",
"start_time": "2019-05-20T11:19:48.372293Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Age 44.0\n",
"Weight 505.0\n",
"dtype: float64"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sum(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.392189Z",
"start_time": "2019-05-20T11:19:48.384396Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Bei Bei 3.0\n",
"Mei Xiang 250.0\n",
"Tian Tian 296.0\n",
"dtype: float64"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.398939Z",
"start_time": "2019-05-20T11:19:48.394281Z"
},
"hidden": true
},
"outputs": [],
"source": [
"#del(df['Weight'])\n",
"#df"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.407860Z",
"start_time": "2019-05-20T11:19:48.401210Z"
},
"hidden": true
},
"outputs": [],
"source": [
"#s = df.pop('Age')\n",
"#s"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true
},
"source": [
"## Data analysis tools in pandas"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"The organization and most of the examples of this part come from pandas' official tutorial [10 minutes to pandas](http://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html). Some examples also originate from the [user guide](http://pandas.pydata.org/pandas-docs/stable/user_guide/index.html)."
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Object creation"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.420709Z",
"start_time": "2019-05-20T11:19:48.410242Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
" '2013-01-05'],\n",
" dtype='datetime64[ns]', freq='D')"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dates = pd.date_range('20130101', periods=5)\n",
"dates"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.441663Z",
"start_time": "2019-05-20T11:19:48.423279Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>1.159100</td>\n",
" <td>-0.377109</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>-2.545407</td>\n",
" <td>1.001357</td>\n",
" <td>-0.649275</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>-1.283808</td>\n",
" <td>-1.018828</td>\n",
" <td>1.221888</td>\n",
" <td>-0.964830</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>-0.110649</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>-1.553638</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>-1.025729</td>\n",
" <td>-2.389124</td>\n",
" <td>-2.182942</td>\n",
" <td>-0.012242</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 1.159100 -0.377109 0.865423 0.024703\n",
"2013-01-02 0.991748 -2.545407 1.001357 -0.649275\n",
"2013-01-03 -1.283808 -1.018828 1.221888 -0.964830\n",
"2013-01-04 -0.110649 0.431603 1.549942 -1.553638\n",
"2013-01-05 -1.025729 -2.389124 -2.182942 -0.012242"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(5, 4), index=dates, columns=list('ABCD'))\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.458847Z",
"start_time": "2019-05-20T11:19:48.443227Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" <th>E</th>\n",
" <th>F</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>test</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>train</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>test</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>train</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D E F\n",
"0 1.0 2013-01-02 1.0 3 test foo\n",
"1 1.0 2013-01-02 1.0 3 train foo\n",
"2 1.0 2013-01-02 1.0 3 test foo\n",
"3 1.0 2013-01-02 1.0 3 train foo"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2 = pd.DataFrame({'A': 1.,\n",
" 'B': pd.Timestamp('20130102'),\n",
" 'C': pd.Series(1, index=list(range(4)), dtype='float32'),\n",
" 'D': np.array([3] * 4, dtype='int32'),\n",
" 'E': pd.Categorical([\"test\", \"train\", \"test\", \"train\"]),\n",
" 'F': 'foo'})\n",
"df2"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.471665Z",
"start_time": "2019-05-20T11:19:48.460785Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"A float64\n",
"B datetime64[ns]\n",
"C float32\n",
"D int32\n",
"E category\n",
"F object\n",
"dtype: object"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Viewing data"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.490230Z",
"start_time": "2019-05-20T11:19:48.474320Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>1.159100</td>\n",
" <td>-0.377109</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>-2.545407</td>\n",
" <td>1.001357</td>\n",
" <td>-0.649275</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>-1.283808</td>\n",
" <td>-1.018828</td>\n",
" <td>1.221888</td>\n",
" <td>-0.964830</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 1.159100 -0.377109 0.865423 0.024703\n",
"2013-01-02 0.991748 -2.545407 1.001357 -0.649275\n",
"2013-01-03 -1.283808 -1.018828 1.221888 -0.964830"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(3)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.503465Z",
"start_time": "2019-05-20T11:19:48.492466Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>-1.283808</td>\n",
" <td>-1.018828</td>\n",
" <td>1.221888</td>\n",
" <td>-0.964830</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>-0.110649</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>-1.553638</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>-1.025729</td>\n",
" <td>-2.389124</td>\n",
" <td>-2.182942</td>\n",
" <td>-0.012242</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-03 -1.283808 -1.018828 1.221888 -0.964830\n",
"2013-01-04 -0.110649 0.431603 1.549942 -1.553638\n",
"2013-01-05 -1.025729 -2.389124 -2.182942 -0.012242"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail(3)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.512153Z",
"start_time": "2019-05-20T11:19:48.505787Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
" '2013-01-05'],\n",
" dtype='datetime64[ns]', freq='D')"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.index"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.524389Z",
"start_time": "2019-05-20T11:19:48.514349Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"Index(['A', 'B', 'C', 'D'], dtype='object')"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.537240Z",
"start_time": "2019-05-20T11:19:48.527648Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"2013-01-01 1.159100\n",
"2013-01-02 0.991748\n",
"2013-01-03 -1.283808\n",
"2013-01-04 -0.110649\n",
"2013-01-05 -1.025729\n",
"Freq: D, Name: A, dtype: float64"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.A"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.545439Z",
"start_time": "2019-05-20T11:19:48.539132Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1.15909981, -0.37710932, 0.86542348, 0.0247032 ],\n",
" [ 0.99174807, -2.54540728, 1.00135698, -0.64927482],\n",
" [-1.28380839, -1.01882835, 1.22188822, -0.96483024],\n",
" [-0.11064882, 0.43160327, 1.54994242, -1.55363829],\n",
" [-1.02572943, -2.38912399, -2.18294221, -0.01224229]])"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = df.to_numpy()\n",
"a"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.549933Z",
"start_time": "2019-05-20T11:19:48.547141Z"
},
"hidden": true
},
"outputs": [],
"source": [
"a[0,0] = 0"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.561679Z",
"start_time": "2019-05-20T11:19:48.556970Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['A'][0]"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.572547Z",
"start_time": "2019-05-20T11:19:48.563912Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],\n",
" [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']],\n",
" dtype=object)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a2 = df2.to_numpy()\n",
"a2"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.580072Z",
"start_time": "2019-05-20T11:19:48.575027Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a2[0,0] = 0\n",
"df2['A'][0]"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.593570Z",
"start_time": "2019-05-20T11:19:48.581834Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" <th>E</th>\n",
" <th>F</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>test</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>train</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>test</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1.0</td>\n",
" <td>2013-01-02</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>train</td>\n",
" <td>foo</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D E F\n",
"0 1.0 2013-01-02 1.0 3 test foo\n",
"1 1.0 2013-01-02 1.0 3 train foo\n",
"2 1.0 2013-01-02 1.0 3 test foo\n",
"3 1.0 2013-01-02 1.0 3 train foo"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df2.values[0,0] = 0\n",
"df2"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Selection"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.609760Z",
"start_time": "2019-05-20T11:19:48.595165Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>-2.545407</td>\n",
" <td>1.001357</td>\n",
" <td>-0.649275</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-02 0.991748 -2.545407 1.001357 -0.649275"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[df.A > 0]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.638483Z",
"start_time": "2019-05-20T11:19:48.617377Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>NaN</td>\n",
" <td>1.001357</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.221888</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>NaN</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 NaN NaN 0.865423 0.024703\n",
"2013-01-02 0.991748 NaN 1.001357 NaN\n",
"2013-01-03 NaN NaN 1.221888 NaN\n",
"2013-01-04 NaN 0.431603 1.549942 NaN\n",
"2013-01-05 NaN NaN NaN NaN"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df[df > 0]\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Missing Data"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.649823Z",
"start_time": "2019-05-20T11:19:48.640389Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [A, B, C, D]\n",
"Index: []"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dropna()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.659961Z",
"start_time": "2019-05-20T11:19:48.651475Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: []\n",
"Index: [2013-01-01 00:00:00, 2013-01-02 00:00:00, 2013-01-03 00:00:00, 2013-01-04 00:00:00, 2013-01-05 00:00:00]"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dropna(axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Doesn't modify the original DataFrame:"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.675886Z",
"start_time": "2019-05-20T11:19:48.661794Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>NaN</td>\n",
" <td>1.001357</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.221888</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>NaN</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 NaN NaN 0.865423 0.024703\n",
"2013-01-02 0.991748 NaN 1.001357 NaN\n",
"2013-01-03 NaN NaN 1.221888 NaN\n",
"2013-01-04 NaN 0.431603 1.549942 NaN\n",
"2013-01-05 NaN NaN NaN NaN"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.692007Z",
"start_time": "2019-05-20T11:19:48.678116Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>0.000000</td>\n",
" <td>1.001357</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.221888</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>0.000000</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 0.000000 0.000000 0.865423 0.024703\n",
"2013-01-02 0.991748 0.000000 1.001357 0.000000\n",
"2013-01-03 0.000000 0.000000 1.221888 0.000000\n",
"2013-01-04 0.000000 0.431603 1.549942 0.000000\n",
"2013-01-05 0.000000 0.000000 0.000000 0.000000"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.fillna(value=0)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.705342Z",
"start_time": "2019-05-20T11:19:48.694120Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>NaN</td>\n",
" <td>1.001357</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.221888</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>NaN</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 NaN NaN 0.865423 0.024703\n",
"2013-01-02 0.991748 NaN 1.001357 NaN\n",
"2013-01-03 NaN NaN 1.221888 NaN\n",
"2013-01-04 NaN 0.431603 1.549942 NaN\n",
"2013-01-05 NaN NaN NaN NaN"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.717620Z",
"start_time": "2019-05-20T11:19:48.707304Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 True True False False\n",
"2013-01-02 False True False True\n",
"2013-01-03 True True False True\n",
"2013-01-04 True False False True\n",
"2013-01-05 True True True True"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isna()"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.737066Z",
"start_time": "2019-05-20T11:19:48.719983Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 True True False False\n",
"2013-01-02 False True False True\n",
"2013-01-03 True True False True\n",
"2013-01-04 True False False True\n",
"2013-01-05 True True True True"
]
},
"execution_count": 80,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.isna(df)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Getting Data In/Out"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.747435Z",
"start_time": "2019-05-20T11:19:48.739130Z"
},
"hidden": true
},
"outputs": [],
"source": [
"df.to_csv('foo.csv')"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.765695Z",
"start_time": "2019-05-20T11:19:48.750022Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" <th>D</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2013-01-01</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.865423</td>\n",
" <td>0.024703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-02</th>\n",
" <td>0.991748</td>\n",
" <td>NaN</td>\n",
" <td>1.001357</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-03</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1.221888</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-04</th>\n",
" <td>NaN</td>\n",
" <td>0.431603</td>\n",
" <td>1.549942</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2013-01-05</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C D\n",
"2013-01-01 NaN NaN 0.865423 0.024703\n",
"2013-01-02 0.991748 NaN 1.001357 NaN\n",
"2013-01-03 NaN NaN 1.221888 NaN\n",
"2013-01-04 NaN 0.431603 1.549942 NaN\n",
"2013-01-05 NaN NaN NaN NaN"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('foo.csv', index_col=0)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Hierarchical indexing (MultiIndex)"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Example from http://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#advanced-hierarchical"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.775061Z",
"start_time": "2019-05-20T11:19:48.768069Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"[array(['bar', 'bar', 'foo', 'foo'], dtype='<U3'),\n",
" array(['one', 'two', 'one', 'two'], dtype='<U3')]"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arrays = [np.array(['bar', 'bar', 'foo', 'foo']),\n",
" np.array(['one', 'two', 'one', 'two'])]\n",
"arrays"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.786669Z",
"start_time": "2019-05-20T11:19:48.777858Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"bar one -0.840014\n",
" two -0.756362\n",
"foo one -0.547463\n",
" two -0.613027\n",
"dtype: float64"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series(np.random.randn(4), index=arrays)\n",
"s"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.805754Z",
"start_time": "2019-05-20T11:19:48.788798Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">bar</th>\n",
" <th>one</th>\n",
" <td>-0.075528</td>\n",
" <td>-2.227210</td>\n",
" <td>-1.484136</td>\n",
" </tr>\n",
" <tr>\n",
" <th>two</th>\n",
" <td>0.707189</td>\n",
" <td>0.207465</td>\n",
" <td>0.094467</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">foo</th>\n",
" <th>one</th>\n",
" <td>-1.311922</td>\n",
" <td>-1.140869</td>\n",
" <td>0.140230</td>\n",
" </tr>\n",
" <tr>\n",
" <th>two</th>\n",
" <td>1.157357</td>\n",
" <td>0.816002</td>\n",
" <td>0.041543</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2\n",
"bar one -0.075528 -2.227210 -1.484136\n",
" two 0.707189 0.207465 0.094467\n",
"foo one -1.311922 -1.140869 0.140230\n",
" two 1.157357 0.816002 0.041543"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(4, 3), index=arrays)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Various operations"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.815203Z",
"start_time": "2019-05-20T11:19:48.808316Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 0.119274\n",
"1 -0.586153\n",
"2 -0.301974\n",
"dtype: float64"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.825814Z",
"start_time": "2019-05-20T11:19:48.817959Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 0.119274\n",
"1 -0.586153\n",
"2 -0.301974\n",
"dtype: float64"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.mean(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.850484Z",
"start_time": "2019-05-20T11:19:48.827967Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">bar</th>\n",
" <th>one</th>\n",
" <td>-0.075528</td>\n",
" <td>-2.227210</td>\n",
" <td>-1.484136</td>\n",
" </tr>\n",
" <tr>\n",
" <th>two</th>\n",
" <td>0.631661</td>\n",
" <td>-2.019745</td>\n",
" <td>-1.389669</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">foo</th>\n",
" <th>one</th>\n",
" <td>-0.680261</td>\n",
" <td>-3.160614</td>\n",
" <td>-1.249439</td>\n",
" </tr>\n",
" <tr>\n",
" <th>two</th>\n",
" <td>0.477096</td>\n",
" <td>-2.344612</td>\n",
" <td>-1.207896</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2\n",
"bar one -0.075528 -2.227210 -1.484136\n",
" two 0.631661 -2.019745 -1.389669\n",
"foo one -0.680261 -3.160614 -1.249439\n",
" two 0.477096 -2.344612 -1.207896"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.apply(np.cumsum)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.859697Z",
"start_time": "2019-05-20T11:19:48.851969Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"-0.613027 1\n",
"-0.840014 1\n",
"-0.756362 1\n",
"-0.547463 1\n",
"dtype: int64"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Gather Series or DataFrames"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.870360Z",
"start_time": "2019-05-20T11:19:48.861531Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-0.244737</td>\n",
" <td>0.193583</td>\n",
" <td>0.618107</td>\n",
" <td>1.367776</td>\n",
" <td>0.421097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.136700</td>\n",
" <td>0.492938</td>\n",
" <td>0.585207</td>\n",
" <td>0.075231</td>\n",
" <td>0.299545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.093732</td>\n",
" <td>-0.232071</td>\n",
" <td>0.678656</td>\n",
" <td>0.882982</td>\n",
" <td>0.824984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.576383</td>\n",
" <td>0.463082</td>\n",
" <td>0.592405</td>\n",
" <td>-0.747336</td>\n",
" <td>0.420204</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4\n",
"0 -0.244737 0.193583 0.618107 1.367776 0.421097\n",
"1 -0.136700 0.492938 0.585207 0.075231 0.299545\n",
"2 -1.093732 -0.232071 0.678656 0.882982 0.824984\n",
"3 0.576383 0.463082 0.592405 -0.747336 0.420204"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame(np.random.randn(4, 5))\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.880758Z",
"start_time": "2019-05-20T11:19:48.872522Z"
},
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0 1 2 3 4\n",
"0 -0.244737 0.193583 0.618107 1.367776 0.421097\n",
"1 -0.136700 0.492938 0.585207 0.075231 0.299545\n",
"2 -1.093732 -0.232071 0.678656 0.882982 0.824984\n",
"3 0.576383 0.463082 0.592405 -0.747336 0.420204\n"
]
}
],
"source": [
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.896870Z",
"start_time": "2019-05-20T11:19:48.882288Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"[ 0 1 2 3 4\n",
" 0 -0.244737 0.193583 0.618107 1.367776 0.421097\n",
" 1 -0.136700 0.492938 0.585207 0.075231 0.299545,\n",
" 0 1 2 3 4\n",
" 2 -1.093732 -0.232071 0.678656 0.882982 0.824984\n",
" 3 0.576383 0.463082 0.592405 -0.747336 0.420204]"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pieces = [df[:2], df[2:]]\n",
"pieces"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.910874Z",
"start_time": "2019-05-20T11:19:48.898491Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-0.244737</td>\n",
" <td>0.193583</td>\n",
" <td>0.618107</td>\n",
" <td>1.367776</td>\n",
" <td>0.421097</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.136700</td>\n",
" <td>0.492938</td>\n",
" <td>0.585207</td>\n",
" <td>0.075231</td>\n",
" <td>0.299545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.093732</td>\n",
" <td>-0.232071</td>\n",
" <td>0.678656</td>\n",
" <td>0.882982</td>\n",
" <td>0.824984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.576383</td>\n",
" <td>0.463082</td>\n",
" <td>0.592405</td>\n",
" <td>-0.747336</td>\n",
" <td>0.420204</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4\n",
"0 -0.244737 0.193583 0.618107 1.367776 0.421097\n",
"1 -0.136700 0.492938 0.585207 0.075231 0.299545\n",
"2 -1.093732 -0.232071 0.678656 0.882982 0.824984\n",
"3 0.576383 0.463082 0.592405 -0.747336 0.420204"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.concat(pieces)"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Grouping"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.922679Z",
"start_time": "2019-05-20T11:19:48.912452Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>A</th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>foo</td>\n",
" <td>-0.553484</td>\n",
" <td>1.462874</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>bar</td>\n",
" <td>-0.131502</td>\n",
" <td>-0.151523</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>foo</td>\n",
" <td>0.699913</td>\n",
" <td>0.490660</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>bar</td>\n",
" <td>0.492997</td>\n",
" <td>-2.148453</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" A B C\n",
"0 foo -0.553484 1.462874\n",
"1 bar -0.131502 -0.151523\n",
"2 foo 0.699913 0.490660\n",
"3 bar 0.492997 -2.148453"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar'],\n",
" 'B': np.random.randn(4),\n",
" 'C': np.random.randn(4)})\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.935918Z",
"start_time": "2019-05-20T11:19:48.924256Z"
},
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" A B C\n",
"0 foo -0.553484 1.462874\n",
"1 bar -0.131502 -0.151523\n",
"2 foo 0.699913 0.490660\n",
"3 bar 0.492997 -2.148453\n"
]
}
],
"source": [
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.950540Z",
"start_time": "2019-05-20T11:19:48.937671Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>B</th>\n",
" <th>C</th>\n",
" </tr>\n",
" <tr>\n",
" <th>A</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>bar</th>\n",
" <td>0.361495</td>\n",
" <td>-2.299976</td>\n",
" </tr>\n",
" <tr>\n",
" <th>foo</th>\n",
" <td>0.146429</td>\n",
" <td>1.953534</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" B C\n",
"A \n",
"bar 0.361495 -2.299976\n",
"foo 0.146429 1.953534"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('A').sum()"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.961146Z",
"start_time": "2019-05-20T11:19:48.952364Z"
},
"hidden": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" B C\n",
"A \n",
"bar 0.361495 -2.299976\n",
"foo 0.146429 1.953534\n"
]
}
],
"source": [
"print(df.groupby('A').sum())"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Time Series"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.979698Z",
"start_time": "2019-05-20T11:19:48.963420Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"DatetimeIndex(['2012-01-01 00:00:00', '2012-01-01 00:00:01',\n",
" '2012-01-01 00:00:02', '2012-01-01 00:00:03'],\n",
" dtype='datetime64[ns]', freq='S')"
]
},
"execution_count": 98,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rng = pd.date_range('1/1/2012', periods=4, freq='S')\n",
"rng"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:48.990993Z",
"start_time": "2019-05-20T11:19:48.982003Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"2012-01-01 00:00:00 172\n",
"2012-01-01 00:00:01 257\n",
"2012-01-01 00:00:02 452\n",
"2012-01-01 00:00:03 400\n",
"Freq: S, dtype: int64"
]
},
"execution_count": 99,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)\n",
"ts"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:49.006453Z",
"start_time": "2019-05-20T11:19:48.993252Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"2012-01-01 00:00:00 429\n",
"2012-01-01 00:00:02 852\n",
"Freq: 2S, dtype: int64"
]
},
"execution_count": 100,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts.resample('2S').sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Categorical"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:49.017460Z",
"start_time": "2019-05-20T11:19:49.008481Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"0 a\n",
"1 b\n",
"2 c\n",
"3 a\n",
"dtype: category\n",
"Categories (3, object): [a, b, c]"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = pd.Series([\"a\", \"b\", \"c\", \"a\"], dtype=\"category\")\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {
"heading_collapsed": true,
"hidden": true
},
"source": [
"### Plotting"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:49.026305Z",
"start_time": "2019-05-20T11:19:49.019037Z"
},
"code_folding": [
0
],
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"2000-01-01 -0.914553\n",
"2000-01-02 -0.533403\n",
"2000-01-03 2.094352\n",
"2000-01-04 0.923388\n",
"2000-01-05 1.378172\n",
"Freq: D, dtype: float64"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts = pd.Series(np.random.randn(1000),\n",
" index=pd.date_range('1/1/2000', periods=1000))\n",
"ts.head()"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:49.037762Z",
"start_time": "2019-05-20T11:19:49.028015Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"2000-01-01 -0.914553\n",
"2000-01-02 -1.447956\n",
"2000-01-03 0.646397\n",
"2000-01-04 1.569784\n",
"2000-01-05 2.947957\n",
"Freq: D, dtype: float64"
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ts = ts.cumsum()\n",
"ts.head()"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"ExecuteTime": {
"end_time": "2019-05-20T11:19:49.360267Z",
"start_time": "2019-05-20T11:19:49.039323Z"
},
"hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f2f28c3e588>"
]
},
"execution_count": 104,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ts.plot()"
]
}
],
"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.3"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment