Skip to content

Instantly share code, notes, and snippets.

@micviklui
Created December 21, 2014 22:25
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save micviklui/78174c911c75bbe4358e to your computer and use it in GitHub Desktop.
ipynbs
{
"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