{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Pandas\n",
"This is a sample notebook for pandas, an extremely powerful python module that allows for data I/O, plotting, and general data analysis"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# As usual, first we import different packages:\n",
"# - matplotlib to plot things\n",
"# - numpy for numerical operations\n",
"# - pandas"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# 1. In this first example we create what is known as a pandas \"data frame\"\n",
"# This is a way to organize data that is tabular in nature, i.e., rows \n",
"# and columns.\n",
"#\n",
"# The syntax is ({ xxx }) where xxx contains the list (not in the python\n",
"# sense) of data. Each entry can be thought of as a row by column table.\n",
"# the first row, or column headings, are listed first, then a colon (:),\n",
"# then the row values in each column are listed between []'s. The first\n",
"# column is always an index.\n",
"# The example below lists a table of people, their children and pets."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.DataFrame({\n",
" 'name':['john','mary','peter','jeff','bill','lisa','jose'],\n",
" 'age':[23,78,22,19,45,33,20],\n",
" 'gender':['M','F','M','M','M','F','M'],\n",
" 'state':['california','dc','california','dc','california','texas','texas'],\n",
" 'num_children':[2,0,0,3,2,1,4],\n",
" 'num_pets':[5,1,0,5,2,2,3]\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# To print out this data frame, just enter the DataFrame name"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
name
\n",
"
age
\n",
"
gender
\n",
"
state
\n",
"
num_children
\n",
"
num_pets
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
john
\n",
"
23
\n",
"
M
\n",
"
california
\n",
"
2
\n",
"
5
\n",
"
\n",
"
\n",
"
1
\n",
"
mary
\n",
"
78
\n",
"
F
\n",
"
dc
\n",
"
0
\n",
"
1
\n",
"
\n",
"
\n",
"
2
\n",
"
peter
\n",
"
22
\n",
"
M
\n",
"
california
\n",
"
0
\n",
"
0
\n",
"
\n",
"
\n",
"
3
\n",
"
jeff
\n",
"
19
\n",
"
M
\n",
"
dc
\n",
"
3
\n",
"
5
\n",
"
\n",
"
\n",
"
4
\n",
"
bill
\n",
"
45
\n",
"
M
\n",
"
california
\n",
"
2
\n",
"
2
\n",
"
\n",
"
\n",
"
5
\n",
"
lisa
\n",
"
33
\n",
"
F
\n",
"
texas
\n",
"
1
\n",
"
2
\n",
"
\n",
"
\n",
"
6
\n",
"
jose
\n",
"
20
\n",
"
M
\n",
"
texas
\n",
"
4
\n",
"
3
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" name age gender state num_children num_pets\n",
"0 john 23 M california 2 5\n",
"1 mary 78 F dc 0 1\n",
"2 peter 22 M california 0 0\n",
"3 jeff 19 M dc 3 5\n",
"4 bill 45 M california 2 2\n",
"5 lisa 33 F texas 1 2\n",
"6 jose 20 M texas 4 3"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Alternately, specify certain columns by givin their name"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.frame.DataFrame"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(df)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
state
\n",
"
name
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
california
\n",
"
john
\n",
"
\n",
"
\n",
"
1
\n",
"
dc
\n",
"
mary
\n",
"
\n",
"
\n",
"
2
\n",
"
california
\n",
"
peter
\n",
"
\n",
"
\n",
"
3
\n",
"
dc
\n",
"
jeff
\n",
"
\n",
"
\n",
"
4
\n",
"
california
\n",
"
bill
\n",
"
\n",
"
\n",
"
5
\n",
"
texas
\n",
"
lisa
\n",
"
\n",
"
\n",
"
6
\n",
"
texas
\n",
"
jose
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" state name\n",
"0 california john\n",
"1 dc mary\n",
"2 california peter\n",
"3 dc jeff\n",
"4 california bill\n",
"5 texas lisa\n",
"6 texas jose"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[['state', 'name']]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# It's a little more tricky to display certain rows; for\n",
"# this use the \"iloc\" method, e.g., to display the third\n",
"# row fifth column (NOTE: python starts counting at 0,\n",
"# and the first column is an index not technically part\n",
"# of the DataFrame for these purposes)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[3,5]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# search a column for a value, print out that row"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.plot(kind='scatter',x='num_children',y='num_pets',color='blue')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"# plot name vs age as bar chart (note we can do this even though\n",
"# 'name' is not a number since it's a bar chart)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.plot(kind='bar',x='name',y='age')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# now make a single plot with two lines\n",
"# This:\n",
"#\n",
"#df.plot(kind='line',x='name',y='num_children',color='blue')\n",
"#df.plot(kind='line',x='name',y='num_pets',color='red')\n",
"#\n",
"# would actually give two separate plots, one above the\n",
"# the other. To out both on a single graph, we make use of\n",
"# some matplotlib functions"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# a. clear the graph\n",
"plt.clf()\n",
"\n",
"# b. use matplotlib \"gca\", or \"get current axis\"\n",
"ax = plt.gca()\n",
"\n",
"# c. make two plots, and use the same axes\n",
"df.plot(kind='line',x='name',y='num_children',ax=ax)\n",
"df.plot(kind='line',x='name',y='num_pets', color='red', ax=ax)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# we can "
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"