{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from itertools import combinations\n", "import numpy as np\n", "import os\n", "import pandas as pd" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Load data from file into a pandas df" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "File 'hr.csv' loaded successfully. \n", "Found 311 rows, 36 columns\n" ] } ], "source": [ "DATADIR=\"data/\"\n", "FILENAME=None\n", "\n", "while FILENAME is None:\n", " \n", " file_candidate = input(\"Enter file name:\")\n", " if file_candidate == \"\": break\n", " \n", " try:\n", " print(f\"Assesing file '{file_candidate}'...\".ljust(120), end=\"\\r\")\n", " file_path = DATADIR + file_candidate\n", " extension = file_candidate.split(\".\")[-1] \n", " match extension:\n", " case \"csv\":\n", " df = pd.read_csv(file_path)\n", " case \"json\":\n", " df = pd.read_json(file_path)\n", " case \"xlsx\":\n", " df = pd.read_excel(file_path)\n", " case _:\n", " print(f\"Error: Invalid extension '{extension}'\")\n", " continue\n", " print(f\"File '{file_candidate}' loaded successfully.\")\n", " rows, columns = df.shape\n", " print(f\"Found {rows} rows, {columns} columns\")\n", " FILENAME = file_candidate\n", " except FileNotFoundError:\n", " print(f\"Error: '{file_candidate}' doesn't exist in {os.getcwd()}/{DATADIR}\")\n", " except Exception as error:\n", " print(f\"Error: Unable to read file '{file_candidate}' ({str(type(error))}: {error})\".ljust(120))" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Clean data to remove duplicates and rows with missing values." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "DROP_MISSING = False\n", "REMOVE_DUPLICATES = True\n", "\n", "df = df.dropna(how=\"any\" if DROP_MISSING else \"all\")\n", "if REMOVE_DUPLICATES: df = df.drop_duplicates()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Anonymize data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n", "/var/folders/7t/d7j4tqwj061958h80lldp0dh0000gn/T/ipykernel_19712/355045301.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " series.loc[series.isin(sensitive_values(series, sensitivity_minimum))] = None\n" ] }, { "data": { "text/html": [ "
\n", " | Employee_Name | \n", "EmpID | \n", "MarriedID | \n", "MaritalStatusID | \n", "GenderID | \n", "EmpStatusID | \n", "DeptID | \n", "PerfScoreID | \n", "FromDiversityJobFairID | \n", "Salary | \n", "... | \n", "ManagerName | \n", "ManagerID | \n", "RecruitmentSource | \n", "PerformanceScore | \n", "EngagementSurvey | \n", "EmpSatisfaction | \n", "SpecialProjectsCount | \n", "LastPerformanceReview_Date | \n", "DaysLateLast30 | \n", "Absences | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "None | \n", "(10022, 10042) | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "5 | \n", "4 | \n", "0 | \n", "(62065, 63381) | \n", "... | \n", "Michael Albert | \n", "22.0 | \n", "Exceeds | \n", "(4.52, 4.68) | \n", "5 | \n", "0 | \n", "1/17/2019 | \n", "0 | \n", "1 | \n", "|
1 | \n", "None | \n", "(10064, 10084) | \n", "1 | \n", "1 | \n", "1 | \n", "5 | \n", "3 | \n", "3 | \n", "0 | \n", "(92328, 104437) | \n", "... | \n", "Simon Roup | \n", "4.0 | \n", "Indeed | \n", "Fully Meets | \n", "(4.9, 5.0) | \n", "3 | \n", "6 | \n", "None | \n", "0 | \n", "17 | \n", "
2 | \n", "None | \n", "(10190, 10210) | \n", "1 | \n", "1 | \n", "0 | \n", "5 | \n", "5 | \n", "3 | \n", "0 | \n", "(64816, 66825) | \n", "... | \n", "Kissy Sullivan | \n", "20.0 | \n", "Fully Meets | \n", "(2.9, 3.18) | \n", "3 | \n", "0 | \n", "None | \n", "0 | \n", "3 | \n", "|
3 | \n", "None | \n", "(10085, 10105) | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "5 | \n", "3 | \n", "0 | \n", "(64816, 66825) | \n", "... | \n", "Elijiah Gray | \n", "16.0 | \n", "Indeed | \n", "Fully Meets | \n", "(4.7, 4.88) | \n", "5 | \n", "0 | \n", "1/3/2019 | \n", "0 | \n", "15 | \n", "
4 | \n", "None | \n", "(10064, 10084) | \n", "0 | \n", "2 | \n", "0 | \n", "5 | \n", "5 | \n", "3 | \n", "0 | \n", "(47837, 51259) | \n", "... | \n", "Webster Butler | \n", "39.0 | \n", "Google Search | \n", "Fully Meets | \n", "(5.0, 5.0) | \n", "4 | \n", "0 | \n", "2/1/2016 | \n", "0 | \n", "2 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
306 | \n", "None | \n", "(10127, 10147) | \n", "0 | \n", "0 | \n", "1 | \n", "1 | \n", "5 | \n", "3 | \n", "0 | \n", "(64816, 66825) | \n", "... | \n", "Kissy Sullivan | \n", "20.0 | \n", "Fully Meets | \n", "(3.99, 4.1) | \n", "4 | \n", "0 | \n", "2/28/2019 | \n", "0 | \n", "13 | \n", "|
307 | \n", "None | \n", "None | \n", "0 | \n", "0 | \n", "0 | \n", "5 | \n", "5 | \n", "1 | \n", "0 | \n", "(47837, 51259) | \n", "... | \n", "Brannon Miller | \n", "12.0 | \n", "Google Search | \n", "PIP | \n", "(3.19, 3.5) | \n", "2 | \n", "0 | \n", "None | \n", "5 | \n", "4 | \n", "
308 | \n", "None | \n", "(10001, 10021) | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "3 | \n", "4 | \n", "0 | \n", "None | \n", "... | \n", "Janet King | \n", "2.0 | \n", "Employee Referral | \n", "Exceeds | \n", "(4.52, 4.68) | \n", "5 | \n", "6 | \n", "2/21/2019 | \n", "0 | \n", "16 | \n", "
309 | \n", "None | \n", "(10043, 10063) | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "3 | \n", "3 | \n", "0 | \n", "(77692, 90100) | \n", "... | \n", "Simon Roup | \n", "4.0 | \n", "Employee Referral | \n", "Fully Meets | \n", "(5.0, 5.0) | \n", "3 | \n", "5 | \n", "2/1/2019 | \n", "0 | \n", "11 | \n", "
310 | \n", "None | \n", "(10252, 10271) | \n", "0 | \n", "4 | \n", "0 | \n", "1 | \n", "5 | \n", "3 | \n", "0 | \n", "(45046, 47750) | \n", "... | \n", "David Stanley | \n", "14.0 | \n", "Fully Meets | \n", "(4.5, 4.52) | \n", "5 | \n", "0 | \n", "1/30/2019 | \n", "0 | \n", "2 | \n", "
311 rows × 36 columns
\n", "