{ "cells": [ { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"2021dataset.csv\")\n", "pd.set_option('display.max_rows', None)" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [], "source": [ "for col in ['switch', 'line', 'slowmo', 'ig', 'replayed', 'slam', 'NY']:\n", " df[col] = pd.to_numeric(df[col], errors='coerce').fillna(0)\n", "for col in ['trick', 'obstacle', 'obstacledetail', 'location', 'notes']:\n", " df[col] = df[col].str.lower()" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "#df" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [], "source": [ "# total num_tricks\n", "num_tricks = pd.DataFrame(df.groupby('week')['rank'].max()).reset_index()\n", "num_tricks.columns = ['week', 'num_tricks']\n", "\n", "# total slowmo clips\n", "num_slowmo = pd.DataFrame(df.groupby('week').sum()['slowmo']).reset_index()\n", "num_slowmo.columns = ['week', 'num_slowmo']\n", "\n", "# total slam clips\n", "num_slam = pd.DataFrame(df.groupby('week').sum()['slam']).reset_index()\n", "num_slam.columns = ['week', 'num_slam']\n", "\n", "# total NY clips\n", "num_NY = pd.DataFrame(df.groupby('week').sum()['NY']).reset_index()\n", "num_NY.columns = ['week', 'num_NY']\n", "\n", "# total switch/nollie tricks\n", "num_switch = pd.DataFrame(df.groupby('week').sum()['switch']).reset_index()\n", "num_switch.columns = ['week', 'num_switch']\n", "\n", "# total tricks part of line\n", "num_line = pd.DataFrame(df.groupby('week').sum()['line']).reset_index()\n", "num_line.columns = ['week', 'num_line']\n", "\n", "# total IG tricks\n", "num_ig = pd.DataFrame(df.groupby('week').sum()['ig']).reset_index()\n", "num_ig.columns = ['week', 'num_ig']\n", "\n", "# total replayed tricks\n", "num_replayed = pd.DataFrame(df.groupby('week').sum()['replayed']).reset_index()\n", "num_replayed.columns = ['week', 'num_replayed']\n", "\n", "# total fs tricks\n", "num_fs = pd.DataFrame(df[['trick', 'week', 'obstacle']].drop_duplicates().groupby(['week'])['trick'].apply(lambda x: x[x.str.contains('fs ')].count())).reset_index()\n", "num_fs.columns = ['week', 'num_fs']\n", "\n", "# total bs tricks\n", "num_bs = pd.DataFrame(df[['trick', 'week', 'obstacle']].drop_duplicates().groupby(['week'])['trick'].apply(lambda x: x[x.str.contains('bs ')].count())).reset_index()\n", "num_bs.columns = ['week', 'num_bs']" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [], "source": [ "df_stats = df.merge(num_tricks).merge(num_slowmo).merge(num_slam).merge(num_NY).merge(num_switch).merge(num_line).merge(num_ig).merge(num_replayed).merge(num_fs).merge(num_bs)" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "weeks = df.groupby('week')" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [], "source": [ "# percent stair\n", "perc_stair = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='stairs'])) / len(x)))\n", "perc_stair = perc_stair.reset_index()\n", "perc_stair.columns = ['week', 'perc_stair']\n", "# print(\"Stairs: {}\".format(sum(perc_stair['perc_stair'])/perc_stair['week'].max()))\n", "\n", "# percent gap\n", "perc_gap = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='gap'])) / len(x)))\n", "perc_gap = perc_gap.reset_index()\n", "perc_gap.columns = ['week', 'perc_gap']\n", "\n", "# percent ledge\n", "perc_ledge = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='ledge'])) / len(x)))\n", "perc_ledge = perc_ledge.reset_index()\n", "perc_ledge.columns = ['week', 'perc_ledge']\n", "\n", "# percent manual\n", "perc_manual = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='pad']) + len(x[x=='manual']) ) / len(x)))\n", "perc_manual = perc_manual.reset_index()\n", "perc_manual.columns = ['week', 'perc_manual']\n", "\n", "# percent transition\n", "perc_transition = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='transition'])) / len(x)))\n", "perc_transition = perc_transition.reset_index()\n", "perc_transition.columns = ['week', 'perc_transition']\n", "\n", "# percent flat\n", "perc_flat = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='flat'])) / len(x)))\n", "perc_flat = perc_flat.reset_index()\n", "perc_flat.columns = ['week', 'perc_flat']\n", "\n", "# percent hubba\n", "perc_hubba = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='hubba'])) / len(x)))\n", "perc_hubba = perc_hubba.reset_index()\n", "perc_hubba.columns = ['week', 'perc_hubba']\n", "\n", "# percent handrail\n", "perc_handrail = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x==r'handrail'])) / len(x)))\n", "perc_handrail = perc_handrail.reset_index()\n", "perc_handrail.columns = ['week', 'perc_handrail']\n", "\n", "# percent curb\n", "perc_curb = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='curb'])) / len(x)))\n", "perc_curb = perc_curb.reset_index()\n", "perc_curb.columns = ['week', 'perc_curb']\n", "\n", "# percent Wall\n", "perc_wall = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='wall'])) / len(x)))\n", "perc_wall = perc_wall.reset_index()\n", "perc_wall.columns = ['week', 'perc_wall']\n", "\n", "# percent Flatrail\n", "perc_rail = pd.DataFrame(weeks['obstacle'].agg(lambda x: (len(x[x=='flat rail'])) / len(x)))\n", "perc_rail = perc_rail.reset_index()\n", "perc_rail.columns = ['week', 'perc_rail']" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "new_df = df\n", "for s in [num_tricks, num_slowmo, num_slam, num_NY, num_switch, num_fs, num_bs, num_replayed, num_ig, num_line,\n", " perc_stair, perc_gap, perc_ledge, perc_manual, perc_transition, perc_flat, perc_hubba,\n", " perc_rail, perc_handrail, perc_curb, perc_wall]:\n", " new_df = new_df.merge(s)\n", "\n", "cols_to_keep = ['week', 'num_tricks', 'num_slowmo', 'num_slam', 'num_NY', 'num_switch',\n", " 'num_fs', 'num_bs', 'num_replayed', 'num_ig', 'num_line',\n", " 'perc_stair', 'perc_gap', 'perc_ledge', 'perc_manual', 'perc_transition',\n", " 'perc_hubba', 'perc_rail', 'perc_handrail', 'perc_curb', 'perc_flat', 'perc_wall']" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [], "source": [ "stats_df = new_df[cols_to_keep].drop_duplicates().reset_index().drop(columns='index')" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "stats_df['perc_slowmo'] = stats_df.apply(lambda x: x['num_slowmo'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_switch'] = stats_df.apply(lambda x: x['num_switch'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_slam'] = stats_df.apply(lambda x: x['num_slam'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_NY'] = stats_df.apply(lambda x: x['num_NY'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_fs'] = stats_df.apply(lambda x: x['num_fs'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_bs'] = stats_df.apply(lambda x: x['num_bs'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_replayed'] = stats_df.apply(lambda x: x['num_replayed'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_ig'] = stats_df.apply(lambda x: x['num_ig'] / x['num_tricks'], axis=1)\n", "\n", "stats_df['perc_line'] = stats_df.apply(lambda x: x['num_line'] / x['num_tricks'], axis=1)\n", "\n", "stats_df = stats_df.drop(columns=['num_slowmo', 'num_switch', 'num_slam', 'num_NY',\n", " 'num_fs', 'num_bs', 'num_replayed', 'num_ig', 'num_line'])" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [], "source": [ "for col in ['perc_stair', 'perc_gap', 'perc_ledge', 'perc_manual', 'perc_transition',\n", " 'perc_hubba', 'perc_rail', 'perc_handrail', 'perc_curb', 'perc_flat',\n", " 'perc_slowmo', 'perc_switch', 'perc_slam', 'perc_NY', 'perc_fs', 'perc_bs',\n", " 'perc_wall', 'perc_replayed', 'perc_ig', 'perc_line']:\n", " stats_df[col] = round(stats_df[col] * 100)" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "average_percs = round(stats_df.sum()/stats_df['week'].max(), 1)" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "#REGEX FUNCTIONS\n", "def skatercount(regex):\n", " return df[df['skater'].str.contains(regex, na=False)].groupby('skater')['skater']\n", "\n", "\n", "def trickgroup(regex):\n", " return df[df['trick'].str.contains(regex, na=False)].groupby('trick')['trick']\n", "\n", "\n", "def spotfind(regex):\n", " return df[df['location'].str.contains(regex, na=False)].groupby('location')['location']\n", "\n", "\n", "def obstaclecount1(regex):\n", " return df[df['obstacle'].str.contains(regex, na=False)].groupby('obstacle')['obstacle']\n", "\n", "\n", "def obstacledetailcount(regex):\n", " return df[df['obstacledetail'].str.contains(regex, na=False)].groupby('obstacledetail')['obstacledetail']\n", "\n", "\n", "def noted(regex):\n", " return df[df['notes'].str.contains(regex, na=False)].groupby('notes')['notes']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# PERCENTAGES" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "week 25.5\n", "num_tricks 10.0\n", "perc_stair 8.6\n", "perc_gap 17.8\n", "perc_ledge 33.6\n", "perc_manual 7.4\n", "perc_transition 2.4\n", "perc_hubba 5.0\n", "perc_rail 5.4\n", "perc_handrail 5.2\n", "perc_curb 1.6\n", "perc_flat 6.8\n", "perc_wall 4.6\n", "perc_slowmo 32.6\n", "perc_switch 19.0\n", "perc_slam 5.6\n", "perc_NY 14.4\n", "perc_fs 32.8\n", "perc_bs 46.6\n", "perc_replayed 39.0\n", "perc_ig 17.2\n", "perc_line 32.0\n", "dtype: float64" ] }, "execution_count": 155, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average_percs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Numbers of Slowmo, Switch/Nollie etc" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "num_slowmo 163.0\n", "num_switch 95.0\n", "num_slam 28.0\n", "num_NY 72.0\n", "num_replayed 195.0\n", "num_ig 86.0\n", "num_line 160.0\n", "dtype: float64" ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for s in [num_tricks, num_slowmo, num_switch, num_fs, num_bs, num_replayed, num_ig, num_line]:\n", " num_df = new_df.merge(s)\n", "num_df = num_df[['num_slowmo', 'num_switch', 'num_slam', 'num_NY', 'num_replayed',\n", " 'num_ig', 'num_line']].drop_duplicates().reset_index().drop(columns='index')\n", "num_df.sum()" ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [], "source": [ "total_points = pd.DataFrame(df.groupby('skater')['points'].sum()).reset_index()\n", "total_points.columns = ['skater', 'total_points']\n", "top_points = total_points.sort_values(['total_points'], ascending=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# TOP SKATERS By POINTS" ] }, { "cell_type": "code", "execution_count": 184, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
skatertotal_points
366Tyshawn Jones56
230Kyle Wilson31
254Mark Suciu30
22Antonio Durao29
367Victor Campillo27
241Louie Lopez25
106Eetu Toropainen24
186John Shanahan24
67Chris Athans24
92Deedz21
66Chima Ferguson20
166Jacopo Carozzi20
109Elijah Odom19
189Jordan Queijo19
48Brayan Albarenga19
60Carl Aikens18
184John Dilo18
156Ishod Wair18
51Brian O’Dwyer17
262Max Palmer17
54Brian Reid17
353Tom Knox17
79Cyrus Bennett16
378Yuto Horigome16
313Rowan Davis16
\n", "
" ], "text/plain": [ " skater total_points\n", "366 Tyshawn Jones 56\n", "230 Kyle Wilson 31\n", "254 Mark Suciu 30\n", "22 Antonio Durao 29\n", "367 Victor Campillo 27\n", "241 Louie Lopez 25\n", "106 Eetu Toropainen 24\n", "186 John Shanahan 24\n", "67 Chris Athans 24\n", "92 Deedz 21\n", "66 Chima Ferguson 20\n", "166 Jacopo Carozzi 20\n", "109 Elijah Odom 19\n", "189 Jordan Queijo 19\n", "48 Brayan Albarenga 19\n", "60 Carl Aikens 18\n", "184 John Dilo 18\n", "156 Ishod Wair 18\n", "51 Brian O’Dwyer 17\n", "262 Max Palmer 17\n", "54 Brian Reid 17\n", "353 Tom Knox 17\n", "79 Cyrus Bennett 16\n", "378 Yuto Horigome 16\n", "313 Rowan Davis 16" ] }, "execution_count": 184, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top_points.head(25)\n", "# top_points.head(35).to_csv('/Users/peteglover/Desktop/QS_points.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# TOP SKATERS by APPEARANCES" ] }, { "cell_type": "code", "execution_count": 186, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "skater\n", "Tyshawn Jones 6\n", "Victor Campillo 6\n", "John Shanahan 5\n", "Mark Suciu 5\n", "Kyle Wilson 4\n", "Antonio Durao 4\n", "Bear Myles 4\n", "Ishod Wair 4\n", "Chris Athans 4\n", "Deedz 4\n", "Louie Lopez 4\n", "Elijah Odom 3\n", "Rowan Davis 3\n", "Brayan Albarenga 3\n", "Heitor Da Silva 3\n", "Max Palmer 3\n", "Eetu Toropainen 3\n", "Jordan Queijo 3\n", "Dustin Henry 3\n", "Jahmir Brown 3\n", "Brian Reid 3\n", "Maite Steenhoudt 3\n", "Karim Callender 2\n", "Olli Lilja 2\n", "Patrick Zentgraf 2\n", "Name: skater, dtype: int64" ] }, "execution_count": 186, "metadata": {}, "output_type": "execute_result" } ], "source": [ "appearances = skatercount(r\"\").count().sort_values(ascending=False)\n", "appearances.head(25)" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "79" ] }, "execution_count": 160, "metadata": {}, "output_type": "execute_result" } ], "source": [ "yes = [i for i in appearances.values if i >= 2]\n", "len(yes)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Unique skaters in #QSTop10 2021: 382\n" ] } ], "source": [ "print(\"Unique skaters in #QSTop10 2021: {}\".format(len(skatercount(r\"\"))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Total Number of TRICKS" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [], "source": [ "total_tricks = num_tricks['num_tricks'].sum()" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "500" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_tricks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Number of UNIQUE TRICKS" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [], "source": [ "unique_tricks = []\n", "for i in df['trick']:\n", " if i not in unique_tricks:\n", " unique_tricks.append(i)" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "362" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(unique_tricks)" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Percentage Tricks that are Unique: 72.4\n" ] } ], "source": [ "print('Percentage Tricks that are Unique: {}'.format(round(len(unique_tricks)/total_tricks*100, 1)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# TOP TRICKS" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "trick\n", "kickflip 16\n", "360flip 15\n", "ollie 10\n", "fs kickflip 6\n", "hardflip 6\n", "fs 50-50 6\n", "switch heelflip 5\n", "bs wallride 5\n", "bs tailslide 5\n", "bs nosebluntslide 5\n", "bs kickflip 5\n", "switch 360flip 5\n", "switch kickflip 4\n", "bs 50-50 4\n", "fs nosegrind 3\n", "bs lipslide 3\n", "switch fs kickflip 3\n", "nose manual 3\n", "nollie bs heelflip 3\n", "fs lipslide 3\n", "bs 180 3\n", "bs 5-0 3\n", "bs boardslide 3\n", "bs 360 ollie 3\n", "nollie heelflip 3\n", "Name: trick, dtype: int64" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "toptricks = trickgroup(r\"\").count().sort_values(ascending=False)\n", "toptricks.head(25)" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "57" ] }, "execution_count": 168, "metadata": {}, "output_type": "execute_result" } ], "source": [ "yes1 = [i for i in toptricks.values if i >= 2] #i == number of occurances\n", "# tricks happened two or more times\n", "len(yes1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trickfinder" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "trick\n", "nose manual 3\n", "switch ollie to fakie manual to fakie impossible 1\n", "bs shove to nose manual to fs nosegrind to bs 180 1\n", "fs 180 to fakie manual to fakie varial heelflip 1\n", "fakie ollie to fakie manual 1\n", "fakie manual 1\n", "bs smith to manual to bs 180 1\n", "bs smith to bs 180 to switch manual to switch fs 180 1\n", "bs shove to nose manual to nollie varial flip 1\n", "bs shove to nose manual to nollie front shove 1\n", "bs shove to manual to bs 180 1\n", "half cab to nose manual to nollie bs 180 to fakie manual 1\n", "bs noseslide to nose manual to nollie fs shove 1\n", "bs kickflip to switch manual to switch fs shove 1\n", "bs kickflip to switch manual 1\n", "bs heelflip to fakie manual 1\n", "bs 180 to fakie manual to fakie bs 360 1\n", "bs 180 to fakie manual to bs caballerial to switch manual to switch fs 180 1\n", "bs 180 to fakie manual 1\n", "360flip to nose manual 1\n", "Name: trick, dtype: int64" ] }, "execution_count": 169, "metadata": {}, "output_type": "execute_result" } ], "source": [ "trickfind = trickgroup(r\"manual\").count().sort_values(ascending=False)\n", "trickfind.head(20)" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "43" ] }, "execution_count": 170, "metadata": {}, "output_type": "execute_result" } ], "source": [ "yes2 = [i for i in trickfind.values]\n", "sum(yes2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# OBSTACLES" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "obstacle\n", "ledge 168\n", "gap 89\n", "stairs 43\n", "pad 37\n", "flat 34\n", "flat rail 27\n", "handrail 26\n", "hubba 25\n", "wall 23\n", "transition 12\n", "curb 8\n", "bank 5\n", "hip 3\n", "Name: obstacle, dtype: int64" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obstaclecount1(r\"\").count().sort_values(ascending=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# OBSTACLE DETAILS" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "obstacledetail\n", "out ledge 20\n", "into bank 20\n", "over rail 12\n", "curved ledge 9\n", "over rail into bank 7\n", "gap to ledge 7\n", "up stairs 6\n", "curved rail 6\n", "flat gap 6\n", "ledge to ledge 5\n", "ledge to gap 5\n", "banked ledge 5\n", "over barrier 5\n", "over trash can 5\n", "bump over bar 4\n", "bank to ledge 4\n", "over bench 4\n", "street gap 3\n", "pad to stairs 3\n", "big drop 3\n", "bump to gap 3\n", "street quarter 3\n", "gap to curb 3\n", "wall to gap 3\n", "ledge to pad 2\n", "over pad 2\n", "ledge to wall 2\n", "ledge to drop 2\n", "ledge to bank 2\n", "launch ramp 2\n", "handrail to ledge 2\n", "gap to wall 2\n", "gap to hubba 2\n", "concrete park 2\n", "bank to wall 2\n", "gap to ledge into bank 2\n", " 2\n", "up hubba 2\n", "pad to ledge 2\n", "rail to gap 2\n", "uprail 2\n", "wallie to gap 2\n", "handrail to handrail 1\n", "fly out 1\n", "curved up ledge 1\n", "drop in 1\n", "flat bank to curb 1\n", "up ledge 1\n", "flat rail to handrail 1\n", "flat to ledge 1\n", "gap 1\n", "stairs to street gap 1\n", "gap in gap out 1\n", "wall down stairs 1\n", "transition to wall 1\n", "street pole 1\n", "street hip 1\n", "stairs to pad to wall 1\n", "gap to pad 1\n", "pad to drop 1\n", "curved hubba 1\n", "hubba to pad to stairs 1\n", "curved bench 1\n", "bank to rail 1\n", "wall to ledge 1\n", "wall to hubba 1\n", "bench to rail to bench 1\n", "wall to gap to rail to bank 1\n", "bowl 1\n", "wall to curb to bank 1\n", "bump to bar 1\n", "bump to bump 1\n", "bump to car 1\n", "wall to banked ledge 1\n", "bump to ledge 1\n", "bump to pad 1\n", "channel 1\n", "wall gap wall 1\n", "curb cut 1\n", "curb to ledge 1\n", "hubba to curb 1\n", "sphere 1\n", "huge gap 1\n", "over chain 1\n", "on tree 1\n", "onto ledge 1\n", "onto loading dock 1\n", "pool 1\n", "pole to flat rail to into bank 1\n", "pad to pad 1\n", "over bin 1\n", "over car hood 1\n", "over gate 1\n", "pad to bank 1\n", "over hydrant 1\n", "over ledge 1\n", "over like 20 boards 1\n", "pad to gap to bank 1\n", "pad to gap 1\n", "over rail to ledge 1\n", "pad to flat 1\n", "over wall 1\n", "on hydrant 1\n", "off egg 1\n", "miniramp 1\n", "middle rail 1\n", "into fountain 1\n", "into halfpipe 1\n", "kicker 1\n", "kicker to kicker 1\n", "launch 1\n", "ride on 1\n", "launch to ledge 1\n", "ledge into bank 1\n", "rail to rail to rail 1\n", "ledge to curb 1\n", "rail to ledge 1\n", "ledge to flat rail 1\n", "ledge to hubba 1\n", "rail into bank 1\n", "quarter to wall 1\n", "ledge to pad to gap 1\n", "wallride down stairs 1\n", "wavy hubba 1\n", "Name: obstacledetail, dtype: int64" ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" } ], "source": [ "over = obstacledetailcount(r\"\").count().sort_values(ascending=False) #for \"over\" obstacles\n", "over" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "269" ] }, "execution_count": 173, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(i for i in over)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Obstacle Detail Finder" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "obstacledetail\n", "curved ledge 9\n", "curved rail 6\n", "curved up ledge 1\n", "curved hubba 1\n", "curved bench 1\n", "Name: obstacledetail, dtype: int64" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "details = obstacledetailcount(r\"curve\").count().sort_values(ascending=False) #enter whatever detail to track\n", "details.head(40)" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "18" ] }, "execution_count": 175, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(i for i in details)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Top Numbers BY SKATER (IG, Switch, etc.)" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lineswitchslowmoigreplayedslamNY
skater
Tyshawn Jones3.03.02.04.02.01.03.0
Deedz0.00.00.03.00.01.00.0
John Shanahan2.00.00.02.01.00.03.0
Carlos Ribeiro1.02.00.02.01.00.00.0
Ville Wester1.00.00.02.02.00.00.0
Bear Myles3.00.00.02.01.00.00.0
Alexis Lacroix0.01.01.02.01.00.00.0
Casper Brooker0.00.00.02.00.00.00.0
Jahmir Brown1.02.01.02.01.00.00.0
Karsten Kleppan1.00.00.02.00.00.01.0
\n", "
" ], "text/plain": [ " line switch slowmo ig replayed slam NY\n", "skater \n", "Tyshawn Jones 3.0 3.0 2.0 4.0 2.0 1.0 3.0\n", "Deedz 0.0 0.0 0.0 3.0 0.0 1.0 0.0\n", "John Shanahan 2.0 0.0 0.0 2.0 1.0 0.0 3.0\n", "Carlos Ribeiro 1.0 2.0 0.0 2.0 1.0 0.0 0.0\n", "Ville Wester 1.0 0.0 0.0 2.0 2.0 0.0 0.0\n", "Bear Myles 3.0 0.0 0.0 2.0 1.0 0.0 0.0\n", "Alexis Lacroix 0.0 1.0 1.0 2.0 1.0 0.0 0.0\n", "Casper Brooker 0.0 0.0 0.0 2.0 0.0 0.0 0.0\n", "Jahmir Brown 1.0 2.0 1.0 2.0 1.0 0.0 0.0\n", "Karsten Kleppan 1.0 0.0 0.0 2.0 0.0 0.0 1.0" ] }, "execution_count": 176, "metadata": {}, "output_type": "execute_result" } ], "source": [ "byskater = df.groupby('skater').sum()\n", "byskater = byskater.sort_values('ig', ascending=False) # sorts by column HERE\n", "byskater = byskater.drop(columns=['week', 'rank', 'points'])\n", "byskater.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Top Numbers by WEEK (ig, slowmo, etc.)" ] }, { "cell_type": "code", "execution_count": 177, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lineswitchslowmoigreplayedslamNY
week
267.01.02.01.02.01.00.0
227.04.02.02.04.00.02.0
46.01.05.00.05.00.01.0
105.05.01.02.04.00.00.0
365.02.02.00.05.00.00.0
445.02.03.01.03.00.01.0
215.02.04.01.05.00.00.0
185.01.04.00.05.00.01.0
115.00.05.06.03.00.00.0
405.04.02.03.03.00.04.0
\n", "
" ], "text/plain": [ " line switch slowmo ig replayed slam NY\n", "week \n", "26 7.0 1.0 2.0 1.0 2.0 1.0 0.0\n", "22 7.0 4.0 2.0 2.0 4.0 0.0 2.0\n", "4 6.0 1.0 5.0 0.0 5.0 0.0 1.0\n", "10 5.0 5.0 1.0 2.0 4.0 0.0 0.0\n", "36 5.0 2.0 2.0 0.0 5.0 0.0 0.0\n", "44 5.0 2.0 3.0 1.0 3.0 0.0 1.0\n", "21 5.0 2.0 4.0 1.0 5.0 0.0 0.0\n", "18 5.0 1.0 4.0 0.0 5.0 0.0 1.0\n", "11 5.0 0.0 5.0 6.0 3.0 0.0 0.0\n", "40 5.0 4.0 2.0 3.0 3.0 0.0 4.0" ] }, "execution_count": 177, "metadata": {}, "output_type": "execute_result" } ], "source": [ "byweek = df.groupby('week').sum()\n", "byweek = byweek.sort_values('line', ascending=False) # sorts by column, change ascending to get lowest\n", "byweek = byweek.drop(columns=['rank', 'points'])\n", "byweek.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Top SPOTS" ] }, { "cell_type": "code", "execution_count": 178, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location\n", "sf hills 8\n", "milano centrale 8\n", "museum of natural history 5\n", "tompkins tf 5\n", "flushing fountain 5\n", "outdoor park 4\n", "muni 4\n", "outdoor skatepark 3\n", "pier 7 3\n", "max palmer park 3\n", "south bank 3\n", "dirt ride 2\n", "pyramid ledges 2\n", "la city hall 2\n", "indoor skatepark 2\n", "outdoor tf 2\n", "eggs boston 2\n", "tekashi ten 2\n", "hotel de ville 2\n", "times square 2\n", "zuccoti 1\n", "construction debris 1\n", "columbus park 1\n", "dime glory 2018 1\n", "con ed banks 1\n", "central park? 1\n", "clipper 1\n", "citi field benches 1\n", "chicago ledges 1\n", "burnside 1\n", "bobcat 1\n", "blubba 1\n", "berlin polish spot 1\n", "barcelona sants 1\n", "afro banks 1\n", "abandoned waterpark 1\n", "fl triangle 1\n", "la hill gap 1\n", "hollywood high 1\n", "on ice 1\n", "the nipple 1\n", "sydney 1\n", "stalin plaza 1\n", "sombrero 1\n", "round and round 1\n", "pulaski park 1\n", "pulaski 1\n", "ny hubba to ledge thing 1\n", "in a fountain 1\n", "magic five pdx 1\n", "lispenard step to skrell 1\n", "ledge over grate 1\n", "le dome 1\n", "la brick volcano 1\n", "jfk 1\n", "jarmers 1\n", "16th st. bart sf 1\n", "Name: location, dtype: int64" ] }, "execution_count": 178, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spotfind(r\"\").count().sort_values(ascending=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# NOTES" ] }, { "cell_type": "code", "execution_count": 179, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "notes\n", "crazy obstacle 27\n", "triple replay 21\n", "quick footed 18\n", "woman 13\n", "combo 13\n", "5 trick line 12\n", "quadruple replay 3\n", "6 trick line 3\n", "90 degree kink 2\n", "polejam 2\n", "aka bs silas grind 1\n", "9 trick line 1\n", "7 nollie heelflips line 1\n", "incorrect name, corrected 1\n", "cph open 1\n", "dipped 1\n", "double grind 1\n", "double lines for #1 1\n", "double triple replay 1\n", "iconic switch fs heelflip and fs heelflip back to back 1\n", "in memoriam 1\n", "in rain 1\n", "inside skateshop 1\n", "inside 1\n", "real street part 1\n", "vert ramp 1\n", "triple replay & 6 trick line 1\n", "through the corner 1\n", "shorts - no shirt 1\n", "self filmed 1\n", "rewound 1\n", "over 3 barrels 1\n", "very fast 1\n", "on tree trunk 1\n", "on dumpster 1\n", "ny? 1\n", "near hangup 1\n", "misnamed - 2 in one week 1\n", "keyhole 1\n", "4 hardflip line 1\n", "Name: notes, dtype: int64" ] }, "execution_count": 179, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noted(r\"\").count().sort_values(ascending=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Name Game" ] }, { "cell_type": "code", "execution_count": 180, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "skater\n", "AVE 1\n", "Aaron Loreth 2\n", "Adam Zhu 1\n", "Agata Halikowska 1\n", "Aidan Olmstead 1\n", "Aiden Chabiron 1\n", "Akobi Williams 1\n", "Al Hodgson 1\n", "Aldana Bertran 1\n", "Alex Berggren 1\n", "Alex Tennison 1\n", "Alex Tsagka 1\n", "Alexander Hatfield 1\n", "Alexey Krasniy 1\n", "Alexis Lacroix 2\n", "Alexis Ramirez 1\n", "Alexis Sablone 1\n", "Amin Sharif 1\n", "Andre Beverley 1\n", "Andrea Dupree 1\n", "Anthony Gordon 1\n", "Antonio Aiello 1\n", "Antonio Durao 4\n", "Aron Moloney 1\n", "Athen McCrary 1\n", "Austin Heilman 1\n", "Austin Kanfoush 1\n", "Austyn Gilette 1\n", "Avi Malina 1\n", "Axel Berggren 2\n", "Axel Lindquist 1\n", "Ayahiro Uratsuka 2\n", "Bastien Salabanzi 1\n", "Bear Myles 4\n", "Beatrice Domond 1\n", "Ben Blundell 1\n", "Ben Kadow 1\n", "Ben Lawrie 1\n", "Ben Samuels 1\n", "Billy Lukins 1\n", "Billy McFeely 2\n", "Bjarne Tjotta 1\n", "Blake Carpenter 1\n", "Bobby DeKeyzer 2\n", "Bobby Worrest 1\n", "Brad Cromer 1\n", "Braden Hoban 1\n", "Brandon Westgate 1\n", "Brayan Albarenga 3\n", "Breana Geering 1\n", "Brian Gonterman 1\n", "Brian O’Dwyer 2\n", "Brian Panebianco 1\n", "Brian Powderly 1\n", "Brian Reid 3\n", "Brian Scherer 1\n", "Caleb Barnett 1\n", "Caleb McNeely 1\n", "Caleb Yuan 1\n", "Cam Barr 1\n", "Carl Aikens 2\n", "Carlos Ribeiro 2\n", "Casper Brooker 2\n", "Charlie Birch 2\n", "Charlie Cassidy 1\n", "Charlie Munro 2\n", "Chima Ferguson 2\n", "Chris Athans 4\n", "Chris Milic 1\n", "Chris Oliver 1\n", "Christian Henry 1\n", "Cody Chapman 1\n", "Coles Bailey 1\n", "Connor Kammerer 1\n", "Connor Noll 1\n", "Conor Prunty 1\n", "Corey Glick 2\n", "Cruz Mendez 1\n", "Cuz Panebianco 1\n", "Cyrus Bennett 2\n", "Dakota Overbaugh 1\n", "Dane Barker 1\n", "Daniel Kim 1\n", "Daniel Ledermann 1\n", "Danny Brady 1\n", "Darius Trabalza 1\n", "Dashawn Jordan 1\n", "Dave Engerer 1\n", "David Gonzales 1\n", "David Jakinda 1\n", "David Reyes 1\n", "Davis Sarvey 1\n", "Deedz 4\n", "Derek Thor 1\n", "Deric Esparza 1\n", "Dick Rizzo 2\n", "Diego Todd 2\n", "Digby Luxton 1\n", "Dom Henry 1\n", "Drake Johnson 1\n", "Dubann Machuca 1\n", "Dustin Eggeling 1\n", "Dustin Henry 3\n", "Dylan Clark 1\n", "Dylan Witkin 1\n", "Eddie Cernicky 2\n", "Eetu Toropainen 3\n", "Efron 1\n", "Elias Kitt 1\n", "Elijah Odom 3\n", "Elrido Boccacci 1\n", "Emmanuel Guzman 1\n", "Enrique Lorenzo 1\n", "Eppu Vatanen 1\n", "Eric Clark 1\n", "Etienne Gagne 1\n", "Evan Smith 1\n", "Evan Wasser 1\n", "Evon Martinez 1\n", "Fabiana Delfino 1\n", "Felipe Nunes 1\n", "Figgy 1\n", "Flo Mirtain 1\n", "Frankie Decker 1\n", "Frankie Spears 1\n", "Fred Antigene 1\n", "Fred Plocque Santos 1\n", "Gabriel Bjorsvik 1\n", "Gabriel Fortunado 1\n", "Garett Young 1\n", "Gauthier Rouger 1\n", "Genesis Evans 1\n", "Gilbert Crockett 1\n", "Giorgi Balkhamishvili 1\n", "Glen Fox 1\n", "Grady Smith 1\n", "Grant Taylor 1\n", "Gunes Özdogan 1\n", "Gus Gordon 1\n", "Guy Mariano 1\n", "Harry Lintell 2\n", "Hart Pullman 1\n", "Heitor Da Silva 3\n", "Henry Fischer 1\n", "Henry Gartland 1\n", "Herbert Brown 1\n", "Herman Stene 2\n", "Hjalte Halberg 1\n", "Hosea Peeters 1\n", "Hoshito Tamura 1\n", "Hugo Balek 1\n", "Hugo Boserup 2\n", "Hugo Corbin 2\n", "Hyun Kummer 1\n", "Ike Fromme 1\n", "Ish Cepeda 1\n", "Ishod Wair 4\n", "Isn Cepeda 1\n", "Issey Kumatani 1\n", "JP Villa 1\n", "Jaakko Ojanen 1\n", "Jace Detomasso 1\n", "Jack Bartoluccii 1\n", "Jack Kirk 1\n", "Jack Olsen 1\n", "Jack O’Grady 1\n", "Jacopo Carozzi 2\n", "Jahmir Brown 3\n", "Jake Anderson 1\n", "Jake Keenan 1\n", "Jake Sanso 2\n", "Jake Wooten 1\n", "Jamal Smith 1\n", "Jamie Foy 1\n", "Jan Henrik Kongstein 1\n", "Jason Nam 1\n", "Jay Richards 2\n", "Jaïr Gravenberch 1\n", "Jeremy Murray 1\n", "Jesse Boudreau 1\n", "Jirka Hronek 1\n", "Joe Marchese 1\n", "Joey O’Brien 2\n", "Johan Bergljung 1\n", "John Dilo 2\n", "John Gardner 1\n", "John Shanahan 5\n", "Johnny Cumaoglu 1\n", "Jonathan Pierce 1\n", "Jordan Queijo 3\n", "Jordan Trahan 1\n", "Jorge Simoes 1\n", "Joscha Bonez Aicher 1\n", "Josef Scott Jatta 1\n", "Josh Bos 2\n", "Josh Velez 1\n", "Josh Wilson 2\n", "Juan Virues 1\n", "Julian Lewis 1\n", "Junior 1\n", "Justin Anderson 1\n", "Justin Grzechowiak 1\n", "Justin Henry 1\n", "Justin Sommer 1\n", "Kader Sylla 2\n", "Kai Hillebrand 1\n", "Karim Callender 2\n", "Karl Watson 2\n", "Karsten Kleppan 2\n", "Kaue Cossa 1\n", "Keegan McCutchen 1\n", "Keith Denley 1\n", "Kellen James 1\n", "Kelvinas Litvinas 1\n", "Kento Yoshioka 1\n", "Kevin Bilyeu 1\n", "Kevin Braun 1\n", "Kevin Long 1\n", "Kevin Ozcan 1\n", "Kevin Shealy 1\n", "Kevin Taylor 1\n", "Kevin Vietzke 1\n", "Kevin White 1\n", "Kirian Stone 1\n", "Korahn Gayle 1\n", "Kris Brown 1\n", "Kristin Ebeling 1\n", "Kyle McDonald 1\n", "Kyle Nicholson 1\n", "Kyle Walker 1\n", "Kyle Wilson 4\n", "Kyonosuke Yamashita 1\n", "Kyota Umeki 1\n", "Layth Sami 1\n", "Leo Cholet 1\n", "Leo Gutman 1\n", "Leon Chapdelaine 1\n", "Leonardo Favaro 1\n", "Liam McCabe 1\n", "Lilian Fev 1\n", "Logan Da Silva Ortiz 1\n", "Louie Lopez 4\n", "Lucas Languasco 1\n", "Lucas Puig 2\n", "Lucien Clarke 2\n", "Lucien Genand 2\n", "Lukas Bigun 1\n", "Madars Apse 1\n", "Magnus Bordewick 1\n", "Maikol Morales 1\n", "Maite Steenhoudt 3\n", "Marek Zaprazny 1\n", "Mark Del Negro 1\n", "Mark Humienik 2\n", "Mark Suciu 5\n", "Martino Cattaneo 2\n", "Mason Coletti 2\n", "Mason Silva 1\n", "Matt Gottwig 1\n", "Matt Militano 1\n", "Mattia Turco 1\n", "Maurio McCoy 1\n", "Max Palmer 3\n", "Max Van Arnem 1\n", "Max Wasungu 2\n", "Max Wheeler 1\n", "Mecca Jihad Mshaka-Morris 1\n", "Mika Germond 1\n", "Mike Anderson 1\n", "Mikey Payne 1\n", "Mikey Santillan 1\n", "Mitchel Wilson 1\n", "Myles Underwood 1\n", "Myquel Haddox 1\n", "Mátyás Ricsi 1\n", "Na-kel Smith 1\n", "Nassim Lachhab 1\n", "Neil Herrick 1\n", "Nelly Morville 1\n", "Nick Michel 1\n", "Nick Rainey 1\n", "Nick Stansfield 1\n", "Nik Stain 2\n", "Nika Washington 2\n", "Noah Lora 1\n", "Noah Mehieu 1\n", "Nora Vasconcellos 1\n", "Oliver Durou 1\n", "Olli Lilja 2\n", "Oski 1\n", "O’Connor Nelson 1\n", "Patrick Praman 1\n", "Patrick Rogalski 1\n", "Patrick Zentgraf 2\n", "Paul Rodriguez 1\n", "Pedro Attenborough 1\n", "Pedro Delfino 1\n", "Pedro Roseiro 1\n", "Quentin Boillon 2\n", "Rahzel 1\n", "Reece Knobloch 1\n", "Reese Barton 1\n", "Rezza Honarvar 1\n", "Riley Boland 1\n", "Rinku Konishi 2\n", "Rio Morishige 1\n", "Rob Gonyon 1\n", "Rob Maatman 2\n", "Rob Taro 1\n", "Roman Lisivka 2\n", "Roman Pabich 1\n", "Ron Parker 1\n", "Rory Milanes 1\n", "Rowan Davis 3\n", "Ruben Planque 1\n", "Ruben Spelta 1\n", "Ryan Thompson 1\n", "Ryan Townley 1\n", "Salar Kooshki 1\n", "Samuel Norgren 1\n", "Santino Gagliarducci 1\n", "Sean Evans 1\n", "Sean Powderly 1\n", "Sebastianaa Vijebeber 1\n", "Seven Strong 1\n", "Shane Farber 1\n", "Shareef Grady 1\n", "Shaun Paul 1\n", "Shintaro Hongo 1\n", "Silas Baxter-Neal 1\n", "Simon Bannerot 1\n", "Simon Hallberg 1\n", "Smiler 1\n", "Spencer Hamilton 1\n", "Stafhon Boca 2\n", "Stailly Wallaf 1\n", "Stepan Bares 1\n", "Stephen Ostrowski 1\n", "TJ Rogers 2\n", "Taizo Mukk 1\n", "Tania Cruz 1\n", "Tanner Burzinski 1\n", "Taylor Nawrocki 1\n", "Tenzin 1\n", "Terrill Jefferson 1\n", "Thierry Gormit 2\n", "Thomas Dritsas 2\n", "Tiago Lemos 1\n", "Tim Janke 1\n", "Tjerk Oosting 2\n", "Tolya Titaev 1\n", "Tom Belot 1\n", "Tom Botwid 1\n", "Tom Knox 2\n", "Tom Penny 1\n", "Tommy Bjork 1\n", "Tony Gomez 1\n", "Tooth 1\n", "Tremaine Glasgow 1\n", "Troy Gipson 2\n", "Trung Nguyen 1\n", "Ty'Rae Carter 1\n", "Tyler Bledsoe 1\n", "Tyler Dietterich 1\n", "Tyler Hannah 1\n", "Tyler Surrey 1\n", "Tyshawn Jones 6\n", "Victor Campillo 6\n", "Ville Wester 2\n", "Vinicius Costa 1\n", "Vova Pavlov 1\n", "Will Marshall 1\n", "Will Mazzari 1\n", "Willem van Dijk 1\n", "Wilton Souza 1\n", "Yaje Popson 1\n", "Yuri Facchini 1\n", "Yuta Ishizuka 1\n", "Yuto Horigome 2\n", "Zach Allen 1\n", "Zach Moore 1\n", "Zane Timpson 1\n", "Name: skater, dtype: int64" ] }, "execution_count": 180, "metadata": {}, "output_type": "execute_result" } ], "source": [ "names = skatercount(r\"^\").count()\n", "names.sort_index(ascending=True)" ] }, { "cell_type": "code", "execution_count": 181, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "382" ] }, "execution_count": 181, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(names)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 4 }