{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
"df = pd.concat([pd.read_csv('quotes2.csv')]*100)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" time | \n",
" ticker | \n",
" bid | \n",
" ask | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 20160525 13:30:00.023 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.93 | \n",
"
\n",
" \n",
" 1 | \n",
" 20160525 13:30:00.023 | \n",
" MSFT | \n",
" 51.95 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 2 | \n",
" 20160525 13:30:00.041 | \n",
" MSFT | \n",
" 51.95 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 3 | \n",
" 20160525 13:30:00.048 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.93 | \n",
"
\n",
" \n",
" 4 | \n",
" 20160525 13:30:00.048 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.93 | \n",
"
\n",
" \n",
" 5 | \n",
" 20160525 13:30:00.048 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.93 | \n",
"
\n",
" \n",
" 6 | \n",
" 20160525 13:30:00.048 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.93 | \n",
"
\n",
" \n",
" 7 | \n",
" 20160525 13:30:00.072 | \n",
" GOOG | \n",
" 720.50 | \n",
" 720.88 | \n",
"
\n",
" \n",
" 8 | \n",
" 20160525 13:30:00.075 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 9 | \n",
" 20160525 13:30:00.076 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 10 | \n",
" 20160525 13:30:00.076 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 11 | \n",
" 20160525 13:30:00.076 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 12 | \n",
" 20160525 13:30:00.078 | \n",
" MSFT | \n",
" 51.95 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 13 | \n",
" 20160525 13:30:00.078 | \n",
" MSFT | \n",
" 51.95 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 14 | \n",
" 20160525 13:30:00.078 | \n",
" MSFT | \n",
" 51.95 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 15 | \n",
" 20160525 13:30:00.078 | \n",
" MSFT | \n",
" 51.92 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 16 | \n",
" 20160525 13:30:00.079 | \n",
" MSFT | \n",
" 51.92 | \n",
" 51.95 | \n",
"
\n",
" \n",
" 17 | \n",
" 20160525 13:30:00.080 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 18 | \n",
" 20160525 13:30:00.084 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.56 | \n",
"
\n",
" \n",
" 19 | \n",
" 20160525 13:30:00.086 | \n",
" AAPL | \n",
" 98.55 | \n",
" 98.63 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" time ticker bid ask\n",
"0 20160525 13:30:00.023 GOOG 720.50 720.93\n",
"1 20160525 13:30:00.023 MSFT 51.95 51.95\n",
"2 20160525 13:30:00.041 MSFT 51.95 51.95\n",
"3 20160525 13:30:00.048 GOOG 720.50 720.93\n",
"4 20160525 13:30:00.048 GOOG 720.50 720.93\n",
"5 20160525 13:30:00.048 GOOG 720.50 720.93\n",
"6 20160525 13:30:00.048 GOOG 720.50 720.93\n",
"7 20160525 13:30:00.072 GOOG 720.50 720.88\n",
"8 20160525 13:30:00.075 AAPL 98.55 98.56\n",
"9 20160525 13:30:00.076 AAPL 98.55 98.56\n",
"10 20160525 13:30:00.076 AAPL 98.55 98.56\n",
"11 20160525 13:30:00.076 AAPL 98.55 98.56\n",
"12 20160525 13:30:00.078 MSFT 51.95 51.95\n",
"13 20160525 13:30:00.078 MSFT 51.95 51.95\n",
"14 20160525 13:30:00.078 MSFT 51.95 51.95\n",
"15 20160525 13:30:00.078 MSFT 51.92 51.95\n",
"16 20160525 13:30:00.079 MSFT 51.92 51.95\n",
"17 20160525 13:30:00.080 AAPL 98.55 98.56\n",
"18 20160525 13:30:00.084 AAPL 98.55 98.56\n",
"19 20160525 13:30:00.086 AAPL 98.55 98.63"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head(20)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10 loops, best of 3: 91.2 ms per loop\n"
]
}
],
"source": [
"%timeit df.groupby('ticker').apply(np.mean)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" bid | \n",
" ask | \n",
"
\n",
" \n",
" ticker | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AAPL | \n",
" 98.60525 | \n",
" 98.617500 | \n",
"
\n",
" \n",
" GOOG | \n",
" 720.50000 | \n",
" 720.921667 | \n",
"
\n",
" \n",
" MSFT | \n",
" 51.93700 | \n",
" 51.950000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" bid ask\n",
"ticker \n",
"AAPL 98.60525 98.617500\n",
"GOOG 720.50000 720.921667\n",
"MSFT 51.93700 51.950000"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('ticker').apply(np.mean)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1000 loops, best of 3: 1.19 ms per loop\n"
]
}
],
"source": [
"%timeit df.groupby('ticker').aggregate(np.mean)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100 loops, best of 3: 8.48 ms per loop\n"
]
}
],
"source": [
"%timeit df.groupby('ticker').transform(lambda x : 2 * x)"
]
}
],
"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.5.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}