diff --git a/f23/Cole_Lecture_Notes/26_Files_and_Directories/points.json b/f23/Cole_Lecture_Notes/26_Files_and_Directories/points.json
new file mode 100644
index 0000000000000000000000000000000000000000..809f0d2dd695570d9a9d6134ff061b7ccfe2d043
--- /dev/null
+++ b/f23/Cole_Lecture_Notes/26_Files_and_Directories/points.json
@@ -0,0 +1,3 @@
+{
+  "Cole": 2
+}
\ No newline at end of file
diff --git a/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Solution_Nelson.ipynb b/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Solution_Nelson.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..40b379f3cbbc2643297b3d1906f6b673e6c68c08
--- /dev/null
+++ b/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Solution_Nelson.ipynb
@@ -0,0 +1,1224 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 0: Pandas!\n",
+    "import pandas as pd"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 1: What are your 2 favorite data structures that we have learned so far?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 2: Find the mean, median, mode, and standard deviation\n",
+    "#           of the following list of scores.\n",
+    "my_scores = [44, 32, 19, 67, 23, 23, 92, 47, 47, 78, 84]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Learning Objectives\n",
+    "- Create a pandas Series from a list or from a dict\n",
+    "- Use Series methods max, min, mean, median, mode, quantile, value counts\n",
+    "- Extract elements from a Series using Boolean indexing\n",
+    "- Access Series members using .loc, .iloc, .items, and slicing\n",
+    "- Perform Series element-wise operations"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Pandas"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**What is Pandas?**\n",
+    " - Pandas is a package of tools for doing Data Science\n",
+    " - Pandas was installed with Anaconda, so its on your computers\n",
+    " - [Learn More](https://en.wikipedia.org/wiki/Pandas_(software))\n",
+    " \n",
+    "If for some reason, you don't have pandas installed, run the following command in terminal or powershell...\n",
+    "<pre>pip install pandas</pre>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A Pandas Series is like a combination of a list and a dictionary. The word 'index' is used to describe position.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Series from a `list`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0     44\n",
+       "1     32\n",
+       "2     19\n",
+       "3     67\n",
+       "4     23\n",
+       "5     23\n",
+       "6     92\n",
+       "7     47\n",
+       "8     47\n",
+       "9     78\n",
+       "10    84\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "scores = pd.Series([44, 32, 19, 67, 23, 23, 92, 47, 47, 78, 84])\n",
+    "scores"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A Pandas series acts a lot like a list; you can index and slice."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "67"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "scores[3]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "3    67\n",
+       "4    23\n",
+       "5    23\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "scores[3:6]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "50.54545454545455\n",
+      "47.0\n",
+      "26.051347897426098\n"
+     ]
+    }
+   ],
+   "source": [
+    "## Series calculations\n",
+    "## mean, median, mode, quartiles, sd, count\n",
+    "print(scores.mean())\n",
+    "print(scores.median())\n",
+    "print(scores.std())\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0    23\n",
+      "1    47\n",
+      "dtype: int64\n"
+     ]
+    }
+   ],
+   "source": [
+    "# There could be multiple modes, so mode returns a Series\n",
+    "print(scores.mode())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1.00    92.0\n",
+      "0.75    72.5\n",
+      "0.50    47.0\n",
+      "0.25    27.5\n",
+      "0.00    19.0\n",
+      "dtype: float64\n"
+     ]
+    }
+   ],
+   "source": [
+    "# 5-Number summary\n",
+    "print(scores.quantile([1.0, 0.75, 0.5, 0.25, 0]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "0.9    84.0\n",
+      "0.1    23.0\n",
+      "dtype: float64\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(scores.quantile([0.9, 0.1]))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "`value_counts` creates a series where the index is the data, and the value is its count in the series"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "20    6\n",
+       "19    4\n",
+       "21    3\n",
+       "18    2\n",
+       "23    2\n",
+       "17    1\n",
+       "24    1\n",
+       "25    1\n",
+       "35    1\n",
+       "22    1\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ages = pd.Series([18, 19, 20, 20, 20, 17, 18, 24, 25, 35, 22, 20, 21, 21, 20, 23, 23, 19, 19, 19, 20, 21])\n",
+    "ages.value_counts()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A series can be sorted by index or by values"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "17    1\n",
+       "18    2\n",
+       "19    4\n",
+       "20    6\n",
+       "21    3\n",
+       "22    1\n",
+       "23    2\n",
+       "24    1\n",
+       "25    1\n",
+       "35    1\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ages.value_counts().sort_index()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "20    6\n",
+       "19    4\n",
+       "21    3\n",
+       "18    2\n",
+       "23    2\n",
+       "17    1\n",
+       "24    1\n",
+       "25    1\n",
+       "35    1\n",
+       "22    1\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "ages.value_counts().sort_values(ascending=False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Plotting"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[Text(0.5, 0, 'age'), Text(0, 0.5, 'count')]"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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GsqUKZOv2zl2MW3JkiXVvHlzLV682O/44sWL1bp1a4emAgAANnH0pZ/k5GQ98cQTatGihVq1aqUpU6bowIED+sMf/uDkWAAAwBKOhsrvfvc7HTt2TK+88orS09PVuHFjff3116pRo4aTY/lxu90aO3ZsnpeciptgWEcwrEEKjnUEwxok1mGTYFiDFBzrsG0NLmPy894gAACAouf4R+gDAABcDaECAACsRagAAABrESoAAMBahAoAALAWoQIAAKzl+M/6AYJddna2pk+frpUrVyojI0Mul0uVK1dWmzZt1KtXL5UqVcrpEW/I4cOH9cEHH2jMmDFOj5IvBw8eVNmyZVW6dGm/4zk5OVq1apXuvfdehybLv2PHjmnLli1q1qyZypcvr6NHj+rDDz+U1+tVjx491KBBA6dHDEjt2rW1cOFC1a1b1+lRApKTk6OvvvpKu3btUkxMjB566KFi//fbBnyOymXefPNNPfroo1Z96FwgvvzyS61fv16//e1v1apVK3333XeaOHGicnNz9fDDD+vpp592esR8OXPmjGbMmKHly5crPT1doaGhqlWrlrp3766OHTs6Pd51bdu2Tffff79Onz6tdu3aqXLlyjLGKDMzU8uWLVOpUqW0aNEiNWzY0OlRA7Z582bdcccdunDhgtOjXFN6eroSExOVmpoql8ul3r176/333/cFy+HDhxUbG2v9OtauXavOnTvL4/GobNmyWrx4sXr06KGwsDAZY/Tzzz9r+fLluuOOO5we9areeeedKx5PTk7WiBEjVKVKFUnSkCFDinKsAmvdurW+/vprlS1bVkeOHFHHjh21Y8cO1ahRQ2lpaYqOjtbKlStVtWpVp0fNNytj67o/X/kW43K5TGhoqOnUqZOZOXOm8Xq9To9UYJMnTzZhYWGmefPmJioqynz66acmMjLS9O/f3wwcONBERESYSZMmOT3mde3atcvUqFHDVKhQwcTExBiXy2UeeOABc9ddd5nQ0FDTo0cPk5OT4/SY19S+fXvTs2fPK/458nq9plevXqZ9+/YOTJZ/mzdvvuY2a9YsExIS4vSY19WnTx9z9913m3Xr1pnFixebFi1amObNm5vjx48bY4zJyMgwLpfL4Smvr1OnTqZ///7G4/GYN954w1SrVs3079/fd75fv36me/fuDk54fS6Xy1SrVs3UrFnTb3O5XKZq1aqm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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "## Series bar chart\n",
+    "age_plot = ages.value_counts().sort_index().plot.bar(color='lightsalmon')\n",
+    "age_plot.set(xlabel = \"age\", ylabel = \"count\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Filtering\n",
+    " - & means 'and'\n",
+    " - | means 'or'\n",
+    " - ~ means 'not'\n",
+    " - we must use () for compound boolean expressions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0     18\n",
+       "1     19\n",
+       "2     20\n",
+       "3     20\n",
+       "4     20\n",
+       "6     18\n",
+       "11    20\n",
+       "14    20\n",
+       "17    19\n",
+       "18    19\n",
+       "19    19\n",
+       "20    20\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# What ages are in the range 18 to 20, inclusive?\n",
+    "certain_students = ages[(ages >= 18) & (ages <= 20)]\n",
+    "certain_students"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.5454545454545454"
+      ]
+     },
+     "execution_count": 16,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# What percentage of students are in this age range?\n",
+    "len(certain_students) / len(ages)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.36363636363636365"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# What percentage of students are ages 18 OR 21?\n",
+    "stu_18_or_21 = ages[(ages == 18) | (ages == 20)]\n",
+    "len(stu_18_or_21) / len(ages)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.8181818181818182"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# what percentage of students are NOT 19? \n",
+    "stu_not_19 = ages [~(ages==19)]\n",
+    "len(stu_not_19) / len(ages)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "20    6\n",
+      "19    4\n",
+      "21    3\n",
+      "18    2\n",
+      "23    2\n",
+      "17    1\n",
+      "24    1\n",
+      "25    1\n",
+      "35    1\n",
+      "22    1\n",
+      "dtype: int64\n",
+      "21    6\n",
+      "20    4\n",
+      "22    3\n",
+      "19    2\n",
+      "24    2\n",
+      "18    1\n",
+      "25    1\n",
+      "26    1\n",
+      "36    1\n",
+      "23    1\n",
+      "dtype: int64\n"
+     ]
+    }
+   ],
+   "source": [
+    "# One more thing....we can perform an operation on all values in a Series\n",
+    "# Let's add 1 to everyone's age\n",
+    "print(ages.value_counts())\n",
+    "ages = ages + 1\n",
+    "print(ages.value_counts())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "886\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "[['15',\n",
+       "  'Pidgey',\n",
+       "  '45',\n",
+       "  '40',\n",
+       "  '40',\n",
+       "  'Kanto',\n",
+       "  '35',\n",
+       "  '35',\n",
+       "  '56',\n",
+       "  'Normal',\n",
+       "  'Flying'],\n",
+       " ['16',\n",
+       "  'Pidgeotto',\n",
+       "  '60',\n",
+       "  '55',\n",
+       "  '63',\n",
+       "  'Kanto',\n",
+       "  '50',\n",
+       "  '50',\n",
+       "  '71',\n",
+       "  'Normal',\n",
+       "  'Flying'],\n",
+       " ['17',\n",
+       "  'Pidgeot',\n",
+       "  '80',\n",
+       "  '75',\n",
+       "  '83',\n",
+       "  'Kanto',\n",
+       "  '70',\n",
+       "  '70',\n",
+       "  '101',\n",
+       "  'Normal',\n",
+       "  'Flying']]"
+      ]
+     },
+     "execution_count": 20,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Modified from https://automatetheboringstuff.com/chapter14/\n",
+    "import csv\n",
+    "def process_csv(filename):\n",
+    "    example_file = open(filename, encoding=\"utf-8\")\n",
+    "    example_reader = csv.reader(example_file)\n",
+    "    example_data = list(example_reader)\n",
+    "    example_file.close()\n",
+    "    return example_data\n",
+    "\n",
+    "data = process_csv(\"pokemon_stats.csv\")\n",
+    "header = data[0]\n",
+    "print(len(data))\n",
+    "data = data[1:]\n",
+    "data[15:18]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0       Bulbasaur\n",
+       "1         Ivysaur\n",
+       "2        Venusaur\n",
+       "3      Charmander\n",
+       "4      Charmeleon\n",
+       "          ...    \n",
+       "880     Regieleki\n",
+       "881     Regidrago\n",
+       "882     Glastrier\n",
+       "883     Spectrier\n",
+       "884       Calyrex\n",
+       "Length: 885, dtype: object"
+      ]
+     },
+     "execution_count": 21,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Create a Series of all the Pokemon names.\n",
+    "pokemon_list = [row[1] for row in data]\n",
+    "pokemons = pd.Series(pokemon_list)\n",
+    "pokemons"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0       45\n",
+       "1       60\n",
+       "2       80\n",
+       "3       39\n",
+       "4       58\n",
+       "      ... \n",
+       "880     80\n",
+       "881    200\n",
+       "882    100\n",
+       "883    100\n",
+       "884    100\n",
+       "Length: 885, dtype: int64"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Create a Series of all the Pokemon HPs.\n",
+    "hp_list = [int(row[4]) for row in data]\n",
+    "hps = pd.Series(hp_list)\n",
+    "hps"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0    60\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 23,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Find the most common HP\n",
+    "hps.mode()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "74"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Find how many pokemon have that most common hp\n",
+    "len(hps[hps == hps.mode()[0]])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "427"
+      ]
+     },
+     "execution_count": 25,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# How many Pokemon have HP between 50 and 75 (inclusive)? \n",
+    "len(hps[(hps >= 50) & (hps <= 75)])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "47       Diglett\n",
+       "60          Abra\n",
+       "78     Magnemite\n",
+       "124     Magikarp\n",
+       "167        Pichu\n",
+       "208      Shuckle\n",
+       "275        Ralts\n",
+       "287     Shedinja\n",
+       "344       Feebas\n",
+       "350      Duskull\n",
+       "760       Wimpod\n",
+       "812      Blipbug\n",
+       "871       Dreepy\n",
+       "dtype: object"
+      ]
+     },
+     "execution_count": 26,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# What are the names of weak pokemon (<30 HP)?\n",
+    "weak_hps_idx = hps[hps < 30].index\n",
+    "pokemons[weak_hps_idx]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "237      Blissey\n",
+       "109      Chansey\n",
+       "787     Guzzlord\n",
+       "881    Regidrago\n",
+       "197    Wobbuffet\n",
+       "         ...    \n",
+       "350      Duskull\n",
+       "124     Magikarp\n",
+       "208      Shuckle\n",
+       "47       Diglett\n",
+       "287     Shedinja\n",
+       "Length: 885, dtype: object"
+      ]
+     },
+     "execution_count": 27,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# What are the names of the pokemon from strongest to weakest (using health)?\n",
+    "all_hps_desc = hps.sort_values(ascending=False)\n",
+    "pokemons[all_hps_desc.index]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Series from a `dict`\n",
+    "A Series is a cross between a list and a dict, so we can make a series from a dict as well"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 28,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Chris      10\n",
+      "Kiara       3\n",
+      "Mikayla     7\n",
+      "Ann         8\n",
+      "Trish       6\n",
+      "dtype: int64\n"
+     ]
+    }
+   ],
+   "source": [
+    "## Series from a dict\n",
+    "game1points = pd.Series({\"Chris\": 10, \"Kiara\": 3, \"Mikayla\": 7, \"Ann\": 8, \"Trish\": 6})\n",
+    "print(game1points)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Kiara       7\n",
+      "Chris       3\n",
+      "Trish      11\n",
+      "Mikayla     2\n",
+      "Ann         5\n",
+      "dtype: int64\n"
+     ]
+    }
+   ],
+   "source": [
+    "game2points = pd.Series({\"Kiara\": 7, \"Chris\": 3,  \"Trish\": 11, \"Mikayla\": 2, \"Ann\": 5})\n",
+    "print(game2points)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Ann        13\n",
+       "Chris      13\n",
+       "Kiara      10\n",
+       "Mikayla     9\n",
+       "Trish      17\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Pandas can perform operations on two series by matching up their indices\n",
+    "total = game1points  + game2points\n",
+    "total"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "17\n",
+      "Trish\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Who has the most points?\n",
+    "print(total.max())\n",
+    "print(total.idxmax())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "10 10\n"
+     ]
+    }
+   ],
+   "source": [
+    "# We can use [] to name the index or by its sequence number\n",
+    "print(total['Kiara'], total[2])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 33,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Chris    13\n",
+       "Trish    17\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 33,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# We can have multi-indexing....slightly different from slicing\n",
+    "total[[\"Chris\", \"Trish\"]]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 34,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Trish      17\n",
+       "Ann        13\n",
+       "Chris      13\n",
+       "Kiara      10\n",
+       "Mikayla     9\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 34,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "total_sorted = total.sort_values(ascending=False)\n",
+    "total_sorted"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Text(0, 0.5, 'total points')"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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tt4tAABAnrP6GqO+fftq/Pjx2Ro7YcIE9e3b19qPAgAAsAuri9GMGTO0fPnybI1duXKlZs6cae1HAQAA2IXVxSgnUlNT5eFhl48CAACwWp63lbS0NEVHRysgICCvPwoAACBXsn3xdWRkpDZu3Jhp29mzZzVq1Kj7vicpKUnbtm3ThQsX1KZNG6tDAgAA2EO2i9GGDRs0cuRIGYYhk8kk6U4xev/99x/43mLFimVZoAAAAJxBtotR06ZNLb82mUwaNWqUQkND1adPn3uONwxDfn5+CgsLU6tWrVSkSJFchwUAAMhL2S5GTZo0UZMmTSzPM4rRiBEj8iQYAACAvVk9wWN6erotcwAAADicTe9KS0xMVFxcnBITE225WwAAALvIdTE6ePCgevfureDgYPn7+6ts2bLy9/dXcHCw+vbtq4MHD9oiJwAAQJ7LVTGaPn266tatq9mzZ+vChQsymUyWx4ULFzRjxgzVrVtX06dPt1VeAACAPGN1Mdq5c6deeeUV3b59W23atNGqVat07tw5paSk6Ny5c1q1apXatm2r27dv69VXX9Wvv/5qy9wAAAA2Z3Uxmjhxokwmk8aOHatly5apZcuWCg4Olqenp4KDg9WyZUstW7ZM48ePV1pamiZOnGjL3AAAADZndTHasmWLSpQoobfeeivLcUOGDFFQUJA2b95s7UcBAADYhdXF6Pfff1e5cuUeOM4wDJUrV07Xr1+39qMAAADswupiFBQUpJMnTyo1NTXLcSkpKTp58qQCAwOt/SgAAAC7sLoYNW3aVNevX9ewYcOyHDds2DBdv35dTz31lLUfBQAAYBdWz3wdERGh77//XpMmTdKmTZv02muvqXr16goKCtKlS5d0+PBhffbZZ9q/f7+8vb0feC0SAACAo1ldjKpXr64FCxaoZ8+e2rt3r/r373/XGJPJpKJFi2r27NmqXr16roLmRlpamr755ht99913OnTokBITE1WyZEnVrl1bffr0UYcOHRyWDQAAOA+ri5EkPfvsszpy5Ig+//xzrVmzRsePH1diYqIKFy6sypUr6+mnn9bAgQNVunRpW+XNsd9//11t27bVjh07ZBiGKleurPLly+v8+fNavHixChQoQDECAACSclmMJKl06dIaM2aMxowZY4s8NpWenq5nn31WO3bsUMeOHTV58mSVLVvW8vq5c+cUHR3twIQAAMCZWF2MIiMj5e/vr1q1aj1w7IEDB3T9+nU1btzY2o+zypQpU7RlyxY1a9ZMixYtkodH5mvNy5Ytm6koAQAA95aru9L+7//+L1tjX3/9dYfclTZ58mRJ0ujRo+8qRQAAAH+Vq1NpJpMpT8bawokTJ3T06FEVL15c9evX1+LFi7Vo0SLFxcWpRIkSatGihXr06CEfHx+75gIAAM4r19cYZcfVq1fl5+dnj4+y2LNnjySpatWq6tGjh+bMmZPp9QULFuijjz7SypUrszWDNwAAcH3ZLkYJCQl3LeuRnJys2NjY+x4NSkpK0qZNm3Tw4MFsXYtkS3FxcZKkXbt2adu2berfv7+GDx+uUqVKacuWLRowYICOHj2qTp066ddff73vqbbk5GQlJydbnickJNglPwAAsL9sF6NPPvlEo0aNyrRt9+7dKl++fLbe369fvxwFy60//vhD0p0lSRo1aqSpU6daXmvevLl+/PFH1a5dW3v27NEvv/yiZ5555p77GTdunEaOHGmXzAAAwLGyXYwCAgIUGhpqeX727Fl5e3urVKlS9xxvGIb8/PwUFhamF198Ud27d8992hzw9fW1/Pr111+/6/VatWqpWbNmWr9+vVauXHnfYhQREaF//vOflucJCQkKCQmxfWAAAOBw2S5Gr7/+eqaC4eHhofDwcEVGRuZJsNwqVqyY5ddVq1a955hq1app/fr1iomJue9+fHx8uEAbAAA3YfXF199++61Klixpyyw2VaVKFcuv71dsMranpaXZJRMAAHBuVhejXr162TKHzdWuXVu+vr66deuWoqOjValSpbvGZMx6XaZMGXvHAwAATshlZz0sVKiQ2rZtK0maOXPmXa9fuHBBq1atkiSHTD4JAACcj8sWI0l677335Onpqfnz52cqR9evX1fv3r2VlJSksLAwde7c2YEpAQCAs3DpYlSrVi199tlnMplM6t27t8qVK6fw8HCVKVNGq1atUmBgoH744Qd5e3s7OioAAHACLl2MJOnVV1/Vpk2b9Mwzz+jmzZs6cOCAgoKC9Nprr2n//v169NFHHR0RAAA4CbssCeJojRo1UqNGjRwdAwAAODmXP2IEAACQXRQjAAAAM4oRAACAGcUIAADAjGIEAABgRjECAAAwoxgBAACYUYwAAADMKEYAAABmFCMAAAAzihEAAIAZxQgAAMCMYgQAAGBG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fzu7sLJly/IPsJM4fPiwSpQoobFjxzo6CiRdvnxZDz/8cKZtGzZskMlkUteuXeXr6ytJaty4scqVK6cjR444IqbbiI2NVaNGjXT16lU1bNhQx48f1+XLl9W1a1fFxsbqyJEjunz5svz8/NSxY0f+Xstjhw8fVps2bZSSkqJu3bpp06ZNOnfunN5++23FxsYqKipKUVFR8vPz08CBA1WkSBFHR7YpjuO7sG7duunw4cM6deqUo6O4vUKFCik0NNTRMWB2+/btu37C3bx5swzDULNmzTJtL1mypOLi4uwZz+2MGzdOV69e1dixYxUZGWkprbNnz9bGjRv122+/6auvvpKXl5fi4uI0depUByd2bePHj9etW7f09ddfa9asWZa/u0aPHq0ZM2Zo3759WrlypYoXL65Vq1bpX//6l4MT2xbFyIW9/fbbatiwof7+979r3759jo7j1po2barjx4/r9u3bjo4CSWXKlNGpU6d08+ZNy7aVK1eqQIECatCgQaaxN27ckL+/v70jupXVq1ercOHCevPNN+/5eoECBTRgwADNnz9f69ev14QJE+yc0L1s3LhR/v7+6tWr133HtGrVSj/++KMOHTqkUaNG2TFd3uMaIxfRt2/fe25PSUnRwoULlZaWpkcffVQVK1ZUoUKF7jnWMAxNnz49L2O6rWPHjik8PFx9+/bVpEmTHB3H7b3yyiuaNm2aevfurTfffFPff/+9Ro0apaefflorVqywjEtKSpK/v79q1aqlXbt2OTCxa/Pz81PlypUVFRUl6c4PEps3b9bNmzfl4+OTaWxYWJj8/Px06NAhR0R1C76+vqpevbr27t0rSWrWrJkiIyOVmJgoPz+/TGOrVaumlJQUnTx50hFR8wQnal1Edm4n3rt3r+U/9HuhGOWdixcv6v3331dERIQ2b96sPn36ZFlSJd11xxRs55133tGPP/6oGTNmaMaMGTKZTPLy8tLIkSMzjVu6dKlSU1PVqFEjByV1DwULFsx03VDGEbrffvtNYWFhmcYGBATo2LFjds3nbvz9/TOdai5evLgk6cyZM6patWqmsd7e3oqJibFnvDxHMXIR3377raMjIAtNmzaVYRgymUzat2+f9u/fn+V4wzCUmppqn3BuKDQ0VLt379aHH36okydPKiQkRK+99ppq1aqVadzGjRtVq1YtdejQwUFJ3UNISEim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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "ax = total_sorted.plot.bar(color=\"green\", fontsize=16)\n",
+    "ax.set_ylabel(\"total points\", fontsize=16)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## More things to know about Series\n",
+    "Next time, we'll get into more ways to access data using `loc` and `iloc`.\n",
+    "\n",
+    "We'll also talk about `DataFrame`, which is a series of series (like a spreadsheet!)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "Chris      10\n",
+       "Kiara       3\n",
+       "Mikayla     7\n",
+       "Ann         8\n",
+       "Trish       6\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 36,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "game1points"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7"
+      ]
+     },
+     "execution_count": 37,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "game1points.iloc[2] # looks up by integer position"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 38,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "7"
+      ]
+     },
+     "execution_count": 38,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "game1points.loc[\"Mikayla\"] # looks up by pandas index"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 39,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1     89\n",
+       "2    104\n",
+       "3    681\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 39,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_new_series = pd.Series({1: 89, 2: 104, 3: 681}) # this can be tricky!\n",
+    "my_new_series"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 40,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "104"
+      ]
+     },
+     "execution_count": 40,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_new_series.iloc[1] # by integer position"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "89"
+      ]
+     },
+     "execution_count": 41,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_new_series.loc[1] # by index"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 42,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "89"
+      ]
+     },
+     "execution_count": 42,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_new_series[1] # by index!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 43,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "2    104\n",
+       "3    681\n",
+       "dtype: int64"
+      ]
+     },
+     "execution_count": 43,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_new_series[my_new_series > 100] # ... and also boolean masking!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Feel overwhelmed? Do the required reading. Pandas operations are good to put on your notesheet."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.11.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Template_Nelson.ipynb b/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Template_Nelson.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..595718dbf87f824f71a68c3dcc4958f82cdda4b1
--- /dev/null
+++ b/f23/Cole_Lecture_Notes/27_Pandas1/Lec27_Pandas1_Template_Nelson.ipynb
@@ -0,0 +1,563 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 0: Pandas!\n",
+    "import pandas as pd"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 1: What are your 2 favorite data structures that we have learned so far?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Warmup 2: Find the mean, median, mode, and standard deviation\n",
+    "#           of the following list of scores.\n",
+    "my_scores = [44, 32, 19, 67, 23, 23, 92, 47, 47, 78, 84]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Learning Objectives\n",
+    "- Create a pandas Series from a list or from a dict\n",
+    "- Use Series methods max, min, mean, median, mode, quantile, value counts\n",
+    "- Extract elements from a Series using Boolean indexing\n",
+    "- Access Series members using .loc, .iloc, .items, and slicing\n",
+    "- Perform Series element-wise operations"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Pandas"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**What is Pandas?**\n",
+    " - Pandas is a package of tools for doing Data Science\n",
+    " - Pandas was installed with Anaconda, so its on your computers\n",
+    " - [Learn More](https://en.wikipedia.org/wiki/Pandas_(software))\n",
+    "\n",
+    "If for some reason, you don't have pandas installed, run the following command in terminal or powershell...\n",
+    "<pre>pip install pandas</pre>"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A Pandas Series is like a combination of a list and a dictionary. The word 'index' is used to describe position.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Series from a `list`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "scores = pd.Series([44, 32, 19, 67, 23, 23, 92, 47, 47, 78, 84])\n",
+    "scores"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A Pandas series acts a lot like a list; you can index and slice."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "scores[3]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "scores[3:6]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "## Series calculations\n",
+    "## mean, median, mode, quartiles, sd, count\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# There could be multiple modes, so mode returns a Series\n",
+    "print(scores.mode())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# 5-Number summary\n",
+    "print(scores.quantile([1.0, 0.75, 0.5, 0.25, 0]))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "print(scores.quantile([0.9, 0.1]))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "`value_counts` creates a series where the index is the data, and the value is its count in the series"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ages = pd.Series([18, 19, 20, 20, 20, 17, 18, 24, 25, 35, 22, 20, 21, 21, 20, 23, 23, 19, 19, 19, 20, 21])\n",
+    "ages.value_counts()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A series can be sorted by index or by values"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ages.value_counts().sort_index()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ages.value_counts().sort_values(ascending=False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Plotting"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "## Series bar chart\n",
+    "age_plot = ages.value_counts().sort_index().plot.bar(color='lightsalmon')\n",
+    "age_plot.set(xlabel = \"age\", ylabel = \"count\")"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Filtering\n",
+    " - & means 'and'\n",
+    " - | means 'or'\n",
+    " - ~ means 'not'\n",
+    " - we must use () for compound boolean expressions"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What ages are in the range 18 to 20, inclusive?\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What percentage of students are in this age range?\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What percentage of students are ages 18 OR 21?\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# what percentage of students are NOT 19? \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# One more thing....we can perform an operation on all values in a Series\n",
+    "# Let's add 1 to everyone's age\n",
+    "print(ages.value_counts())\n",
+    "ages = ages + 1\n",
+    "print(ages.value_counts())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Modified from https://automatetheboringstuff.com/chapter14/\n",
+    "import csv\n",
+    "def process_csv(filename):\n",
+    "    example_file = open(filename, encoding=\"utf-8\")\n",
+    "    example_reader = csv.reader(example_file)\n",
+    "    example_data = list(example_reader)\n",
+    "    example_file.close()\n",
+    "    return example_data\n",
+    "\n",
+    "data = process_csv(\"pokemon_stats.csv\")\n",
+    "header = data[0]\n",
+    "print(len(data))\n",
+    "data = data[1:]\n",
+    "data[15:18]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a Series of all the Pokemon names.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a Series of all the Pokemon HPs.\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Find the most common HP\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Find how many pokemon have that most common hp\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# How many Pokemon have HP between 50 and 75 (inclusive)? \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What are the names of weak pokemon (<30 HP)?\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What are the names of the pokemon from strongest to weakest (using health)?\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Series from a `dict`\n",
+    "A Series is a cross between a list and a dict, so we can make a series from a dict as well"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "## Series from a dict\n",
+    "game1points = pd.Series({\"Chris\": 10, \"Kiara\": 3, \"Mikayla\": 7, \"Ann\": 8, \"Trish\": 6})\n",
+    "print(game1points)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "game2points = pd.Series({\"Kiara\": 7, \"Chris\": 3,  \"Trish\": 11, \"Mikayla\": 2, \"Ann\": 5})\n",
+    "print(game2points)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Pandas can perform operations on two series by matching up their indices\n",
+    "total = game1points  + game2points\n",
+    "total"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Who has the most points?\n",
+    "print(total.max())\n",
+    "print(total.idxmax())"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# We can use [] to name the index or by its sequence number\n",
+    "print(total['Kiara'], total[2])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# We can have multi-indexing....slightly different from slicing\n",
+    "total[[\"Chris\", \"Trish\"]]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "total_sorted = total.sort_values(ascending=False)\n",
+    "total_sorted"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ax = total_sorted.plot.bar(color=\"green\", fontsize=16)\n",
+    "ax.set_ylabel(\"total points\", fontsize=16)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## More things to know about Series\n",
+    "Next time, we'll get into more ways to access data using `loc` and `iloc`.\n",
+    "\n",
+    "We'll also talk about `DataFrame`, which is a series of series (like a spreadsheet!)\n",
+    "\n",
+    "Feel overwhelmed? Do the required reading & worksheet. Pandas operations are good to put on your notesheet."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "game1points"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "game1points.iloc[2] # looks up by integer position"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "game1points.loc[\"Mikayla\"] # looks up by pandas index"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "my_new_series = pd.Series({1: 89, 2: 104, 3: 681}) # this can be tricky!\n",
+    "my_new_series"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "my_new_series.iloc[1] # by integer position"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "my_new_series.loc[1] # by index"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "my_new_series[1] # by index!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "my_new_series[my_new_series > 100] # ... and also boolean masking!"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Feel overwhelmed? Do the required reading. Pandas operations are good to put on your notesheet."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "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.11.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/f23/Cole_Lecture_Notes/27_Pandas1/pokemon_stats.csv b/f23/Cole_Lecture_Notes/27_Pandas1/pokemon_stats.csv
new file mode 100644
index 0000000000000000000000000000000000000000..70a1e77df16938eae9269e2e6c2f516b1423ea40
--- /dev/null
+++ b/f23/Cole_Lecture_Notes/27_Pandas1/pokemon_stats.csv
@@ -0,0 +1,886 @@
+,Name,Attack,Defense,HP,Region,Sp. Atk,Sp. Def,Speed,Type 1,Type 2
+0,Bulbasaur,49,49,45,Kanto,65,65,45,Grass,Poison
+1,Ivysaur,62,63,60,Kanto,80,80,60,Grass,Poison
+2,Venusaur,82,83,80,Kanto,100,100,80,Grass,Poison
+3,Charmander,52,43,39,Kanto,60,50,65,Fire,None
+4,Charmeleon,64,58,58,Kanto,80,65,80,Fire,None
+5,Charizard,84,78,78,Kanto,109,85,100,Fire,Flying
+6,Squirtle,48,65,44,Kanto,50,64,43,Water,None
+7,Wartortle,63,80,59,Kanto,65,80,58,Water,None
+8,Blastoise,83,100,79,Kanto,85,105,78,Water,None
+9,Caterpie,30,35,45,Kanto,20,20,45,Bug,None
+10,Metapod,20,55,50,Kanto,25,25,30,Bug,None
+11,Butterfree,45,50,60,Kanto,90,80,70,Bug,Flying
+12,Weedle,35,30,40,Kanto,20,20,50,Bug,Poison
+13,Kakuna,25,50,45,Kanto,25,25,35,Bug,Poison
+14,Beedrill,90,40,65,Kanto,45,80,75,Bug,Poison
+15,Pidgey,45,40,40,Kanto,35,35,56,Normal,Flying
+16,Pidgeotto,60,55,63,Kanto,50,50,71,Normal,Flying
+17,Pidgeot,80,75,83,Kanto,70,70,101,Normal,Flying
+18,Rattata,56,35,30,Kanto,25,35,72,Normal,None
+19,Raticate,81,60,55,Kanto,50,70,97,Normal,None
+20,Spearow,60,30,40,Kanto,31,31,70,Normal,Flying
+21,Fearow,90,65,65,Kanto,61,61,100,Normal,Flying
+22,Ekans,60,44,35,Kanto,40,54,55,Poison,None
+23,Arbok,95,69,60,Kanto,65,79,80,Poison,None
+24,Pikachu,55,40,35,Kanto,50,50,90,Electric,None
+25,Raichu,90,55,60,Kanto,90,80,110,Electric,None
+26,Sandshrew,75,85,50,Kanto,20,30,40,Ground,None
+27,Sandslash,100,110,75,Kanto,45,55,65,Ground,None
+28,Nidorina,62,67,70,Kanto,55,55,56,Poison,None
+29,Nidoqueen,92,87,90,Kanto,75,85,76,Poison,Ground
+30,Nidorino,72,57,61,Kanto,55,55,65,Poison,None
+31,Nidoking,102,77,81,Kanto,85,75,85,Poison,Ground
+32,Clefairy,45,48,70,Kanto,60,65,35,Fairy,None
+33,Clefable,70,73,95,Kanto,95,90,60,Fairy,None
+34,Vulpix,41,40,38,Kanto,50,65,65,Fire,None
+35,Ninetales,76,75,73,Kanto,81,100,100,Fire,None
+36,Jigglypuff,45,20,115,Kanto,45,25,20,Normal,Fairy
+37,Wigglytuff,70,45,140,Kanto,85,50,45,Normal,Fairy
+38,Zubat,45,35,40,Kanto,30,40,55,Poison,Flying
+39,Golbat,80,70,75,Kanto,65,75,90,Poison,Flying
+40,Oddish,50,55,45,Kanto,75,65,30,Grass,Poison
+41,Gloom,65,70,60,Kanto,85,75,40,Grass,Poison
+42,Vileplume,80,85,75,Kanto,110,90,50,Grass,Poison
+43,Paras,70,55,35,Kanto,45,55,25,Bug,Grass
+44,Parasect,95,80,60,Kanto,60,80,30,Bug,Grass
+45,Venonat,55,50,60,Kanto,40,55,45,Bug,Poison
+46,Venomoth,65,60,70,Kanto,90,75,90,Bug,Poison
+47,Diglett,55,25,10,Kanto,35,45,95,Ground,None
+48,Dugtrio,100,50,35,Kanto,50,70,120,Ground,None
+49,Meowth,45,35,40,Kanto,40,40,90,Normal,None
+50,Persian,70,60,65,Kanto,65,65,115,Normal,None
+51,Psyduck,52,48,50,Kanto,65,50,55,Water,None
+52,Golduck,82,78,80,Kanto,95,80,85,Water,None
+53,Mankey,80,35,40,Kanto,35,45,70,Fighting,None
+54,Primeape,105,60,65,Kanto,60,70,95,Fighting,None
+55,Growlithe,70,45,55,Kanto,70,50,60,Fire,None
+56,Arcanine,110,80,90,Kanto,100,80,95,Fire,None
+57,Poliwag,50,40,40,Kanto,40,40,90,Water,None
+58,Poliwhirl,65,65,65,Kanto,50,50,90,Water,None
+59,Poliwrath,95,95,90,Kanto,70,90,70,Water,Fighting
+60,Abra,20,15,25,Kanto,105,55,90,Psychic,None
+61,Kadabra,35,30,40,Kanto,120,70,105,Psychic,None
+62,Alakazam,50,45,55,Kanto,135,95,120,Psychic,None
+63,Machop,80,50,70,Kanto,35,35,35,Fighting,None
+64,Machoke,100,70,80,Kanto,50,60,45,Fighting,None
+65,Machamp,130,80,90,Kanto,65,85,55,Fighting,None
+66,Bellsprout,75,35,50,Kanto,70,30,40,Grass,Poison
+67,Weepinbell,90,50,65,Kanto,85,45,55,Grass,Poison
+68,Victreebel,105,65,80,Kanto,100,70,70,Grass,Poison
+69,Tentacool,40,35,40,Kanto,50,100,70,Water,Poison
+70,Tentacruel,70,65,80,Kanto,80,120,100,Water,Poison
+71,Geodude,80,100,40,Kanto,30,30,20,Rock,Ground
+72,Graveler,95,115,55,Kanto,45,45,35,Rock,Ground
+73,Golem,120,130,80,Kanto,55,65,45,Rock,Ground
+74,Ponyta,85,55,50,Kanto,65,65,90,Fire,None
+75,Rapidash,100,70,65,Kanto,80,80,105,Fire,None
+76,Slowpoke,65,65,90,Kanto,40,40,15,Water,Psychic
+77,Slowbro,75,110,95,Kanto,100,80,30,Water,Psychic
+78,Magnemite,35,70,25,Kanto,95,55,45,Electric,Steel
+79,Magneton,60,95,50,Kanto,120,70,70,Electric,Steel
+80,Doduo,85,45,35,Kanto,35,35,75,Normal,Flying
+81,Dodrio,110,70,60,Kanto,60,60,110,Normal,Flying
+82,Seel,45,55,65,Kanto,45,70,45,Water,None
+83,Dewgong,70,80,90,Kanto,70,95,70,Water,Ice
+84,Grimer,80,50,80,Kanto,40,50,25,Poison,None
+85,Muk,105,75,105,Kanto,65,100,50,Poison,None
+86,Shellder,65,100,30,Kanto,45,25,40,Water,None
+87,Cloyster,95,180,50,Kanto,85,45,70,Water,Ice
+88,Gastly,35,30,30,Kanto,100,35,80,Ghost,Poison
+89,Haunter,50,45,45,Kanto,115,55,95,Ghost,Poison
+90,Gengar,65,60,60,Kanto,130,75,110,Ghost,Poison
+91,Onix,45,160,35,Kanto,30,45,70,Rock,Ground
+92,Drowzee,48,45,60,Kanto,43,90,42,Psychic,None
+93,Hypno,73,70,85,Kanto,73,115,67,Psychic,None
+94,Krabby,105,90,30,Kanto,25,25,50,Water,None
+95,Kingler,130,115,55,Kanto,50,50,75,Water,None
+96,Voltorb,30,50,40,Kanto,55,55,100,Electric,None
+97,Electrode,50,70,60,Kanto,80,80,150,Electric,None
+98,Exeggcute,40,80,60,Kanto,60,45,40,Grass,Psychic
+99,Exeggutor,95,85,95,Kanto,125,75,55,Grass,Psychic
+100,Cubone,50,95,50,Kanto,40,50,35,Ground,None
+101,Marowak,80,110,60,Kanto,50,80,45,Ground,None
+102,Hitmonlee,120,53,50,Kanto,35,110,87,Fighting,None
+103,Hitmonchan,105,79,50,Kanto,35,110,76,Fighting,None
+104,Lickitung,55,75,90,Kanto,60,75,30,Normal,None
+105,Koffing,65,95,40,Kanto,60,45,35,Poison,None
+106,Weezing,90,120,65,Kanto,85,70,60,Poison,None
+107,Rhyhorn,85,95,80,Kanto,30,30,25,Ground,Rock
+108,Rhydon,130,120,105,Kanto,45,45,40,Ground,Rock
+109,Chansey,5,5,250,Kanto,35,105,50,Normal,None
+110,Tangela,55,115,65,Kanto,100,40,60,Grass,None
+111,Kangaskhan,95,80,105,Kanto,40,80,90,Normal,None
+112,Horsea,40,70,30,Kanto,70,25,60,Water,None
+113,Seadra,65,95,55,Kanto,95,45,85,Water,None
+114,Goldeen,67,60,45,Kanto,35,50,63,Water,None
+115,Seaking,92,65,80,Kanto,65,80,68,Water,None
+116,Staryu,45,55,30,Kanto,70,55,85,Water,None
+117,Starmie,75,85,60,Kanto,100,85,115,Water,Psychic
+118,Scyther,110,80,70,Kanto,55,80,105,Bug,Flying
+119,Jynx,50,35,65,Kanto,115,95,95,Ice,Psychic
+120,Electabuzz,83,57,65,Kanto,95,85,105,Electric,None
+121,Magmar,95,57,65,Kanto,100,85,93,Fire,None
+122,Pinsir,125,100,65,Kanto,55,70,85,Bug,None
+123,Tauros,100,95,75,Kanto,40,70,110,Normal,None
+124,Magikarp,10,55,20,Kanto,15,20,80,Water,None
+125,Gyarados,125,79,95,Kanto,60,100,81,Water,Flying
+126,Lapras,85,80,130,Kanto,85,95,60,Water,Ice
+127,Ditto,48,48,48,Kanto,48,48,48,Normal,None
+128,Eevee,55,50,55,Kanto,45,65,55,Normal,None
+129,Vaporeon,65,60,130,Kanto,110,95,65,Water,None
+130,Jolteon,65,60,65,Kanto,110,95,130,Electric,None
+131,Flareon,130,60,65,Kanto,95,110,65,Fire,None
+132,Porygon,60,70,65,Kanto,85,75,40,Normal,None
+133,Omanyte,40,100,35,Kanto,90,55,35,Rock,Water
+134,Omastar,60,125,70,Kanto,115,70,55,Rock,Water
+135,Kabuto,80,90,30,Kanto,55,45,55,Rock,Water
+136,Kabutops,115,105,60,Kanto,65,70,80,Rock,Water
+137,Aerodactyl,105,65,80,Kanto,60,75,130,Rock,Flying
+138,Snorlax,110,65,160,Kanto,65,110,30,Normal,None
+139,Articuno,85,100,90,Kanto,95,125,85,Ice,Flying
+140,Zapdos,90,85,90,Kanto,125,90,100,Electric,Flying
+141,Moltres,100,90,90,Kanto,125,85,90,Fire,Flying
+142,Dratini,64,45,41,Kanto,50,50,50,Dragon,None
+143,Dragonair,84,65,61,Kanto,70,70,70,Dragon,None
+144,Dragonite,134,95,91,Kanto,100,100,80,Dragon,Flying
+145,Mewtwo,110,90,106,Kanto,154,90,130,Psychic,None
+146,Mew,100,100,100,Kanto,100,100,100,Psychic,None
+147,Chikorita,49,65,45,Johto,49,65,45,Grass,None
+148,Bayleef,62,80,60,Johto,63,80,60,Grass,None
+149,Meganium,82,100,80,Johto,83,100,80,Grass,None
+150,Cyndaquil,52,43,39,Johto,60,50,65,Fire,None
+151,Quilava,64,58,58,Johto,80,65,80,Fire,None
+152,Typhlosion,84,78,78,Johto,109,85,100,Fire,None
+153,Totodile,65,64,50,Johto,44,48,43,Water,None
+154,Croconaw,80,80,65,Johto,59,63,58,Water,None
+155,Feraligatr,105,100,85,Johto,79,83,78,Water,None
+156,Sentret,46,34,35,Johto,35,45,20,Normal,None
+157,Furret,76,64,85,Johto,45,55,90,Normal,None
+158,Hoothoot,30,30,60,Johto,36,56,50,Normal,Flying
+159,Noctowl,50,50,100,Johto,86,96,70,Normal,Flying
+160,Ledyba,20,30,40,Johto,40,80,55,Bug,Flying
+161,Ledian,35,50,55,Johto,55,110,85,Bug,Flying
+162,Spinarak,60,40,40,Johto,40,40,30,Bug,Poison
+163,Ariados,90,70,70,Johto,60,70,40,Bug,Poison
+164,Crobat,90,80,85,Johto,70,80,130,Poison,Flying
+165,Chinchou,38,38,75,Johto,56,56,67,Water,Electric
+166,Lanturn,58,58,125,Johto,76,76,67,Water,Electric
+167,Pichu,40,15,20,Johto,35,35,60,Electric,None
+168,Cleffa,25,28,50,Johto,45,55,15,Fairy,None
+169,Igglybuff,30,15,90,Johto,40,20,15,Normal,Fairy
+170,Togepi,20,65,35,Johto,40,65,20,Fairy,None
+171,Togetic,40,85,55,Johto,80,105,40,Fairy,Flying
+172,Natu,50,45,40,Johto,70,45,70,Psychic,Flying
+173,Xatu,75,70,65,Johto,95,70,95,Psychic,Flying
+174,Mareep,40,40,55,Johto,65,45,35,Electric,None
+175,Flaaffy,55,55,70,Johto,80,60,45,Electric,None
+176,Ampharos,75,85,90,Johto,115,90,55,Electric,None
+177,Bellossom,80,95,75,Johto,90,100,50,Grass,None
+178,Marill,20,50,70,Johto,20,50,40,Water,Fairy
+179,Azumarill,50,80,100,Johto,60,80,50,Water,Fairy
+180,Sudowoodo,100,115,70,Johto,30,65,30,Rock,None
+181,Politoed,75,75,90,Johto,90,100,70,Water,None
+182,Hoppip,35,40,35,Johto,35,55,50,Grass,Flying
+183,Skiploom,45,50,55,Johto,45,65,80,Grass,Flying
+184,Jumpluff,55,70,75,Johto,55,95,110,Grass,Flying
+185,Aipom,70,55,55,Johto,40,55,85,Normal,None
+186,Sunkern,30,30,30,Johto,30,30,30,Grass,None
+187,Sunflora,75,55,75,Johto,105,85,30,Grass,None
+188,Yanma,65,45,65,Johto,75,45,95,Bug,Flying
+189,Wooper,45,45,55,Johto,25,25,15,Water,Ground
+190,Quagsire,85,85,95,Johto,65,65,35,Water,Ground
+191,Espeon,65,60,65,Johto,130,95,110,Psychic,None
+192,Umbreon,65,110,95,Johto,60,130,65,Dark,None
+193,Murkrow,85,42,60,Johto,85,42,91,Dark,Flying
+194,Slowking,75,80,95,Johto,100,110,30,Water,Psychic
+195,Misdreavus,60,60,60,Johto,85,85,85,Ghost,None
+196,Unown,72,48,48,Johto,72,48,48,Psychic,None
+197,Wobbuffet,33,58,190,Johto,33,58,33,Psychic,None
+198,Girafarig,80,65,70,Johto,90,65,85,Normal,Psychic
+199,Pineco,65,90,50,Johto,35,35,15,Bug,None
+200,Forretress,90,140,75,Johto,60,60,40,Bug,Steel
+201,Dunsparce,70,70,100,Johto,65,65,45,Normal,None
+202,Gligar,75,105,65,Johto,35,65,85,Ground,Flying
+203,Steelix,85,200,75,Johto,55,65,30,Steel,Ground
+204,Snubbull,80,50,60,Johto,40,40,30,Fairy,None
+205,Granbull,120,75,90,Johto,60,60,45,Fairy,None
+206,Qwilfish,95,85,65,Johto,55,55,85,Water,Poison
+207,Scizor,130,100,70,Johto,55,80,65,Bug,Steel
+208,Shuckle,10,230,20,Johto,10,230,5,Bug,Rock
+209,Heracross,125,75,80,Johto,40,95,85,Bug,Fighting
+210,Sneasel,95,55,55,Johto,35,75,115,Dark,Ice
+211,Teddiursa,80,50,60,Johto,50,50,40,Normal,None
+212,Ursaring,130,75,90,Johto,75,75,55,Normal,None
+213,Slugma,40,40,40,Johto,70,40,20,Fire,None
+214,Magcargo,50,120,60,Johto,90,80,30,Fire,Rock
+215,Swinub,50,40,50,Johto,30,30,50,Ice,Ground
+216,Piloswine,100,80,100,Johto,60,60,50,Ice,Ground
+217,Corsola,55,95,65,Johto,65,95,35,Water,Rock
+218,Remoraid,65,35,35,Johto,65,35,65,Water,None
+219,Octillery,105,75,75,Johto,105,75,45,Water,None
+220,Delibird,55,45,45,Johto,65,45,75,Ice,Flying
+221,Mantine,40,70,85,Johto,80,140,70,Water,Flying
+222,Skarmory,80,140,65,Johto,40,70,70,Steel,Flying
+223,Houndour,60,30,45,Johto,80,50,65,Dark,Fire
+224,Houndoom,90,50,75,Johto,110,80,95,Dark,Fire
+225,Kingdra,95,95,75,Johto,95,95,85,Water,Dragon
+226,Phanpy,60,60,90,Johto,40,40,40,Ground,None
+227,Donphan,120,120,90,Johto,60,60,50,Ground,None
+228,Porygon2,80,90,85,Johto,105,95,60,Normal,None
+229,Stantler,95,62,73,Johto,85,65,85,Normal,None
+230,Smeargle,20,35,55,Johto,20,45,75,Normal,None
+231,Tyrogue,35,35,35,Johto,35,35,35,Fighting,None
+232,Hitmontop,95,95,50,Johto,35,110,70,Fighting,None
+233,Smoochum,30,15,45,Johto,85,65,65,Ice,Psychic
+234,Elekid,63,37,45,Johto,65,55,95,Electric,None
+235,Magby,75,37,45,Johto,70,55,83,Fire,None
+236,Miltank,80,105,95,Johto,40,70,100,Normal,None
+237,Blissey,10,10,255,Johto,75,135,55,Normal,None
+238,Raikou,85,75,90,Johto,115,100,115,Electric,None
+239,Entei,115,85,115,Johto,90,75,100,Fire,None
+240,Suicune,75,115,100,Johto,90,115,85,Water,None
+241,Larvitar,64,50,50,Johto,45,50,41,Rock,Ground
+242,Pupitar,84,70,70,Johto,65,70,51,Rock,Ground
+243,Tyranitar,134,110,100,Johto,95,100,61,Rock,Dark
+244,Lugia,90,130,106,Johto,90,154,110,Psychic,Flying
+245,Ho-oh,130,90,106,Johto,110,154,90,Fire,Flying
+246,Celebi,100,100,100,Johto,100,100,100,Psychic,Grass
+247,Treecko,45,35,40,Hoenn,65,55,70,Grass,None
+248,Grovyle,65,45,50,Hoenn,85,65,95,Grass,None
+249,Sceptile,85,65,70,Hoenn,105,85,120,Grass,None
+250,Torchic,60,40,45,Hoenn,70,50,45,Fire,None
+251,Combusken,85,60,60,Hoenn,85,60,55,Fire,Fighting
+252,Blaziken,120,70,80,Hoenn,110,70,80,Fire,Fighting
+253,Mudkip,70,50,50,Hoenn,50,50,40,Water,None
+254,Marshtomp,85,70,70,Hoenn,60,70,50,Water,Ground
+255,Swampert,110,90,100,Hoenn,85,90,60,Water,Ground
+256,Poochyena,55,35,35,Hoenn,30,30,35,Dark,None
+257,Mightyena,90,70,70,Hoenn,60,60,70,Dark,None
+258,Zigzagoon,30,41,38,Hoenn,30,41,60,Normal,None
+259,Linoone,70,61,78,Hoenn,50,61,100,Normal,None
+260,Wurmple,45,35,45,Hoenn,20,30,20,Bug,None
+261,Silcoon,35,55,50,Hoenn,25,25,15,Bug,None
+262,Beautifly,70,50,60,Hoenn,100,50,65,Bug,Flying
+263,Cascoon,35,55,50,Hoenn,25,25,15,Bug,None
+264,Dustox,50,70,60,Hoenn,50,90,65,Bug,Poison
+265,Lotad,30,30,40,Hoenn,40,50,30,Water,Grass
+266,Lombre,50,50,60,Hoenn,60,70,50,Water,Grass
+267,Ludicolo,70,70,80,Hoenn,90,100,70,Water,Grass
+268,Seedot,40,50,40,Hoenn,30,30,30,Grass,None
+269,Nuzleaf,70,40,70,Hoenn,60,40,60,Grass,Dark
+270,Shiftry,100,60,90,Hoenn,90,60,80,Grass,Dark
+271,Taillow,55,30,40,Hoenn,30,30,85,Normal,Flying
+272,Swellow,85,60,60,Hoenn,75,50,125,Normal,Flying
+273,Wingull,30,30,40,Hoenn,55,30,85,Water,Flying
+274,Pelipper,50,100,60,Hoenn,95,70,65,Water,Flying
+275,Ralts,25,25,28,Hoenn,45,35,40,Psychic,Fairy
+276,Kirlia,35,35,38,Hoenn,65,55,50,Psychic,Fairy
+277,Gardevoir,65,65,68,Hoenn,125,115,80,Psychic,Fairy
+278,Surskit,30,32,40,Hoenn,50,52,65,Bug,Water
+279,Masquerain,60,62,70,Hoenn,100,82,80,Bug,Flying
+280,Shroomish,40,60,60,Hoenn,40,60,35,Grass,None
+281,Breloom,130,80,60,Hoenn,60,60,70,Grass,Fighting
+282,Slakoth,60,60,60,Hoenn,35,35,30,Normal,None
+283,Vigoroth,80,80,80,Hoenn,55,55,90,Normal,None
+284,Slaking,160,100,150,Hoenn,95,65,100,Normal,None
+285,Nincada,45,90,31,Hoenn,30,30,40,Bug,Ground
+286,Ninjask,90,45,61,Hoenn,50,50,160,Bug,Flying
+287,Shedinja,90,45,1,Hoenn,30,30,40,Bug,Ghost
+288,Whismur,51,23,64,Hoenn,51,23,28,Normal,None
+289,Loudred,71,43,84,Hoenn,71,43,48,Normal,None
+290,Exploud,91,63,104,Hoenn,91,73,68,Normal,None
+291,Makuhita,60,30,72,Hoenn,20,30,25,Fighting,None
+292,Hariyama,120,60,144,Hoenn,40,60,50,Fighting,None
+293,Azurill,20,40,50,Hoenn,20,40,20,Normal,Fairy
+294,Nosepass,45,135,30,Hoenn,45,90,30,Rock,None
+295,Skitty,45,45,50,Hoenn,35,35,50,Normal,None
+296,Delcatty,65,65,70,Hoenn,55,55,90,Normal,None
+297,Sableye,75,75,50,Hoenn,65,65,50,Dark,Ghost
+298,Mawile,85,85,50,Hoenn,55,55,50,Steel,Fairy
+299,Aron,70,100,50,Hoenn,40,40,30,Steel,Rock
+300,Lairon,90,140,60,Hoenn,50,50,40,Steel,Rock
+301,Aggron,110,180,70,Hoenn,60,60,50,Steel,Rock
+302,Meditite,40,55,30,Hoenn,40,55,60,Fighting,Psychic
+303,Medicham,60,75,60,Hoenn,60,75,80,Fighting,Psychic
+304,Electrike,45,40,40,Hoenn,65,40,65,Electric,None
+305,Manectric,75,60,70,Hoenn,105,60,105,Electric,None
+306,Plusle,50,40,60,Hoenn,85,75,95,Electric,None
+307,Minun,40,50,60,Hoenn,75,85,95,Electric,None
+308,Volbeat,73,75,65,Hoenn,47,85,85,Bug,None
+309,Illumise,47,75,65,Hoenn,73,85,85,Bug,None
+310,Roselia,60,45,50,Hoenn,100,80,65,Grass,Poison
+311,Gulpin,43,53,70,Hoenn,43,53,40,Poison,None
+312,Swalot,73,83,100,Hoenn,73,83,55,Poison,None
+313,Carvanha,90,20,45,Hoenn,65,20,65,Water,Dark
+314,Sharpedo,120,40,70,Hoenn,95,40,95,Water,Dark
+315,Wailmer,70,35,130,Hoenn,70,35,60,Water,None
+316,Wailord,90,45,170,Hoenn,90,45,60,Water,None
+317,Numel,60,40,60,Hoenn,65,45,35,Fire,Ground
+318,Camerupt,100,70,70,Hoenn,105,75,40,Fire,Ground
+319,Torkoal,85,140,70,Hoenn,85,70,20,Fire,None
+320,Spoink,25,35,60,Hoenn,70,80,60,Psychic,None
+321,Grumpig,45,65,80,Hoenn,90,110,80,Psychic,None
+322,Spinda,60,60,60,Hoenn,60,60,60,Normal,None
+323,Trapinch,100,45,45,Hoenn,45,45,10,Ground,None
+324,Vibrava,70,50,50,Hoenn,50,50,70,Ground,Dragon
+325,Flygon,100,80,80,Hoenn,80,80,100,Ground,Dragon
+326,Cacnea,85,40,50,Hoenn,85,40,35,Grass,None
+327,Cacturne,115,60,70,Hoenn,115,60,55,Grass,Dark
+328,Swablu,40,60,45,Hoenn,40,75,50,Normal,Flying
+329,Altaria,70,90,75,Hoenn,70,105,80,Dragon,Flying
+330,Zangoose,115,60,73,Hoenn,60,60,90,Normal,None
+331,Seviper,100,60,73,Hoenn,100,60,65,Poison,None
+332,Lunatone,55,65,90,Hoenn,95,85,70,Rock,Psychic
+333,Solrock,95,85,90,Hoenn,55,65,70,Rock,Psychic
+334,Barboach,48,43,50,Hoenn,46,41,60,Water,Ground
+335,Whiscash,78,73,110,Hoenn,76,71,60,Water,Ground
+336,Corphish,80,65,43,Hoenn,50,35,35,Water,None
+337,Crawdaunt,120,85,63,Hoenn,90,55,55,Water,Dark
+338,Baltoy,40,55,40,Hoenn,40,70,55,Ground,Psychic
+339,Claydol,70,105,60,Hoenn,70,120,75,Ground,Psychic
+340,Lileep,41,77,66,Hoenn,61,87,23,Rock,Grass
+341,Cradily,81,97,86,Hoenn,81,107,43,Rock,Grass
+342,Anorith,95,50,45,Hoenn,40,50,75,Rock,Bug
+343,Armaldo,125,100,75,Hoenn,70,80,45,Rock,Bug
+344,Feebas,15,20,20,Hoenn,10,55,80,Water,None
+345,Milotic,60,79,95,Hoenn,100,125,81,Water,None
+346,Castform,70,70,70,Hoenn,70,70,70,Normal,None
+347,Kecleon,90,70,60,Hoenn,60,120,40,Normal,None
+348,Shuppet,75,35,44,Hoenn,63,33,45,Ghost,None
+349,Banette,115,65,64,Hoenn,83,63,65,Ghost,None
+350,Duskull,40,90,20,Hoenn,30,90,25,Ghost,None
+351,Dusclops,70,130,40,Hoenn,60,130,25,Ghost,None
+352,Tropius,68,83,99,Hoenn,72,87,51,Grass,Flying
+353,Chimecho,50,80,75,Hoenn,95,90,65,Psychic,None
+354,Absol,130,60,65,Hoenn,75,60,75,Dark,None
+355,Wynaut,23,48,95,Hoenn,23,48,23,Psychic,None
+356,Snorunt,50,50,50,Hoenn,50,50,50,Ice,None
+357,Glalie,80,80,80,Hoenn,80,80,80,Ice,None
+358,Spheal,40,50,70,Hoenn,55,50,25,Ice,Water
+359,Sealeo,60,70,90,Hoenn,75,70,45,Ice,Water
+360,Walrein,80,90,110,Hoenn,95,90,65,Ice,Water
+361,Clamperl,64,85,35,Hoenn,74,55,32,Water,None
+362,Huntail,104,105,55,Hoenn,94,75,52,Water,None
+363,Gorebyss,84,105,55,Hoenn,114,75,52,Water,None
+364,Relicanth,90,130,100,Hoenn,45,65,55,Water,Rock
+365,Luvdisc,30,55,43,Hoenn,40,65,97,Water,None
+366,Bagon,75,60,45,Hoenn,40,30,50,Dragon,None
+367,Shelgon,95,100,65,Hoenn,60,50,50,Dragon,None
+368,Salamence,135,80,95,Hoenn,110,80,100,Dragon,Flying
+369,Beldum,55,80,40,Hoenn,35,60,30,Steel,Psychic
+370,Metang,75,100,60,Hoenn,55,80,50,Steel,Psychic
+371,Metagross,135,130,80,Hoenn,95,90,70,Steel,Psychic
+372,Regirock,100,200,80,Hoenn,50,100,50,Rock,None
+373,Regice,50,100,80,Hoenn,100,200,50,Ice,None
+374,Registeel,75,150,80,Hoenn,75,150,50,Steel,None
+375,Latias,80,90,80,Hoenn,110,130,110,Dragon,Psychic
+376,Latios,90,80,80,Hoenn,130,110,110,Dragon,Psychic
+377,Kyogre,100,90,100,Hoenn,150,140,90,Water,None
+378,Groudon,150,140,100,Hoenn,100,90,90,Ground,None
+379,Rayquaza,150,90,105,Hoenn,150,90,95,Dragon,Flying
+380,Jirachi,100,100,100,Hoenn,100,100,100,Steel,Psychic
+381,Deoxys,150,50,50,Hoenn,150,50,150,Psychic,None
+382,Turtwig,68,64,55,Sinnoh,45,55,31,Grass,None
+383,Grotle,89,85,75,Sinnoh,55,65,36,Grass,None
+384,Torterra,109,105,95,Sinnoh,75,85,56,Grass,Ground
+385,Chimchar,58,44,44,Sinnoh,58,44,61,Fire,None
+386,Monferno,78,52,64,Sinnoh,78,52,81,Fire,Fighting
+387,Infernape,104,71,76,Sinnoh,104,71,108,Fire,Fighting
+388,Piplup,51,53,53,Sinnoh,61,56,40,Water,None
+389,Prinplup,66,68,64,Sinnoh,81,76,50,Water,None
+390,Empoleon,86,88,84,Sinnoh,111,101,60,Water,Steel
+391,Starly,55,30,40,Sinnoh,30,30,60,Normal,Flying
+392,Staravia,75,50,55,Sinnoh,40,40,80,Normal,Flying
+393,Staraptor,120,70,85,Sinnoh,50,60,100,Normal,Flying
+394,Bidoof,45,40,59,Sinnoh,35,40,31,Normal,None
+395,Bibarel,85,60,79,Sinnoh,55,60,71,Normal,Water
+396,Kricketot,25,41,37,Sinnoh,25,41,25,Bug,None
+397,Kricketune,85,51,77,Sinnoh,55,51,65,Bug,None
+398,Shinx,65,34,45,Sinnoh,40,34,45,Electric,None
+399,Luxio,85,49,60,Sinnoh,60,49,60,Electric,None
+400,Luxray,120,79,80,Sinnoh,95,79,70,Electric,None
+401,Budew,30,35,40,Sinnoh,50,70,55,Grass,Poison
+402,Roserade,70,65,60,Sinnoh,125,105,90,Grass,Poison
+403,Cranidos,125,40,67,Sinnoh,30,30,58,Rock,None
+404,Rampardos,165,60,97,Sinnoh,65,50,58,Rock,None
+405,Shieldon,42,118,30,Sinnoh,42,88,30,Rock,Steel
+406,Bastiodon,52,168,60,Sinnoh,47,138,30,Rock,Steel
+407,Burmy,29,45,40,Sinnoh,29,45,36,Bug,None
+408,Wormadam,59,85,60,Sinnoh,79,105,36,Bug,Grass
+409,Mothim,94,50,70,Sinnoh,94,50,66,Bug,Flying
+410,Combee,30,42,30,Sinnoh,30,42,70,Bug,Flying
+411,Vespiquen,80,102,70,Sinnoh,80,102,40,Bug,Flying
+412,Pachirisu,45,70,60,Sinnoh,45,90,95,Electric,None
+413,Buizel,65,35,55,Sinnoh,60,30,85,Water,None
+414,Floatzel,105,55,85,Sinnoh,85,50,115,Water,None
+415,Cherubi,35,45,45,Sinnoh,62,53,35,Grass,None
+416,Cherrim,60,70,70,Sinnoh,87,78,85,Grass,None
+417,Shellos,48,48,76,Sinnoh,57,62,34,Water,None
+418,Gastrodon,83,68,111,Sinnoh,92,82,39,Water,Ground
+419,Ambipom,100,66,75,Sinnoh,60,66,115,Normal,None
+420,Drifloon,50,34,90,Sinnoh,60,44,70,Ghost,Flying
+421,Drifblim,80,44,150,Sinnoh,90,54,80,Ghost,Flying
+422,Buneary,66,44,55,Sinnoh,44,56,85,Normal,None
+423,Lopunny,76,84,65,Sinnoh,54,96,105,Normal,None
+424,Mismagius,60,60,60,Sinnoh,105,105,105,Ghost,None
+425,Honchkrow,125,52,100,Sinnoh,105,52,71,Dark,Flying
+426,Glameow,55,42,49,Sinnoh,42,37,85,Normal,None
+427,Purugly,82,64,71,Sinnoh,64,59,112,Normal,None
+428,Chingling,30,50,45,Sinnoh,65,50,45,Psychic,None
+429,Stunky,63,47,63,Sinnoh,41,41,74,Poison,Dark
+430,Skuntank,93,67,103,Sinnoh,71,61,84,Poison,Dark
+431,Bronzor,24,86,57,Sinnoh,24,86,23,Steel,Psychic
+432,Bronzong,89,116,67,Sinnoh,79,116,33,Steel,Psychic
+433,Bonsly,80,95,50,Sinnoh,10,45,10,Rock,None
+434,Happiny,5,5,100,Sinnoh,15,65,30,Normal,None
+435,Chatot,65,45,76,Sinnoh,92,42,91,Normal,Flying
+436,Spiritomb,92,108,50,Sinnoh,92,108,35,Ghost,Dark
+437,Gible,70,45,58,Sinnoh,40,45,42,Dragon,Ground
+438,Gabite,90,65,68,Sinnoh,50,55,82,Dragon,Ground
+439,Garchomp,130,95,108,Sinnoh,80,85,102,Dragon,Ground
+440,Munchlax,85,40,135,Sinnoh,40,85,5,Normal,None
+441,Riolu,70,40,40,Sinnoh,35,40,60,Fighting,None
+442,Lucario,110,70,70,Sinnoh,115,70,90,Fighting,Steel
+443,Hippopotas,72,78,68,Sinnoh,38,42,32,Ground,None
+444,Hippowdon,112,118,108,Sinnoh,68,72,47,Ground,None
+445,Skorupi,50,90,40,Sinnoh,30,55,65,Poison,Bug
+446,Drapion,90,110,70,Sinnoh,60,75,95,Poison,Dark
+447,Croagunk,61,40,48,Sinnoh,61,40,50,Poison,Fighting
+448,Toxicroak,106,65,83,Sinnoh,86,65,85,Poison,Fighting
+449,Carnivine,100,72,74,Sinnoh,90,72,46,Grass,None
+450,Finneon,49,56,49,Sinnoh,49,61,66,Water,None
+451,Lumineon,69,76,69,Sinnoh,69,86,91,Water,None
+452,Mantyke,20,50,45,Sinnoh,60,120,50,Water,Flying
+453,Snover,62,50,60,Sinnoh,62,60,40,Grass,Ice
+454,Abomasnow,92,75,90,Sinnoh,92,85,60,Grass,Ice
+455,Weavile,120,65,70,Sinnoh,45,85,125,Dark,Ice
+456,Magnezone,70,115,70,Sinnoh,130,90,60,Electric,Steel
+457,Lickilicky,85,95,110,Sinnoh,80,95,50,Normal,None
+458,Rhyperior,140,130,115,Sinnoh,55,55,40,Ground,Rock
+459,Tangrowth,100,125,100,Sinnoh,110,50,50,Grass,None
+460,Electivire,123,67,75,Sinnoh,95,85,95,Electric,None
+461,Magmortar,95,67,75,Sinnoh,125,95,83,Fire,None
+462,Togekiss,50,95,85,Sinnoh,120,115,80,Fairy,Flying
+463,Yanmega,76,86,86,Sinnoh,116,56,95,Bug,Flying
+464,Leafeon,110,130,65,Sinnoh,60,65,95,Grass,None
+465,Glaceon,60,110,65,Sinnoh,130,95,65,Ice,None
+466,Gliscor,95,125,75,Sinnoh,45,75,95,Ground,Flying
+467,Mamoswine,130,80,110,Sinnoh,70,60,80,Ice,Ground
+468,Porygon-Z,80,70,85,Sinnoh,135,75,90,Normal,None
+469,Gallade,125,65,68,Sinnoh,65,115,80,Psychic,Fighting
+470,Probopass,55,145,60,Sinnoh,75,150,40,Rock,Steel
+471,Dusknoir,100,135,45,Sinnoh,65,135,45,Ghost,None
+472,Froslass,80,70,70,Sinnoh,80,70,110,Ice,Ghost
+473,Rotom,50,77,50,Sinnoh,95,77,91,Electric,Ghost
+474,Uxie,75,130,75,Sinnoh,75,130,95,Psychic,None
+475,Mesprit,105,105,80,Sinnoh,105,105,80,Psychic,None
+476,Azelf,125,70,75,Sinnoh,125,70,115,Psychic,None
+477,Dialga,120,120,100,Sinnoh,150,100,90,Steel,Dragon
+478,Palkia,120,100,90,Sinnoh,150,120,100,Water,Dragon
+479,Heatran,90,106,91,Sinnoh,130,106,77,Fire,Steel
+480,Regigigas,160,110,110,Sinnoh,80,110,100,Normal,None
+481,Giratina,100,120,150,Sinnoh,100,120,90,Ghost,Dragon
+482,Cresselia,70,120,120,Sinnoh,75,130,85,Psychic,None
+483,Phione,80,80,80,Sinnoh,80,80,80,Water,None
+484,Manaphy,100,100,100,Sinnoh,100,100,100,Water,None
+485,Darkrai,90,90,70,Sinnoh,135,90,125,Dark,None
+486,Shaymin,100,100,100,Sinnoh,100,100,100,Grass,None
+487,Arceus,120,120,120,Sinnoh,120,120,120,Normal,None
+488,Victini,100,100,100,Unova,100,100,100,Psychic,Fire
+489,Snivy,45,55,45,Unova,45,55,63,Grass,None
+490,Servine,60,75,60,Unova,60,75,83,Grass,None
+491,Serperior,75,95,75,Unova,75,95,113,Grass,None
+492,Tepig,63,45,65,Unova,45,45,45,Fire,None
+493,Pignite,93,55,90,Unova,70,55,55,Fire,Fighting
+494,Emboar,123,65,110,Unova,100,65,65,Fire,Fighting
+495,Oshawott,55,45,55,Unova,63,45,45,Water,None
+496,Dewott,75,60,75,Unova,83,60,60,Water,None
+497,Samurott,100,85,95,Unova,108,70,70,Water,None
+498,Patrat,55,39,45,Unova,35,39,42,Normal,None
+499,Watchog,85,69,60,Unova,60,69,77,Normal,None
+500,Lillipup,60,45,45,Unova,25,45,55,Normal,None
+501,Herdier,80,65,65,Unova,35,65,60,Normal,None
+502,Stoutland,110,90,85,Unova,45,90,80,Normal,None
+503,Purrloin,50,37,41,Unova,50,37,66,Dark,None
+504,Liepard,88,50,64,Unova,88,50,106,Dark,None
+505,Pansage,53,48,50,Unova,53,48,64,Grass,None
+506,Simisage,98,63,75,Unova,98,63,101,Grass,None
+507,Pansear,53,48,50,Unova,53,48,64,Fire,None
+508,Simisear,98,63,75,Unova,98,63,101,Fire,None
+509,Panpour,53,48,50,Unova,53,48,64,Water,None
+510,Simipour,98,63,75,Unova,98,63,101,Water,None
+511,Munna,25,45,76,Unova,67,55,24,Psychic,None
+512,Musharna,55,85,116,Unova,107,95,29,Psychic,None
+513,Pidove,55,50,50,Unova,36,30,43,Normal,Flying
+514,Tranquill,77,62,62,Unova,50,42,65,Normal,Flying
+515,Unfezant,115,80,80,Unova,65,55,93,Normal,Flying
+516,Blitzle,60,32,45,Unova,50,32,76,Electric,None
+517,Zebstrika,100,63,75,Unova,80,63,116,Electric,None
+518,Roggenrola,75,85,55,Unova,25,25,15,Rock,None
+519,Boldore,105,105,70,Unova,50,40,20,Rock,None
+520,Gigalith,135,130,85,Unova,60,80,25,Rock,None
+521,Woobat,45,43,65,Unova,55,43,72,Psychic,Flying
+522,Swoobat,57,55,67,Unova,77,55,114,Psychic,Flying
+523,Drilbur,85,40,60,Unova,30,45,68,Ground,None
+524,Excadrill,135,60,110,Unova,50,65,88,Ground,Steel
+525,Audino,60,86,103,Unova,60,86,50,Normal,None
+526,Timburr,80,55,75,Unova,25,35,35,Fighting,None
+527,Gurdurr,105,85,85,Unova,40,50,40,Fighting,None
+528,Conkeldurr,140,95,105,Unova,55,65,45,Fighting,None
+529,Tympole,50,40,50,Unova,50,40,64,Water,None
+530,Palpitoad,65,55,75,Unova,65,55,69,Water,Ground
+531,Seismitoad,95,75,105,Unova,85,75,74,Water,Ground
+532,Throh,100,85,120,Unova,30,85,45,Fighting,None
+533,Sawk,125,75,75,Unova,30,75,85,Fighting,None
+534,Sewaddle,53,70,45,Unova,40,60,42,Bug,Grass
+535,Swadloon,63,90,55,Unova,50,80,42,Bug,Grass
+536,Leavanny,103,80,75,Unova,70,80,92,Bug,Grass
+537,Venipede,45,59,30,Unova,30,39,57,Bug,Poison
+538,Whirlipede,55,99,40,Unova,40,79,47,Bug,Poison
+539,Scolipede,100,89,60,Unova,55,69,112,Bug,Poison
+540,Cottonee,27,60,40,Unova,37,50,66,Grass,Fairy
+541,Whimsicott,67,85,60,Unova,77,75,116,Grass,Fairy
+542,Petilil,35,50,45,Unova,70,50,30,Grass,None
+543,Lilligant,60,75,70,Unova,110,75,90,Grass,None
+544,Basculin,92,65,70,Unova,80,55,98,Water,None
+545,Sandile,72,35,50,Unova,35,35,65,Ground,Dark
+546,Krokorok,82,45,60,Unova,45,45,74,Ground,Dark
+547,Krookodile,117,80,95,Unova,65,70,92,Ground,Dark
+548,Darumaka,90,45,70,Unova,15,45,50,Fire,None
+549,Darmanitan,140,55,105,Unova,30,55,95,Fire,None
+550,Maractus,86,67,75,Unova,106,67,60,Grass,None
+551,Dwebble,65,85,50,Unova,35,35,55,Bug,Rock
+552,Crustle,105,125,70,Unova,65,75,45,Bug,Rock
+553,Scraggy,75,70,50,Unova,35,70,48,Dark,Fighting
+554,Scrafty,90,115,65,Unova,45,115,58,Dark,Fighting
+555,Sigilyph,58,80,72,Unova,103,80,97,Psychic,Flying
+556,Yamask,30,85,38,Unova,55,65,30,Ghost,None
+557,Cofagrigus,50,145,58,Unova,95,105,30,Ghost,None
+558,Tirtouga,78,103,54,Unova,53,45,22,Water,Rock
+559,Carracosta,108,133,74,Unova,83,65,32,Water,Rock
+560,Archen,112,45,55,Unova,74,45,70,Rock,Flying
+561,Archeops,140,65,75,Unova,112,65,110,Rock,Flying
+562,Trubbish,50,62,50,Unova,40,62,65,Poison,None
+563,Garbodor,95,82,80,Unova,60,82,75,Poison,None
+564,Zorua,65,40,40,Unova,80,40,65,Dark,None
+565,Zoroark,105,60,60,Unova,120,60,105,Dark,None
+566,Minccino,50,40,55,Unova,40,40,75,Normal,None
+567,Cinccino,95,60,75,Unova,65,60,115,Normal,None
+568,Gothita,30,50,45,Unova,55,65,45,Psychic,None
+569,Gothorita,45,70,60,Unova,75,85,55,Psychic,None
+570,Gothitelle,55,95,70,Unova,95,110,65,Psychic,None
+571,Solosis,30,40,45,Unova,105,50,20,Psychic,None
+572,Duosion,40,50,65,Unova,125,60,30,Psychic,None
+573,Reuniclus,65,75,110,Unova,125,85,30,Psychic,None
+574,Ducklett,44,50,62,Unova,44,50,55,Water,Flying
+575,Swanna,87,63,75,Unova,87,63,98,Water,Flying
+576,Vanillite,50,50,36,Unova,65,60,44,Ice,None
+577,Vanillish,65,65,51,Unova,80,75,59,Ice,None
+578,Vanilluxe,95,85,71,Unova,110,95,79,Ice,None
+579,Deerling,60,50,60,Unova,40,50,75,Normal,Grass
+580,Sawsbuck,100,70,80,Unova,60,70,95,Normal,Grass
+581,Emolga,75,60,55,Unova,75,60,103,Electric,Flying
+582,Karrablast,75,45,50,Unova,40,45,60,Bug,None
+583,Escavalier,135,105,70,Unova,60,105,20,Bug,Steel
+584,Foongus,55,45,69,Unova,55,55,15,Grass,Poison
+585,Amoonguss,85,70,114,Unova,85,80,30,Grass,Poison
+586,Frillish,40,50,55,Unova,65,85,40,Water,Ghost
+587,Jellicent,60,70,100,Unova,85,105,60,Water,Ghost
+588,Alomomola,75,80,165,Unova,40,45,65,Water,None
+589,Joltik,47,50,50,Unova,57,50,65,Bug,Electric
+590,Galvantula,77,60,70,Unova,97,60,108,Bug,Electric
+591,Ferroseed,50,91,44,Unova,24,86,10,Grass,Steel
+592,Ferrothorn,94,131,74,Unova,54,116,20,Grass,Steel
+593,Klink,55,70,40,Unova,45,60,30,Steel,None
+594,Klang,80,95,60,Unova,70,85,50,Steel,None
+595,Klinklang,100,115,60,Unova,70,85,90,Steel,None
+596,Tynamo,55,40,35,Unova,45,40,60,Electric,None
+597,Eelektrik,85,70,65,Unova,75,70,40,Electric,None
+598,Eelektross,115,80,85,Unova,105,80,50,Electric,None
+599,Elgyem,55,55,55,Unova,85,55,30,Psychic,None
+600,Beheeyem,75,75,75,Unova,125,95,40,Psychic,None
+601,Litwick,30,55,50,Unova,65,55,20,Ghost,Fire
+602,Lampent,40,60,60,Unova,95,60,55,Ghost,Fire
+603,Chandelure,55,90,60,Unova,145,90,80,Ghost,Fire
+604,Axew,87,60,46,Unova,30,40,57,Dragon,None
+605,Fraxure,117,70,66,Unova,40,50,67,Dragon,None
+606,Haxorus,147,90,76,Unova,60,70,97,Dragon,None
+607,Cubchoo,70,40,55,Unova,60,40,40,Ice,None
+608,Beartic,130,80,95,Unova,70,80,50,Ice,None
+609,Cryogonal,50,50,80,Unova,95,135,105,Ice,None
+610,Shelmet,40,85,50,Unova,40,65,25,Bug,None
+611,Accelgor,70,40,80,Unova,100,60,145,Bug,None
+612,Stunfisk,66,84,109,Unova,81,99,32,Ground,Electric
+613,Mienfoo,85,50,45,Unova,55,50,65,Fighting,None
+614,Mienshao,125,60,65,Unova,95,60,105,Fighting,None
+615,Druddigon,120,90,77,Unova,60,90,48,Dragon,None
+616,Golett,74,50,59,Unova,35,50,35,Ground,Ghost
+617,Golurk,124,80,89,Unova,55,80,55,Ground,Ghost
+618,Pawniard,85,70,45,Unova,40,40,60,Dark,Steel
+619,Bisharp,125,100,65,Unova,60,70,70,Dark,Steel
+620,Bouffalant,110,95,95,Unova,40,95,55,Normal,None
+621,Rufflet,83,50,70,Unova,37,50,60,Normal,Flying
+622,Braviary,123,75,100,Unova,57,75,80,Normal,Flying
+623,Vullaby,55,75,70,Unova,45,65,60,Dark,Flying
+624,Mandibuzz,65,105,110,Unova,55,95,80,Dark,Flying
+625,Heatmor,97,66,85,Unova,105,66,65,Fire,None
+626,Durant,109,112,58,Unova,48,48,109,Bug,Steel
+627,Deino,65,50,52,Unova,45,50,38,Dark,Dragon
+628,Zweilous,85,70,72,Unova,65,70,58,Dark,Dragon
+629,Hydreigon,105,90,92,Unova,125,90,98,Dark,Dragon
+630,Larvesta,85,55,55,Unova,50,55,60,Bug,Fire
+631,Volcarona,60,65,85,Unova,135,105,100,Bug,Fire
+632,Cobalion,90,129,91,Unova,90,72,108,Steel,Fighting
+633,Terrakion,129,90,91,Unova,72,90,108,Rock,Fighting
+634,Virizion,90,72,91,Unova,90,129,108,Grass,Fighting
+635,Tornadus,115,70,79,Unova,125,80,111,Flying,None
+636,Thundurus,115,70,79,Unova,125,80,111,Electric,Flying
+637,Reshiram,120,100,100,Unova,150,120,90,Dragon,Fire
+638,Zekrom,150,120,100,Unova,120,100,90,Dragon,Electric
+639,Landorus,125,90,89,Unova,115,80,101,Ground,Flying
+640,Kyurem,130,90,125,Unova,130,90,95,Dragon,Ice
+641,Keldeo,72,90,91,Unova,129,90,108,Water,Fighting
+642,Meloetta,77,77,100,Unova,128,128,90,Normal,Psychic
+643,Genesect,120,95,71,Unova,120,95,99,Bug,Steel
+644,Chespin,61,65,56,Kalos,48,45,38,Grass,None
+645,Quilladin,78,95,61,Kalos,56,58,57,Grass,None
+646,Chesnaught,107,122,88,Kalos,74,75,64,Grass,Fighting
+647,Fennekin,45,40,40,Kalos,62,60,60,Fire,None
+648,Braixen,59,58,59,Kalos,90,70,73,Fire,None
+649,Delphox,69,72,75,Kalos,114,100,104,Fire,Psychic
+650,Froakie,56,40,41,Kalos,62,44,71,Water,None
+651,Frogadier,63,52,54,Kalos,83,56,97,Water,None
+652,Greninja,95,67,72,Kalos,103,71,122,Water,Dark
+653,Bunnelby,36,38,38,Kalos,32,36,57,Normal,None
+654,Diggersby,56,77,85,Kalos,50,77,78,Normal,Ground
+655,Fletchling,50,43,45,Kalos,40,38,62,Normal,Flying
+656,Fletchinder,73,55,62,Kalos,56,52,84,Fire,Flying
+657,Talonflame,81,71,78,Kalos,74,69,126,Fire,Flying
+658,Scatterbug,35,40,38,Kalos,27,25,35,Bug,None
+659,Spewpa,22,60,45,Kalos,27,30,29,Bug,None
+660,Vivillon,52,50,80,Kalos,90,50,89,Bug,Flying
+661,Litleo,50,58,62,Kalos,73,54,72,Fire,Normal
+662,Pyroar,68,72,86,Kalos,109,66,106,Fire,Normal
+663,Floette,45,47,54,Kalos,75,98,52,Fairy,None
+664,Florges,65,68,78,Kalos,112,154,75,Fairy,None
+665,Skiddo,65,48,66,Kalos,62,57,52,Grass,None
+666,Gogoat,100,62,123,Kalos,97,81,68,Grass,None
+667,Pancham,82,62,67,Kalos,46,48,43,Fighting,None
+668,Pangoro,124,78,95,Kalos,69,71,58,Fighting,Dark
+669,Furfrou,80,60,75,Kalos,65,90,102,Normal,None
+670,Espurr,48,54,62,Kalos,63,60,68,Psychic,None
+671,Meowstic,48,76,74,Kalos,83,81,104,Psychic,None
+672,Honedge,80,100,45,Kalos,35,37,28,Steel,Ghost
+673,Doublade,110,150,59,Kalos,45,49,35,Steel,Ghost
+674,Aegislash,50,140,60,Kalos,50,140,60,Steel,Ghost
+675,Spritzee,52,60,78,Kalos,63,65,23,Fairy,None
+676,Aromatisse,72,72,101,Kalos,99,89,29,Fairy,None
+677,Swirlix,48,66,62,Kalos,59,57,49,Fairy,None
+678,Slurpuff,80,86,82,Kalos,85,75,72,Fairy,None
+679,Inkay,54,53,53,Kalos,37,46,45,Dark,Psychic
+680,Malamar,92,88,86,Kalos,68,75,73,Dark,Psychic
+681,Binacle,52,67,42,Kalos,39,56,50,Rock,Water
+682,Barbaracle,105,115,72,Kalos,54,86,68,Rock,Water
+683,Skrelp,60,60,50,Kalos,60,60,30,Poison,Water
+684,Dragalge,75,90,65,Kalos,97,123,44,Poison,Dragon
+685,Clauncher,53,62,50,Kalos,58,63,44,Water,None
+686,Clawitzer,73,88,71,Kalos,120,89,59,Water,None
+687,Helioptile,38,33,44,Kalos,61,43,70,Electric,Normal
+688,Heliolisk,55,52,62,Kalos,109,94,109,Electric,Normal
+689,Tyrunt,89,77,58,Kalos,45,45,48,Rock,Dragon
+690,Tyrantrum,121,119,82,Kalos,69,59,71,Rock,Dragon
+691,Amaura,59,50,77,Kalos,67,63,46,Rock,Ice
+692,Aurorus,77,72,123,Kalos,99,92,58,Rock,Ice
+693,Sylveon,65,65,95,Kalos,110,130,60,Fairy,None
+694,Hawlucha,92,75,78,Kalos,74,63,118,Fighting,Flying
+695,Dedenne,58,57,67,Kalos,81,67,101,Electric,Fairy
+696,Carbink,50,150,50,Kalos,50,150,50,Rock,Fairy
+697,Goomy,50,35,45,Kalos,55,75,40,Dragon,None
+698,Sliggoo,75,53,68,Kalos,83,113,60,Dragon,None
+699,Goodra,100,70,90,Kalos,110,150,80,Dragon,None
+700,Klefki,80,91,57,Kalos,80,87,75,Steel,Fairy
+701,Phantump,70,48,43,Kalos,50,60,38,Ghost,Grass
+702,Trevenant,110,76,85,Kalos,65,82,56,Ghost,Grass
+703,Pumpkaboo,66,70,49,Kalos,44,55,51,Ghost,Grass
+704,Gourgeist,90,122,65,Kalos,58,75,84,Ghost,Grass
+705,Bergmite,69,85,55,Kalos,32,35,28,Ice,None
+706,Avalugg,117,184,95,Kalos,44,46,28,Ice,None
+707,Noibat,30,35,40,Kalos,45,40,55,Flying,Dragon
+708,Noivern,70,80,85,Kalos,97,80,123,Flying,Dragon
+709,Xerneas,131,95,126,Kalos,131,98,99,Fairy,None
+710,Yveltal,131,95,126,Kalos,131,98,99,Dark,Flying
+711,Zygarde,100,121,108,Kalos,81,95,95,Dragon,Ground
+712,Diancie,100,150,50,Kalos,100,150,50,Rock,Fairy
+713,Hoopa,110,60,80,Kalos,150,130,70,Psychic,Ghost
+714,Volcanion,110,120,80,Kalos,130,90,70,Fire,Water
+715,Rowlet,55,55,68,Alola,50,50,42,Grass,Flying
+716,Dartrix,75,75,78,Alola,70,70,52,Grass,Flying
+717,Decidueye,107,75,78,Alola,100,100,70,Grass,Ghost
+718,Litten,65,40,45,Alola,60,40,70,Fire,None
+719,Torracat,85,50,65,Alola,80,50,90,Fire,None
+720,Incineroar,115,90,95,Alola,80,90,60,Fire,Dark
+721,Popplio,54,54,50,Alola,66,56,40,Water,None
+722,Brionne,69,69,60,Alola,91,81,50,Water,None
+723,Primarina,74,74,80,Alola,126,116,60,Water,Fairy
+724,Pikipek,75,30,35,Alola,30,30,65,Normal,Flying
+725,Trumbeak,85,50,55,Alola,40,50,75,Normal,Flying
+726,Toucannon,120,75,80,Alola,75,75,60,Normal,Flying
+727,Yungoos,70,30,48,Alola,30,30,45,Normal,None
+728,Gumshoos,110,60,88,Alola,55,60,45,Normal,None
+729,Grubbin,62,45,47,Alola,55,45,46,Bug,None
+730,Charjabug,82,95,57,Alola,55,75,36,Bug,Electric
+731,Vikavolt,70,90,77,Alola,145,75,43,Bug,Electric
+732,Crabrawler,82,57,47,Alola,42,47,63,Fighting,None
+733,Crabominable,132,77,97,Alola,62,67,43,Fighting,Ice
+734,Oricorio,70,70,75,Alola,98,70,93,Fire,Flying
+735,Cutiefly,45,40,40,Alola,55,40,84,Bug,Fairy
+736,Ribombee,55,60,60,Alola,95,70,124,Bug,Fairy
+737,Rockruff,65,40,45,Alola,30,40,60,Rock,None
+738,Lycanroc,115,65,75,Alola,55,65,112,Rock,None
+739,Wishiwashi,20,20,45,Alola,25,25,40,Water,None
+740,Mareanie,53,62,50,Alola,43,52,45,Poison,Water
+741,Toxapex,63,152,50,Alola,53,142,35,Poison,Water
+742,Mudbray,100,70,70,Alola,45,55,45,Ground,None
+743,Mudsdale,125,100,100,Alola,55,85,35,Ground,None
+744,Dewpider,40,52,38,Alola,40,72,27,Water,Bug
+745,Araquanid,70,92,68,Alola,50,132,42,Water,Bug
+746,Fomantis,55,35,40,Alola,50,35,35,Grass,None
+747,Lurantis,105,90,70,Alola,80,90,45,Grass,None
+748,Morelull,35,55,40,Alola,65,75,15,Grass,Fairy
+749,Shiinotic,45,80,60,Alola,90,100,30,Grass,Fairy
+750,Salandit,44,40,48,Alola,71,40,77,Poison,Fire
+751,Salazzle,64,60,68,Alola,111,60,117,Poison,Fire
+752,Stufful,75,50,70,Alola,45,50,50,Normal,Fighting
+753,Bewear,125,80,120,Alola,55,60,60,Normal,Fighting
+754,Bounsweet,30,38,42,Alola,30,38,32,Grass,None
+755,Steenee,40,48,52,Alola,40,48,62,Grass,None
+756,Tsareena,120,98,72,Alola,50,98,72,Grass,None
+757,Comfey,52,90,51,Alola,82,110,100,Fairy,None
+758,Oranguru,60,80,90,Alola,90,110,60,Normal,Psychic
+759,Passimian,120,90,100,Alola,40,60,80,Fighting,None
+760,Wimpod,35,40,25,Alola,20,30,80,Bug,Water
+761,Golisopod,125,140,75,Alola,60,90,40,Bug,Water
+762,Sandygast,55,80,55,Alola,70,45,15,Ghost,Ground
+763,Palossand,75,110,85,Alola,100,75,35,Ghost,Ground
+764,Pyukumuku,60,130,55,Alola,30,130,5,Water,None
+765,Silvally,95,95,95,Alola,95,95,95,Normal,None
+766,Minior,60,100,60,Alola,60,100,60,Rock,Flying
+767,Komala,115,65,65,Alola,75,95,65,Normal,None
+768,Turtonator,78,135,60,Alola,91,85,36,Fire,Dragon
+769,Togedemaru,98,63,65,Alola,40,73,96,Electric,Steel
+770,Mimikyu,90,80,55,Alola,50,105,96,Ghost,Fairy
+771,Bruxish,105,70,68,Alola,70,70,92,Water,Psychic
+772,Drampa,60,85,78,Alola,135,91,36,Normal,Dragon
+773,Dhelmise,131,100,70,Alola,86,90,40,Ghost,Grass
+774,Jangmo-o,55,65,45,Alola,45,45,45,Dragon,None
+775,Hakamo-o,75,90,55,Alola,65,70,65,Dragon,Fighting
+776,Kommo-o,110,125,75,Alola,100,105,85,Dragon,Fighting
+777,Cosmog,29,31,43,Alola,29,31,37,Psychic,None
+778,Cosmoem,29,131,43,Alola,29,131,37,Psychic,None
+779,Solgaleo,137,107,137,Alola,113,89,97,Psychic,Steel
+780,Lunala,113,89,137,Alola,137,107,97,Psychic,Ghost
+781,Nihilego,53,47,109,Alola,127,131,103,Rock,Poison
+782,Buzzwole,139,139,107,Alola,53,53,79,Bug,Fighting
+783,Pheromosa,137,37,71,Alola,137,37,151,Bug,Fighting
+784,Xurkitree,89,71,83,Alola,173,71,83,Electric,None
+785,Celesteela,101,103,97,Alola,107,101,61,Steel,Flying
+786,Kartana,181,131,59,Alola,59,31,109,Grass,Steel
+787,Guzzlord,101,53,223,Alola,97,53,43,Dark,Dragon
+788,Necrozma,107,101,97,Alola,127,89,79,Psychic,None
+789,Magearna,95,115,80,Alola,130,115,65,Steel,Fairy
+790,Marshadow,125,80,90,Alola,90,90,125,Fighting,Ghost
+791,Poipole,73,67,67,Alola,73,67,73,Poison,None
+792,Naganadel,73,73,73,Alola,127,73,121,Poison,Dragon
+793,Stakataka,131,211,61,Alola,53,101,13,Rock,Steel
+794,Blacephalon,127,53,53,Alola,151,79,107,Fire,Ghost
+795,Zeraora,112,75,88,Alola,102,80,143,Electric,None
+796,Meltan,65,65,46,Alola,55,35,34,Steel,None
+797,Melmetal,143,143,135,Alola,80,65,34,Steel,None
+798,Grookey,65,50,50,Galar,40,40,65,Grass,None
+799,Thwackey,85,70,70,Galar,55,60,80,Grass,None
+800,Rillaboom,125,90,100,Galar,60,70,85,Grass,None
+801,Scorbunny,71,40,50,Galar,40,40,69,Fire,None
+802,Raboot,86,60,65,Galar,55,60,94,Fire,None
+803,Cinderace,116,75,80,Galar,65,75,119,Fire,None
+804,Sobble,40,40,50,Galar,70,40,70,Water,None
+805,Drizzile,60,55,65,Galar,95,55,90,Water,None
+806,Inteleon,85,65,70,Galar,125,65,120,Water,None
+807,Skwovet,55,55,70,Galar,35,35,25,Normal,None
+808,Greedent,95,95,120,Galar,55,75,20,Normal,None
+809,Rookidee,47,35,38,Galar,33,35,57,Flying,None
+810,Corvisquire,67,55,68,Galar,43,55,77,Flying,None
+811,Corviknight,87,105,98,Galar,53,85,67,Flying,Steel
+812,Blipbug,20,20,25,Galar,25,45,45,Bug,None
+813,Dottler,35,80,50,Galar,50,90,30,Bug,Psychic
+814,Orbeetle,45,110,60,Galar,80,120,90,Bug,Psychic
+815,Nickit,28,28,40,Galar,47,52,50,Dark,None
+816,Thievul,58,58,70,Galar,87,92,90,Dark,None
+817,Gossifleur,40,60,40,Galar,40,60,10,Grass,None
+818,Eldegoss,50,90,60,Galar,80,120,60,Grass,None
+819,Wooloo,40,55,42,Galar,40,45,48,Normal,None
+820,Dubwool,80,100,72,Galar,60,90,88,Normal,None
+821,Chewtle,64,50,50,Galar,38,38,44,Water,None
+822,Drednaw,115,90,90,Galar,48,68,74,Water,Rock
+823,Yamper,45,50,59,Galar,40,50,26,Electric,None
+824,Boltund,90,60,69,Galar,90,60,121,Electric,None
+825,Rolycoly,40,50,30,Galar,40,50,30,Rock,None
+826,Carkol,60,90,80,Galar,60,70,50,Rock,Fire
+827,Coalossal,80,120,110,Galar,80,90,30,Rock,Fire
+828,Applin,40,80,40,Galar,40,40,20,Grass,Dragon
+829,Flapple,110,80,70,Galar,95,60,70,Grass,Dragon
+830,Appletun,85,80,110,Galar,100,80,30,Grass,Dragon
+831,Silicobra,57,75,52,Galar,35,50,46,Ground,None
+832,Sandaconda,107,125,72,Galar,65,70,71,Ground,None
+833,Cramorant,85,55,70,Galar,85,95,85,Flying,Water
+834,Arrokuda,63,40,41,Galar,40,30,66,Water,None
+835,Barraskewda,123,60,61,Galar,60,50,136,Water,None
+836,Toxel,38,35,40,Galar,54,35,40,Electric,Poison
+837,Toxtricity,98,70,75,Galar,114,70,75,Electric,Poison
+838,Sizzlipede,65,45,50,Galar,50,50,45,Fire,Bug
+839,Centiskorch,115,65,100,Galar,90,90,65,Fire,Bug
+840,Clobbopus,68,60,50,Galar,50,50,32,Fighting,None
+841,Grapploct,118,90,80,Galar,70,80,42,Fighting,None
+842,Sinistea,45,45,40,Galar,74,54,50,Ghost,None
+843,Polteageist,65,65,60,Galar,134,114,70,Ghost,None
+844,Hatenna,30,45,42,Galar,56,53,39,Psychic,None
+845,Hattrem,40,65,57,Galar,86,73,49,Psychic,None
+846,Hatterene,90,95,57,Galar,136,103,29,Psychic,Fairy
+847,Impidimp,45,30,45,Galar,55,40,50,Dark,Fairy
+848,Morgrem,60,45,65,Galar,75,55,70,Dark,Fairy
+849,Grimmsnarl,120,65,95,Galar,95,75,60,Dark,Fairy
+850,Obstagoon,90,101,93,Galar,60,81,95,Dark,Normal
+851,Perrserker,110,100,70,Galar,50,60,50,Steel,None
+852,Cursola,95,50,60,Galar,145,130,30,Ghost,None
+853,Runerigus,95,145,58,Galar,50,105,30,Ground,Ghost
+854,Milcery,40,40,45,Galar,50,61,34,Fairy,None
+855,Alcremie,60,75,65,Galar,110,121,64,Fairy,None
+856,Falinks,100,100,65,Galar,70,60,75,Fighting,None
+857,Pincurchin,101,95,48,Galar,91,85,15,Electric,None
+858,Snom,25,35,30,Galar,45,30,20,Ice,Bug
+859,Frosmoth,65,60,70,Galar,125,90,65,Ice,Bug
+860,Stonjourner,125,135,100,Galar,20,20,70,Rock,None
+861,Eiscue,80,110,75,Galar,65,90,50,Ice,None
+862,Indeedee,65,55,60,Galar,105,95,95,Psychic,Normal
+863,Morpeko,95,58,58,Galar,70,58,97,Electric,Dark
+864,Cufant,80,49,72,Galar,40,49,40,Steel,None
+865,Copperajah,130,69,122,Galar,80,69,30,Steel,None
+866,Dracozolt,100,90,90,Galar,80,70,75,Electric,Dragon
+867,Arctozolt,100,90,90,Galar,90,80,55,Electric,Ice
+868,Dracovish,90,100,90,Galar,70,80,75,Water,Dragon
+869,Arctovish,90,100,90,Galar,80,90,55,Water,Ice
+870,Duraludon,95,115,70,Galar,120,50,85,Steel,Dragon
+871,Dreepy,60,30,28,Galar,40,30,82,Dragon,Ghost
+872,Drakloak,80,50,68,Galar,60,50,102,Dragon,Ghost
+873,Dragapult,120,75,88,Galar,100,75,142,Dragon,Ghost
+874,Zacian,170,115,92,Galar,80,115,148,Fairy,Steel
+875,Zamazenta,130,145,92,Galar,80,145,128,Fighting,Steel
+876,Eternatus,85,95,140,Galar,145,95,130,Poison,Dragon
+877,Kubfu,90,60,60,Galar,53,50,72,Fighting,None
+878,Urshifu,130,100,100,Galar,63,60,97,Fighting,Dark
+879,Zarude,120,105,105,Galar,70,95,105,Dark,Grass
+880,Regieleki,100,50,80,Galar,100,50,200,Electric,None
+881,Regidrago,100,50,200,Galar,100,50,80,Dragon,None
+882,Glastrier,145,130,100,Galar,65,110,30,Ice,None
+883,Spectrier,65,60,100,Galar,145,80,130,Ghost,None
+884,Calyrex,80,80,100,Galar,80,80,80,Psychic,Grass