ipynbs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:836445cd939079783ca00f23e0eec88e6e83323c0a7c41d2d665e9fb84653099" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"%pylab inline" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"import numpy as np\n", | |
"import pandas as pd" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"cx = np.random.randint(-5, 5, 9).reshape(3, 3)\n", | |
"cy = np.random.randint(-5, 5, 9).reshape(3, 3)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"x, y = np.meshgrid(np.linspace(-3, 3, 3), np.linspace(-3, 3, 3))" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plt.pcolor(x, y, cx)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plt.pcolor(x, y, cy)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"plt.quiver(x, y, cx, cy)\n", | |
"plt.xlim(-5, 5)\n", | |
"plt.ylim(-5, 5)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"[\"Edge {}\".format(i) for i in range(1, 5)]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"xy0 = np.array([x.flatten(), y.flatten()]).T\n", | |
"cxy0 = np.array([cx.flatten(), cy.flatten()]).T" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df1 = pd.DataFrame()\n", | |
"df1[\"pos x\"] = xy0[:, 0]\n", | |
"df1[\"pos y\"] = xy0[:, 1]\n", | |
"df1[\"dir\"] = [\"X\"] * 9\n", | |
"df1[\"edge 1\"] = cxy0[:, 0] - 2 #np.random.randint(-2, 2, c0.size)\n", | |
"df1[\"edge 2\"] = cxy0[:, 0] + 2\n", | |
"\n", | |
"df2 = pd.DataFrame()\n", | |
"df2[\"pos x\"] = xy0[:, 0]\n", | |
"df2[\"pos y\"] = xy0[:, 1]\n", | |
"df2[\"dir\"] = [\"Y\"] * 9\n", | |
"df2[\"edge 1\"] = cxy0[:, 1] - 2\n", | |
"df2[\"edge 2\"] = cxy0[:, 1] + 2\n", | |
"\n", | |
"df = pd.concat([df1, df2])\n", | |
"df = df.reset_index()\n", | |
"df.head()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df.shape" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb = df.groupby([\"dir\"])\n", | |
"gb.count()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb = df.groupby([\"dir\", \"pos x\", \"pos y\"])\n", | |
"i0 = gb.groups[('X', -3.0, -3.0)][0]\n", | |
"print i0, \"\\n\"\n", | |
"print df.loc[i0], \"\\n\"\n", | |
"print df.loc[i0][[\"edge 1\", \"edge 2\"]], \"\\n\"\n", | |
"df.loc[i0][[\"edge 1\", \"edge 2\"]].mean()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb.aggregate(lambda x: x)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"(df.isnull() == True).any(1).nonzero()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for e, ie in gb.groups.iteritems():\n", | |
" assert len(ie) == 1\n", | |
" i = ie[0]\n", | |
" print e\n", | |
" print df.loc[i][[\"edge 1\", \"edge 2\"]]\n", | |
" print df.loc[i][[\"edge 1\", \"edge 2\"]].mean(), \"\\n\"" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb[[\"edge 1\", \"edge 2\"]]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for name, group in gb:\n", | |
" print name\n", | |
" print group[[\"edge 1\", \"edge 2\"]]\n", | |
" print np.mean(group[[\"edge 1\", \"edge 2\"]], axis=1)\n" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb2 = df.groupby([\"dir\"])\n", | |
"col_edges = [col for col in df.columns if \"edge\" in col]\n", | |
"print col_edges\n", | |
"for name, group in gb2:\n", | |
" print name, type(group)\n", | |
" print group.apply(lambda row: [row[[\"pos x\", \"pos y\"]], row[col_edges], np.mean(row[col_edges])], axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"gb2 = df.groupby([\"dir\"])\n", | |
"col_edges = [col for col in df.columns if \"edge\" in col]\n", | |
"print col_edges\n", | |
"df_lst = []\n", | |
"for name, group in gb2:\n", | |
" print name, type(group)\n", | |
" #df_lst.append(group.apply(lambda row: (row[\"pos x\"],\n", | |
" # row[\"pos y\"],\n", | |
" # np.mean(row[col_edges])), axis=1))\n", | |
"#gb2[col_edges].apply(lambda x: x)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"# apply lambda row wise\n", | |
"df[\"edge x\"] = df[df[\"dir\"] == \"X\"].apply(lambda row: np.mean(row[col_edges]), axis=1)\n", | |
"df[\"edge y\"] = df[df[\"dir\"] == \"Y\"].apply(lambda row: np.mean(row[col_edges]), axis=1)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df_ex = df[[\"pos x\", \"pos y\", \"edge x\"]][np.isfinite(df[\"edge x\"])]\n", | |
"df_ex" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df_ey = df[[\"pos x\", \"pos y\", \"edge y\"]][np.isfinite(df[\"edge y\"])]\n", | |
"df_ey" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"pd.merge(df_ex, df_ey, how='left', on=[\"pos x\", \"pos y\"])" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"# apply lambda row wise\n", | |
"df_xavg = df[df[\"dir\"] == \"X\"].apply(lambda row: np.mean(row[col_edges]), axis=1)\n", | |
"df_yavg = df[df[\"dir\"] == \"Y\"].apply(lambda row: np.mean(row[col_edges]), axis=1)\n", | |
"#df_yavg" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df_avg = pd.concat([df[\"pos x\"], df[\"pos y\"], pd.concat([df_xavg, df_yavg])], axis=1)\n", | |
"df_avg" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [] | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment