{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this notebook, we will learn about the whylogs Python library and its output. \n",
"\n",
"# Getting Started with whylogs Profile Summaries\n",
"\n",
"We will first read sample raw data into Pandas from a file and explore that data briefly. To run whylogs, we will then import the whylogs library, initialize a logging session with whylogs, and create a profile for our data, producing a whylogs profile summary. Finally, we will explore some of the profile summary features.\n",
"\n",
"To get started, we will import a few standard data science Python libraries."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: boto3 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 1)) (1.17.29)\n",
"Requirement already satisfied: certifi in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (2020.12.5)\n",
"Requirement already satisfied: chardet in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (4.0.0)\n",
"Requirement already satisfied: matplotlib in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 4)) (3.3.4)\n",
"Requirement already satisfied: numpy in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 5)) (1.20.1)\n",
"Requirement already satisfied: whylogs in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from -r requirements.txt (line 6)) (0.3.2)\n",
"Requirement already satisfied: botocore<1.21.0,>=1.20.29 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from boto3->-r requirements.txt (line 1)) (1.20.29)\n",
"Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from boto3->-r requirements.txt (line 1)) (0.10.0)\n",
"Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from boto3->-r requirements.txt (line 1)) (0.3.4)\n",
"Requirement already satisfied: python-dateutil<3.0.0,>=2.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from botocore<1.21.0,>=1.20.29->boto3->-r requirements.txt (line 1)) (2.8.1)\n",
"Requirement already satisfied: urllib3<1.27,>=1.25.4 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from botocore<1.21.0,>=1.20.29->boto3->-r requirements.txt (line 1)) (1.26.4)\n",
"Requirement already satisfied: six>=1.5 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.21.0,>=1.20.29->boto3->-r requirements.txt (line 1)) (1.15.0)\n",
"Requirement already satisfied: pillow>=6.2.0 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from matplotlib->-r requirements.txt (line 4)) (8.1.2)\n",
"Requirement already satisfied: cycler>=0.10 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from matplotlib->-r requirements.txt (line 4)) (0.10.0)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from matplotlib->-r requirements.txt (line 4)) (1.3.1)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from matplotlib->-r requirements.txt (line 4)) (2.4.7)\n",
"Requirement already satisfied: whylabs-datasketches>=2.2.0b1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (2.2.0b1)\n",
"Requirement already satisfied: smart-open==4.1.2 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (4.1.2)\n",
"Requirement already satisfied: click>=7.1.2 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (7.1.2)\n",
"Requirement already satisfied: scikit-learn==0.24.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (0.24.1)\n",
"Requirement already satisfied: tqdm==4.54.0 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (4.54.0)\n",
"Requirement already satisfied: protobuf>=3.12.2 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (3.15.6)\n",
"Requirement already satisfied: pyyaml>=5.3.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (5.4.1)\n",
"Requirement already satisfied: xlrd==2.0.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (2.0.1)\n",
"Requirement already satisfied: openpyxl==3.0.6 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (3.0.6)\n",
"Requirement already satisfied: puremagic==1.10 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (1.10)\n",
"Requirement already satisfied: pandas>1.0 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (1.2.3)\n",
"Requirement already satisfied: marshmallow>=3.7.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from whylogs->-r requirements.txt (line 6)) (3.10.0)\n",
"Requirement already satisfied: et-xmlfile in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from openpyxl==3.0.6->whylogs->-r requirements.txt (line 6)) (1.0.1)\n",
"Requirement already satisfied: jdcal in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from openpyxl==3.0.6->whylogs->-r requirements.txt (line 6)) (1.4.1)\n",
"Collecting argparse\n",
" Using cached argparse-1.4.0-py2.py3-none-any.whl (23 kB)\n",
"Requirement already satisfied: threadpoolctl>=2.0.0 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from scikit-learn==0.24.1->whylogs->-r requirements.txt (line 6)) (2.1.0)\n",
"Requirement already satisfied: scipy>=0.19.1 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from scikit-learn==0.24.1->whylogs->-r requirements.txt (line 6)) (1.6.1)\n",
"Requirement already satisfied: joblib>=0.11 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from scikit-learn==0.24.1->whylogs->-r requirements.txt (line 6)) (1.0.1)\n",
"Requirement already satisfied: pytz>=2017.3 in /Users/andy/miniconda3/envs/demo/lib/python3.8/site-packages (from pandas>1.0->whylogs->-r requirements.txt (line 6)) (2021.1)\n",
"Installing collected packages: argparse\n",
"Successfully installed argparse-1.4.0\n",
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"pip install -r requirements.txt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import warnings\n",
"warnings.simplefilter(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import datetime\n",
"import os.path\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"whylogs allows you to generate and store key characteristics of a growing dataset efficiently. In machine learning, datasets often consist of both input features and outputs of the model. In deployed systems, you often have a relatively static training dataset as well as a growing dataset from model input and output at inference time.\n",
"\n",
"## Downloading and exploring the raw Lending Club data\n",
"\n",
"In our case, we will download and explore a sample from the Lending Club dataset before logging a whylogs profile summary. Lending Club is a peer-to-peer lending and alternative investing website on which members can apply for personal loans and invest in personal loans to other Lending Club members. The company published a dataset with information spanning several years. This particular dataset contains only the accepted loans."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our sample input data is stored in `lending_club_demo.csv`. You may use the Jupyter command `!` in front of cell contents to execute a Bash command (e.g. `cd`) to navigate if necessary."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"data_file = \"lending_club_demo.csv\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's read that data file into a Pandas dataframe and look at the entries for *January 2017*.\n",
"\n",
"Each row refers to a particular loan instance, while each column refers to a variable in our dataset."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
id
\n",
"
member_id
\n",
"
loan_amnt
\n",
"
funded_amnt
\n",
"
funded_amnt_inv
\n",
"
int_rate
\n",
"
installment
\n",
"
annual_inc
\n",
"
dti
\n",
"
delinq_2yrs
\n",
"
...
\n",
"
deferral_term
\n",
"
hardship_amount
\n",
"
hardship_length
\n",
"
hardship_dpd
\n",
"
orig_projected_additional_accrued_interest
\n",
"
hardship_payoff_balance_amount
\n",
"
hardship_last_payment_amount
\n",
"
settlement_amount
\n",
"
settlement_percentage
\n",
"
settlement_term
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
3.090000e+02
\n",
"
0.0
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
309.000000
\n",
"
...
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
mean
\n",
"
9.637541e+07
\n",
"
NaN
\n",
"
14511.407767
\n",
"
14511.407767
\n",
"
14506.957929
\n",
"
13.479159
\n",
"
446.427476
\n",
"
80151.667184
\n",
"
18.561489
\n",
"
0.372168
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
std
\n",
"
1.648219e+06
\n",
"
NaN
\n",
"
9011.801950
\n",
"
9011.801950
\n",
"
9011.257397
\n",
"
5.168002
\n",
"
280.454947
\n",
"
51337.356187
\n",
"
9.955114
\n",
"
0.929671
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
min
\n",
"
6.895309e+07
\n",
"
NaN
\n",
"
1000.000000
\n",
"
1000.000000
\n",
"
1000.000000
\n",
"
5.320000
\n",
"
32.930000
\n",
"
10000.000000
\n",
"
0.290000
\n",
"
0.000000
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
25%
\n",
"
9.627937e+07
\n",
"
NaN
\n",
"
7500.000000
\n",
"
7500.000000
\n",
"
7500.000000
\n",
"
10.490000
\n",
"
235.260000
\n",
"
49680.000000
\n",
"
12.480000
\n",
"
0.000000
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
50%
\n",
"
9.653771e+07
\n",
"
NaN
\n",
"
12000.000000
\n",
"
12000.000000
\n",
"
12000.000000
\n",
"
12.740000
\n",
"
370.480000
\n",
"
66000.000000
\n",
"
18.100000
\n",
"
0.000000
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
75%
\n",
"
9.681416e+07
\n",
"
NaN
\n",
"
20000.000000
\n",
"
20000.000000
\n",
"
20000.000000
\n",
"
15.990000
\n",
"
582.260000
\n",
"
98000.000000
\n",
"
23.350000
\n",
"
0.000000
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
max
\n",
"
9.752976e+07
\n",
"
NaN
\n",
"
40000.000000
\n",
"
40000.000000
\n",
"
40000.000000
\n",
"
30.940000
\n",
"
1400.690000
\n",
"
400000.000000
\n",
"
109.220000
\n",
"
8.000000
\n",
"
...
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
8 rows × 114 columns
\n",
"
"
],
"text/plain": [
" id member_id loan_amnt funded_amnt funded_amnt_inv \\\n",
"count 3.090000e+02 0.0 309.000000 309.000000 309.000000 \n",
"mean 9.637541e+07 NaN 14511.407767 14511.407767 14506.957929 \n",
"std 1.648219e+06 NaN 9011.801950 9011.801950 9011.257397 \n",
"min 6.895309e+07 NaN 1000.000000 1000.000000 1000.000000 \n",
"25% 9.627937e+07 NaN 7500.000000 7500.000000 7500.000000 \n",
"50% 9.653771e+07 NaN 12000.000000 12000.000000 12000.000000 \n",
"75% 9.681416e+07 NaN 20000.000000 20000.000000 20000.000000 \n",
"max 9.752976e+07 NaN 40000.000000 40000.000000 40000.000000 \n",
"\n",
" int_rate installment annual_inc dti delinq_2yrs ... \\\n",
"count 309.000000 309.000000 309.000000 309.000000 309.000000 ... \n",
"mean 13.479159 446.427476 80151.667184 18.561489 0.372168 ... \n",
"std 5.168002 280.454947 51337.356187 9.955114 0.929671 ... \n",
"min 5.320000 32.930000 10000.000000 0.290000 0.000000 ... \n",
"25% 10.490000 235.260000 49680.000000 12.480000 0.000000 ... \n",
"50% 12.740000 370.480000 66000.000000 18.100000 0.000000 ... \n",
"75% 15.990000 582.260000 98000.000000 23.350000 0.000000 ... \n",
"max 30.940000 1400.690000 400000.000000 109.220000 8.000000 ... \n",
"\n",
" deferral_term hardship_amount hardship_length hardship_dpd \\\n",
"count 0.0 0.0 0.0 0.0 \n",
"mean NaN NaN NaN NaN \n",
"std NaN NaN NaN NaN \n",
"min NaN NaN NaN NaN \n",
"25% NaN NaN NaN NaN \n",
"50% NaN NaN NaN NaN \n",
"75% NaN NaN NaN NaN \n",
"max NaN NaN NaN NaN \n",
"\n",
" orig_projected_additional_accrued_interest \\\n",
"count 0.0 \n",
"mean NaN \n",
"std NaN \n",
"min NaN \n",
"25% NaN \n",
"50% NaN \n",
"75% NaN \n",
"max NaN \n",
"\n",
" hardship_payoff_balance_amount hardship_last_payment_amount \\\n",
"count 0.0 0.0 \n",
"mean NaN NaN \n",
"std NaN NaN \n",
"min NaN NaN \n",
"25% NaN NaN \n",
"50% NaN NaN \n",
"75% NaN NaN \n",
"max NaN NaN \n",
"\n",
" settlement_amount settlement_percentage settlement_term \n",
"count 0.0 0.0 0.0 \n",
"mean NaN NaN NaN \n",
"std NaN NaN NaN \n",
"min NaN NaN NaN \n",
"25% NaN NaN NaN \n",
"50% NaN NaN NaN \n",
"75% NaN NaN NaN \n",
"max NaN NaN NaN \n",
"\n",
"[8 rows x 114 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"full_data = pd.read_csv(os.path.join(data_file))\n",
"data = full_data[full_data['issue_d'] == 'Jan-2017']\n",
"\n",
"data.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interesting Lending Club dataset variables\n",
"\n",
"**`emp_length` (categorical, string)**:\n",
"> length of employment in years as text entries\n",
"\n",
"**`annual_inc` (numeric)**:\n",
"> the self-reported annual income provided by the borrower during registration\n",
"\n",
"**`dti` (numeric)**:\n",
"> ratio calculated using the borrower’s total monthly debt payments over their total debt obligations, excluding mortgage and the requested LC loan, divided by the borrower’s self-reported monthly income\n",
"\n",
"**`issue_d` (timestamp, string)**:\n",
"> the month (and year) which the loan was funded -- useful for backfilling data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Running whylogs for logging a single dataset\n",
"\n",
"Let's import a function from whylogs that will allow us to create a logging session.\n",
"\n",
"This session can be connected with multiple writers that output the results of our profiling in JSON, a flat CSV, or binary protobuf format. These profiles can be stored locally or in an AWS S3 bucket in the cloud. Additional writing functionality will be added over time.\n",
"\n",
"Let's create a default session below."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from whylogs import get_or_create_session\n",
"\n",
"session = get_or_create_session()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quickly log a dataframe\n",
"\n",
"You can call `log_dataframe` to quickly log a Pandas dataframe"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"session.log_dataframe(data.head(100), 'demo')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# whylogs output\n",
"\n",
"Now that we've logged our dataset, we can see the output of the whylogs profiling process in the newly created directory. WhyLogs logger creates an `output` directory within our original directory. This directory in turn contains folders with various summaries for our sample dataset called `demo`."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Current working directory: /Volumes/Workspace/whylogs-examples/python\n"
]
}
],
"source": [
"print(\"Current working directory:\", os.getcwd())"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"whylogs-output/demo/dataset_summary/freq_numbers/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/json/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/flat_table/dataset_summary-batch.csv\n",
"whylogs-output/demo/dataset_summary/histogram/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/frequent_strings/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_profile/protobuf/datase_profile-batch.bin\n",
"whylogs-output/another-dataset/dataset_summary/freq_numbers/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/freq_numbers/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/json/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/json/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/flat_table/dataset_summary-1498867200000.csv\n",
"whylogs-output/another-dataset/dataset_summary/flat_table/dataset_summary-1600732800000.csv\n",
"whylogs-output/another-dataset/dataset_summary/histogram/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/histogram/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/frequent_strings/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/frequent_strings/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_profile/protobuf/datase_profile-1498867200000.bin\n",
"whylogs-output/another-dataset/dataset_profile/protobuf/datase_profile-1600732800000.bin\n"
]
}
],
"source": [
"!find whylogs-output -type f"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using the Logger API\n",
"The Logger API can be used to log data profiles to memory as well. This data stays in memory until you call `.close()`, either explicitly or using the `with` statement."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"with session.logger(dataset_name=\"another-dataset\", dataset_timestamp=datetime.datetime(2017, 1, 1, 0, 0)) as logger:\n",
" logger.log_dataframe(data.head(100))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this example, you can see that the dataset has the timestamp added as the suffix."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"whylogs-output/demo/dataset_summary/freq_numbers/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/json/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/flat_table/dataset_summary-batch.csv\n",
"whylogs-output/demo/dataset_summary/histogram/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_summary/frequent_strings/dataset_summary-batch.json\n",
"whylogs-output/demo/dataset_profile/protobuf/datase_profile-batch.bin\n",
"whylogs-output/another-dataset/dataset_summary/freq_numbers/dataset_summary-1483228800000.json\n",
"whylogs-output/another-dataset/dataset_summary/freq_numbers/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/freq_numbers/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/json/dataset_summary-1483228800000.json\n",
"whylogs-output/another-dataset/dataset_summary/json/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/json/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/flat_table/dataset_summary-1483228800000.csv\n",
"whylogs-output/another-dataset/dataset_summary/flat_table/dataset_summary-1498867200000.csv\n",
"whylogs-output/another-dataset/dataset_summary/flat_table/dataset_summary-1600732800000.csv\n",
"whylogs-output/another-dataset/dataset_summary/histogram/dataset_summary-1483228800000.json\n",
"whylogs-output/another-dataset/dataset_summary/histogram/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/histogram/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_summary/frequent_strings/dataset_summary-1483228800000.json\n",
"whylogs-output/another-dataset/dataset_summary/frequent_strings/dataset_summary-1498867200000.json\n",
"whylogs-output/another-dataset/dataset_summary/frequent_strings/dataset_summary-1600732800000.json\n",
"whylogs-output/another-dataset/dataset_profile/protobuf/datase_profile-1498867200000.bin\n",
"whylogs-output/another-dataset/dataset_profile/protobuf/datase_profile-1600732800000.bin\n",
"whylogs-output/another-dataset/dataset_profile/protobuf/datase_profile-1483228800000.bin\n"
]
}
],
"source": [
"!find whylogs-output -type f"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Interacting with Dataset Profiles\n",
"\n",
"Instead of interacting with the Logger, which writes to disk, sometimes you may want to use a `DatasetProfile` object directly.\n",
"\n",
"You can use `session.new_profile` to create an empty profile:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"profile = session.new_profile(dataset_name=\"in-memory\", \n",
" dataset_timestamp=datetime.datetime(2017, 1, 1, 0, 0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Profiling a DataFrame"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"profile.track_dataframe(data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This DatasetProfile object, stored in the `profile` variable, can now be referenced from Python.\n",
"\n",
"This object contains helpful information about the profile, such as the session ID, the dates associated with both the data and the session, as well as user-specified metadata and tags."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, let's transform the dataset profile into the flat summary form. Unlike the binary `protobuf.bin` file and the hierarchical `whylogs.json` file that was written using the logger, the summary format makes it much easier to analyze and run data science processes on the data. This structure is much more flat, a table format or a single depth dictionary format organized by variable.\n",
"\n",
"These less hierarchical formats were also created with the `log_dataframe` functionality and can be found in the `summary_summary.csv`, `summary_histogram.json` and `summary_strings.json` files."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"summaries = profile.flat_summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's first take a look at the overall summary for the profiled dataset."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
column
\n",
"
count
\n",
"
null_count
\n",
"
bool_count
\n",
"
numeric_count
\n",
"
max
\n",
"
mean
\n",
"
min
\n",
"
stddev
\n",
"
nunique_numbers
\n",
"
...
\n",
"
nunique_str_upper
\n",
"
quantile_0.0000
\n",
"
quantile_0.0100
\n",
"
quantile_0.0500
\n",
"
quantile_0.2500
\n",
"
quantile_0.5000
\n",
"
quantile_0.7500
\n",
"
quantile_0.9500
\n",
"
quantile_0.9900
\n",
"
quantile_1.0000
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
sec_app_open_act_il
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
...
\n",
"
0.0
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
1
\n",
"
bc_open_to_buy
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
305.0
\n",
"
96285.0
\n",
"
11781.862295
\n",
"
0.0
\n",
"
15110.810631
\n",
"
302.0
\n",
"
...
\n",
"
0.0
\n",
"
0.000000
\n",
"
10.000000
\n",
"
155.000000
\n",
"
2004.000000
\n",
"
6784.000000
\n",
"
15545.000000
\n",
"
43811.0
\n",
"
74544.0
\n",
"
96285.0
\n",
"
\n",
"
\n",
"
2
\n",
"
mths_since_rcnt_il
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
304.0
\n",
"
228.0
\n",
"
23.013158
\n",
"
1.0
\n",
"
27.996225
\n",
"
70.0
\n",
"
...
\n",
"
0.0
\n",
"
1.000000
\n",
"
1.000000
\n",
"
3.000000
\n",
"
7.000000
\n",
"
14.000000
\n",
"
27.000000
\n",
"
86.0
\n",
"
130.0
\n",
"
228.0
\n",
"
\n",
"
\n",
"
3
\n",
"
sec_app_collections_12_mths_ex_med
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
...
\n",
"
0.0
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4
\n",
"
chargeoff_within_12_mths
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
309.0
\n",
"
1.0
\n",
"
0.003236
\n",
"
0.0
\n",
"
0.056888
\n",
"
2.0
\n",
"
...
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
145
\n",
"
settlement_percentage
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
...
\n",
"
0.0
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
146
\n",
"
pymnt_plan
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
...
\n",
"
1.0
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
147
\n",
"
total_rec_prncp
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
309.0
\n",
"
35000.0
\n",
"
5266.577896
\n",
"
262.7
\n",
"
6502.059928
\n",
"
276.0
\n",
"
...
\n",
"
0.0
\n",
"
262.700012
\n",
"
349.440002
\n",
"
848.909973
\n",
"
1697.630005
\n",
"
2965.600098
\n",
"
5597.330078
\n",
"
20000.0
\n",
"
35000.0
\n",
"
35000.0
\n",
"
\n",
"
\n",
"
148
\n",
"
all_util
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
309.0
\n",
"
117.0
\n",
"
56.757282
\n",
"
2.0
\n",
"
21.046084
\n",
"
87.0
\n",
"
...
\n",
"
0.0
\n",
"
2.000000
\n",
"
10.000000
\n",
"
18.000000
\n",
"
43.000000
\n",
"
58.000000
\n",
"
72.000000
\n",
"
89.0
\n",
"
106.0
\n",
"
117.0
\n",
"
\n",
"
\n",
"
149
\n",
"
sec_app_mort_acc
\n",
"
309.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
0.000000
\n",
"
0.0
\n",
"
...
\n",
"
0.0
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
150 rows × 32 columns
\n",
"
"
],
"text/plain": [
" column count null_count bool_count \\\n",
"0 sec_app_open_act_il 309.0 0.0 0.0 \n",
"1 bc_open_to_buy 309.0 0.0 0.0 \n",
"2 mths_since_rcnt_il 309.0 0.0 0.0 \n",
"3 sec_app_collections_12_mths_ex_med 309.0 0.0 0.0 \n",
"4 chargeoff_within_12_mths 309.0 0.0 0.0 \n",
".. ... ... ... ... \n",
"145 settlement_percentage 309.0 0.0 0.0 \n",
"146 pymnt_plan 309.0 0.0 0.0 \n",
"147 total_rec_prncp 309.0 0.0 0.0 \n",
"148 all_util 309.0 0.0 0.0 \n",
"149 sec_app_mort_acc 309.0 0.0 0.0 \n",
"\n",
" numeric_count max mean min stddev \\\n",
"0 0.0 0.0 0.000000 0.0 0.000000 \n",
"1 305.0 96285.0 11781.862295 0.0 15110.810631 \n",
"2 304.0 228.0 23.013158 1.0 27.996225 \n",
"3 0.0 0.0 0.000000 0.0 0.000000 \n",
"4 309.0 1.0 0.003236 0.0 0.056888 \n",
".. ... ... ... ... ... \n",
"145 0.0 0.0 0.000000 0.0 0.000000 \n",
"146 0.0 0.0 0.000000 0.0 0.000000 \n",
"147 309.0 35000.0 5266.577896 262.7 6502.059928 \n",
"148 309.0 117.0 56.757282 2.0 21.046084 \n",
"149 0.0 0.0 0.000000 0.0 0.000000 \n",
"\n",
" nunique_numbers ... nunique_str_upper quantile_0.0000 \\\n",
"0 0.0 ... 0.0 NaN \n",
"1 302.0 ... 0.0 0.000000 \n",
"2 70.0 ... 0.0 1.000000 \n",
"3 0.0 ... 0.0 NaN \n",
"4 2.0 ... 0.0 0.000000 \n",
".. ... ... ... ... \n",
"145 0.0 ... 0.0 NaN \n",
"146 0.0 ... 1.0 NaN \n",
"147 276.0 ... 0.0 262.700012 \n",
"148 87.0 ... 0.0 2.000000 \n",
"149 0.0 ... 0.0 NaN \n",
"\n",
" quantile_0.0100 quantile_0.0500 quantile_0.2500 quantile_0.5000 \\\n",
"0 NaN NaN NaN NaN \n",
"1 10.000000 155.000000 2004.000000 6784.000000 \n",
"2 1.000000 3.000000 7.000000 14.000000 \n",
"3 NaN NaN NaN NaN \n",
"4 0.000000 0.000000 0.000000 0.000000 \n",
".. ... ... ... ... \n",
"145 NaN NaN NaN NaN \n",
"146 NaN NaN NaN NaN \n",
"147 349.440002 848.909973 1697.630005 2965.600098 \n",
"148 10.000000 18.000000 43.000000 58.000000 \n",
"149 NaN NaN NaN NaN \n",
"\n",
" quantile_0.7500 quantile_0.9500 quantile_0.9900 quantile_1.0000 \n",
"0 NaN NaN NaN NaN \n",
"1 15545.000000 43811.0 74544.0 96285.0 \n",
"2 27.000000 86.0 130.0 228.0 \n",
"3 NaN NaN NaN NaN \n",
"4 0.000000 0.0 0.0 1.0 \n",
".. ... ... ... ... \n",
"145 NaN NaN NaN NaN \n",
"146 NaN NaN NaN NaN \n",
"147 5597.330078 20000.0 35000.0 35000.0 \n",
"148 72.000000 89.0 106.0 117.0 \n",
"149 NaN NaN NaN NaN \n",
"\n",
"[150 rows x 32 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"summary = summaries['summary']\n",
"summary"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Using the streaming mode\n",
"\n",
"It's convenient to call whylogs on a batch of data with a Pandas dataframe. However, in practice you might have only individual data points. In that case, `whylogs` can be called on each individual datum (Python dictionary object in this case).\n",
"\n",
"The following example shows how we can stream through individual data points by iterating with a dataframe and extracting rows as an object:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"profile2 = session.new_profile(dataset_name=\"in-memory\", \n",
" dataset_timestamp=datetime.datetime(2017, 1, 1, 0, 0))\n",
"for i, row in data.iterrows():\n",
" profile2.track(row.to_dict())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The counter should now be updated incrementally, and the two profiles can be merged:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"merged_profile = profile.merge(profile2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Streaming mode isn't limited to just the API. We can also merge the profiles across different sessions to get a holistic view:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"309\n",
"309\n",
"618\n"
]
}
],
"source": [
"print(profile.columns['dti'].counters.count)\n",
"print(profile2.columns['dti'].counters.count)\n",
"print(merged_profile.columns['dti'].counters.count)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## whylogs output\n",
"\n",
"We can see that this summary object is much smaller at **roughly 150 rows x 32 columns** than the original dataset at **1000 rows x 151 columns**. Smaller storage sizes are important in reducing costs and making it easier for your data scientists to complete monitoring and post-analysis on large amounts of data.\n",
"\n",
"Each row of our flat profile summary contains the name of the variable found in the original dataset, in the column called `column`.\n",
"\n",
"We can also see a number of useful metrics as columns in our summary: descriptive statistics, type information, unique estimates and bounds, as well as specially formulated metrics like inferred_dtype and dtype_fraction.\n",
"\n",
"Let's explore the output of the whylogs profiler to check on a few of the interesting variables we mentioned earlier. For example, let's look at the `funded_amnt` variable."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
65
\n",
"
\n",
" \n",
" \n",
"
\n",
"
column
\n",
"
funded_amnt
\n",
"
\n",
"
\n",
"
count
\n",
"
309.0
\n",
"
\n",
"
\n",
"
null_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
bool_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
numeric_count
\n",
"
309.0
\n",
"
\n",
"
\n",
"
max
\n",
"
40000.0
\n",
"
\n",
"
\n",
"
mean
\n",
"
14511.407767
\n",
"
\n",
"
\n",
"
min
\n",
"
1000.0
\n",
"
\n",
"
\n",
"
stddev
\n",
"
9011.80195
\n",
"
\n",
"
\n",
"
nunique_numbers
\n",
"
117.0
\n",
"
\n",
"
\n",
"
nunique_numbers_lower
\n",
"
117.0
\n",
"
\n",
"
\n",
"
nunique_numbers_upper
\n",
"
117.0
\n",
"
\n",
"
\n",
"
inferred_dtype
\n",
"
2.0
\n",
"
\n",
"
\n",
"
dtype_fraction
\n",
"
1.0
\n",
"
\n",
"
\n",
"
type_unknown_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
type_null_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
type_fractional_count
\n",
"
309.0
\n",
"
\n",
"
\n",
"
type_integral_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
type_boolean_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
type_string_count
\n",
"
0.0
\n",
"
\n",
"
\n",
"
nunique_str
\n",
"
0.0
\n",
"
\n",
"
\n",
"
nunique_str_lower
\n",
"
0.0
\n",
"
\n",
"
\n",
"
nunique_str_upper
\n",
"
0.0
\n",
"
\n",
"
\n",
"
quantile_0.0000
\n",
"
1000.0
\n",
"
\n",
"
\n",
"
quantile_0.0100
\n",
"
1200.0
\n",
"
\n",
"
\n",
"
quantile_0.0500
\n",
"
3200.0
\n",
"
\n",
"
\n",
"
quantile_0.2500
\n",
"
7350.0
\n",
"
\n",
"
\n",
"
quantile_0.5000
\n",
"
12000.0
\n",
"
\n",
"
\n",
"
quantile_0.7500
\n",
"
20000.0
\n",
"
\n",
"
\n",
"
quantile_0.9500
\n",
"
35000.0
\n",
"
\n",
"
\n",
"
quantile_0.9900
\n",
"
36000.0
\n",
"
\n",
"
\n",
"
quantile_1.0000
\n",
"
40000.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 65\n",
"column funded_amnt\n",
"count 309.0\n",
"null_count 0.0\n",
"bool_count 0.0\n",
"numeric_count 309.0\n",
"max 40000.0\n",
"mean 14511.407767\n",
"min 1000.0\n",
"stddev 9011.80195\n",
"nunique_numbers 117.0\n",
"nunique_numbers_lower 117.0\n",
"nunique_numbers_upper 117.0\n",
"inferred_dtype 2.0\n",
"dtype_fraction 1.0\n",
"type_unknown_count 0.0\n",
"type_null_count 0.0\n",
"type_fractional_count 309.0\n",
"type_integral_count 0.0\n",
"type_boolean_count 0.0\n",
"type_string_count 0.0\n",
"nunique_str 0.0\n",
"nunique_str_lower 0.0\n",
"nunique_str_upper 0.0\n",
"quantile_0.0000 1000.0\n",
"quantile_0.0100 1200.0\n",
"quantile_0.0500 3200.0\n",
"quantile_0.2500 7350.0\n",
"quantile_0.5000 12000.0\n",
"quantile_0.7500 20000.0\n",
"quantile_0.9500 35000.0\n",
"quantile_0.9900 36000.0\n",
"quantile_1.0000 40000.0"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"summary[summary['column']=='funded_amnt'].T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You may notice that the count for this variable was recorded as **309** hits, with a minimum loan amount of **$1,000.00 USD** and a maximum loan amount of **\\$40,000.00 USD**.\n",
"\n",
"For numerical variables like `funded_amnt`, we can view additional information in the histograms dictionary from the profile summaries object. The variable's histogram object contains bin edges along with counts."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'bin_edges': [1000.0, 2300.0001333333335, 3600.000266666667, 4900.000400000001, 6200.000533333334, 7500.000666666667, 8800.000800000002, 10100.000933333335, 11400.001066666668, 12700.0012, 14000.001333333334, 15300.001466666668, 16600.001600000003, 17900.001733333334, 19200.00186666667, 20500.002, 21800.002133333335, 23100.00226666667, 24400.0024, 25700.002533333336, 27000.002666666667, 28300.002800000002, 29600.002933333337, 30900.003066666668, 32200.003200000003, 33500.00333333334, 34800.00346666667, 36100.003600000004, 37400.00373333334, 38700.00386666667, 40000.004], 'counts': [7, 12, 11, 34, 14, 19, 32, 8, 24, 9, 22, 14, 9, 9, 24, 7, 3, 5, 8, 2, 5, 3, 5, 3, 2, 0, 15, 0, 0, 3]}\n"
]
}
],
"source": [
"histograms = summaries['hist']\n",
"print(histograms['funded_amnt'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For another variable, `loan_status`, we can discover intriguing information within other metrics. This is because loan status is a categorical field that takes strings as inputs.\n",
"\n",
"Let's look at a few relevant metrics for this and other string variables."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
type_string_count
\n",
"
type_null_count
\n",
"
nunique_str
\n",
"
nunique_str_lower
\n",
"
nunique_str_upper
\n",
"
\n",
" \n",
" \n",
"
\n",
"
138
\n",
"
309.0
\n",
"
0.0
\n",
"
6.0
\n",
"
6.0
\n",
"
6.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" type_string_count type_null_count nunique_str nunique_str_lower \\\n",
"138 309.0 0.0 6.0 6.0 \n",
"\n",
" nunique_str_upper \n",
"138 6.0 "
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"summary[summary['column']=='loan_status'][['type_string_count', \n",
" 'type_null_count', \n",
" 'nunique_str', \n",
" 'nunique_str_lower', \n",
" 'nunique_str_upper']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that there are **309** elements of string type. Also, the unique string fields show **6** unique strings. The lower and upper bounds for the estimate are also **6**, meaning that this is an exact number. You will see many instances of this -- DataSketches in whylogs finds exact estimates for numbers as high as 400 unique values.\n",
"\n",
"Let's now explore the frequent strings object from our profile summaries."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'Current': 239, 'Fully Paid': 54, 'Charged Off': 7, 'Late (31-120 days)': 5, 'In Grace Period': 3, 'Late (16-30 days)': 1}\n"
]
}
],
"source": [
"frequent_strings = summaries['frequent_strings']\n",
"print(frequent_strings['loan_status'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Writing data to disk\n",
"\n",
"Sometimes you want to write your data out manually rather than relying on the Logger framework (it's more opinionated!), you can perform your own serialization and deserialization.\n",
"\n",
"whylogs uses protobuf for efficient storage. Here's how it works:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"profile.write_protobuf(\"profile.bin\")\n",
"roundtrip = profile.read_protobuf(\"profile.bin\")"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"150"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(roundtrip.columns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualizing multiple datasets across time with whylogs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To use the whylogs visualization tools, we'll need to import the `ProfileVisualizer` object and use the Altair visualization framework."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"from whylogs.viz import ProfileVisualizer\n",
"\n",
"viz = ProfileVisualizer()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we've explored data for a single month, let's calculate profile summaries for a series of months. Normally, we'd expect whylogs to be operating on future data, so these new datasets would originate from data seen at inference time.\n",
"\n",
"But in special cases like this demo or diagnosing data collected prior to whylogs integration, it may be helpful to backfill with past data. Here we'll loop through subsets of data to create a list of profile summaries."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[,\n",
" ,\n",
" ,\n",
" ,\n",
" ,\n",
" ]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a list of data profiles\n",
"remaining_dates = ['Feb-2017', 'Mar-2017', 'Apr-2017', 'May-2017', 'Jun-2017']\n",
"\n",
"profiles = [profile] # list with original profile\n",
"for date in remaining_dates:\n",
" timestamp = datetime.datetime.strptime(date, '%b-%Y')\n",
" subset_data = full_data[full_data['issue_d']==date]\n",
" subset_prof = session.profile_dataframe(subset_data, \"demo\", dataset_timestamp=timestamp)\n",
" profiles.append(subset_prof)\n",
"\n",
"profiles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's pass this list of profiles into the visualizer."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"viz.set_profiles(profiles)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now explore temporal visualizations of our profiles at a quick glance."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsAAAAHeCAYAAAAlws4bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAB7CAAAewgFu0HU+AAEAAElEQVR4nOzdZWAbV74F8DNCMztxwHEchx1mhrZJ2qbMzLRb5i1D0m7b7RZfmbZtypw20DAzO+DEsWPmGGTZYs37ILBkjWSZJMc5v/e8lQeurhRrJM2Z/72CKIoiiIiIiIiIiIiIiIiIiLoIWbA7QERERERERERERERERNSeGIARERERERERERERERFRl8IAjIiIiIiIiIiIiIiIiLoUBmBERERERERERERERETUpTAAIyIiIiIiIiIiIiIioi6FARgRERERERERERERERF1KQzAiIiIiIiIiIiIiIiIqEthAEZERERERERERERERERdCgMwIiIiIiIiIiIiIiIi6lIYgBEREREREREREREREVGXwgCMiIiIiIiIiIiIiIiIuhQGYERERERERERERERERNSlMAAjIiIiIiIiIiIiIiKiLoUBGBEREREREREREREREXUpDMCIiIiIiIiIiIiIiIioS2EARkRERERERERERERERF0KAzAiIiIiIiIiIiIiIiLqUhiAERERERERERERERERUZfCAIyIiIiIiIiIiIiIiIi6FEWwO0AUKG9/+BHWbtjosXz2jOm4/647g9CjwGnpY7/omus8liUmJOCTd97qiO51Gk8tWIhDRzI9ll95ycW4+rJLg9Aj6orKKipw5/0PSq776O030T0xMcA9ovby3c+/4Idff/NYfu+dd+DMmTM67H5FUURufj5KSstQq9FAW1+P0JAQREVFIiEuHgP6p0Gp4Ee+YON7cfs4nHkUz7z0MiwWi9tyhVyOV154Hv37pbotzzh8GM8sfNmjndPh8x+RPz7/ehEWL1vusbxf3xS88vxzUKlUQegVEREREVH74NkQCqrb73sAFZWVPrdRKBQIDQlBSEgIkrp1Q3KvXhg0cADGjhqJiPDwAPWUiALBW4DQUos++YjHB+rycvML8PtfS7D3wAHUajRet1Or1UgfPAjnzp2LcaNHBa6DRO2sprYWr7/7fx7hl0wmw0P33u0RfhFR82685mpUnDyJrTt2ui3P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ju8gERERERERERERERERdRkBCcC09Q3O24MGDGh2e73B4LzN4bWJiIiIiIiIiIiIiIioJQISgCkUcudttUrV7PZFxcXO22FhYR3SJyIiIiIiIiIiIiIiIuqaAhKARUVEOuf7qqis9Lmttr4eBw4ddlZ+xcXGdmjfiIiIiIiIiIiIiIiIqGsJSACW2rcvAEAEsGvvPmg0dZLbmc1mvP/JZzAYDBBhG/4wLTU1EF0kIiIiIiIiIiIiIiKiLkIRiDsZPWI4tu/aBQFAfX09Hn32OUSEh7tt894nn2L/wUOorKyEADgrxsaOGhmILhIREREREREREREREVEXEZAKsFnTpyEyIsL5e3lFBU7k5jp/FwGsXrceFZWVzuALAGJjYzB+7JhAdJGIiIiIiIiIiIiIiIi6iIAEYGqVCnfefJMz3HKt8HJwDHkouNy+/cYbIJcFpItERERERERERERERETURQQsXZo6aSJuuuZqQBAANIZdrj9AYzB21WWXYtL48YHqHhEREREREREREREREXURAZkDzOHC+ecirV8qvv7+Rxw7flxym149euCGq6/CBA59SERERERERERERERERK0Q0AAMAIYNGYJXX3gO5RWVOHLsGGpqamCxWhEdFYX+/VKRkpwc6C4RERERERERERERERFRFxLwAMyhW2ICuiUmBOvuiYiIiIiIiIiIiIiIqIsK2BxgRERERERERERERERERIHAAIyIiIiIiIiIiIiIiIi6lIAMgXjJtde3aj+FQoHIyAh079YNI9LTcdasmUiIj2/n3hEREREREREREREREVFXEpAATGzlfiazGVXVNaiurkHm0WP49c+/cN2VV+CCc85u1/4RERERERERERERERFR1xGQAAwAhDbs6wjQTCYT/rfoGygVCpwz56z26BYRERERERERERERERF1MQGdA6wllWCiy/aCy48I4Kvvv0etRtPOvSMiIiIiIiIiIiIiIqKuICAVYEnduqGsvNwWYslkiI+L87qtXq9HnVYLAYA6RA2VUgVNXR2Axioyg96ADZu34HwOhUhERERERERERERERERNBCQAO+/sefj0q68hABiRPhTP/etxr9tWnDyJux96BGazGeFh4Xj3P69CU1eHz75ahJ179jhDsP0HDzEAIyIiIiIiIiIiIiIiIg8BGQJx9779ztupKSk+t02Mj8fkCeMhAqiqqsKK1WvQPTERj95/L2KiowHYhkEsKCrqwB4TERERERERERERERHRqSogAVhxaYnztiAIPra06d6tm/P2lu07AABKhQKjRgx3zgtWZx8WkYiIiIiIiIiIiIiIiMhVQAKwmlqNc+jCzKysZrcvq6gAYK/0Ki52Lk9wmTvMaDS2ZxeJiIiIiIiIiIiIiIioiwhIACazV32JAI5kHsXq9Ru8bltSVoYdu3c7AzOzydTYjqyxuyEhIR3RVSIiIiIiIiIiIiIiIjrFKQJxJz17JCH7RC4E2EKw9z7+BGs3bsSsadPQPTERYWGhqNNqkZWdg6UrVkKvNzgDsOjoKGc7J6uqnLfDwsLa1Kf6hgbs2rMX+w8exIm8fJRXVECn10OlUiEhPg6D+vfH7BnTMWzIEJ/tiKKItRs3YsPmrcgrKECdVovIiAj0Se6NmVOnYNa0aW7BnTc6nQ5LVqzE9p27UFpeDr3BgJjoaAweOABzZ8/G8PShfj2ukrIyLF2xEnsPHEDlSdvzlRAXh1EjhmP+3DnokZTkVzsHjxzBitVrceTYMdTU1iJErUb3bomYOG4c5s+d0+bnn4iIiIiIiIiIiIiIqKMEJACbMHYssk/kAoAzBDt8JBOHj2R6bCu6bCMAGDxwoHOdaxsR4eGt7o+mrg633/cADAaDxzq9Xo/ComIUFhVj9foNmDFlCu696w4oFZ5PlU6nw8LX/4tDTR5HdU0NqmtqsD/jIFav24CnH30YoaGhXvuTV1CAhf95HRWVJ92WV1RWoqKyEhu3bMUF55yNW66/zufj2rhlK/7vk089HldhcTEKi4uxcu063HP7bZg+ZbLPdj7/ehEWL1vutsxkMqFOq8XxnBNYsWYNnn70EaQkJ/tsh4iIiIiIiIiIiIiIKBgCEoDNnzcXfy3/G1qtFkBjwCVFaPL7vDPPAADU1NYiLz/fub57t8RW98discBgMEAmCBgyeBBGpKcjuXcvhIWGQqutx6HMTKzftBkNOh02bNmCuLhY3HTN1R7tvPHe+87wK33wYJwxYzriYmNRVV2N1Rs24HDmURzKzMSb73+AJx9+SLIvWm29M/wSBAGzpk3F2NGjEBoSiqLiYixZsRJl5eVYvGw5EuLjccG550i2czTrON7+4EOYLRaEhYbinDlnYWD//hAE27qlK1dCp9Pj7Q8/QvduiRjYv79kO78vWeoMv5K6d8O5c+agV8+e0Ol12LVnH9Zv3oyKypNY+J//4s1/v9SmIJKIiIiIiIiIiIiIiKgjBCQACw8Lw6P334sFr73unNOradAlZe6ZZziHINy5Z49baNand+9W90cuk+Pss87EpRecj8SEBI/10yZPwnlnz8PDTz4NvcGAv1evxvVXXQm5y1CG+zIysHPPXgDA7OnTcN9dd0IQGh/V7BnT8db7H2LDli3YsXsPDhw6hBHp6R739fuSJc7Kr3/edivmzJ7lXDd21EicMWMG/vXCCygsKsb3v/6GM2bMQESEZ+j0xTffwGyxQK1W4+XnnkXfPo3VWRPGjsW0yZPw+LPPw2gy4ctvv8dLzz7t0Yamrg4//PorAKBPcm/8+7lnEe4y1OG0SZMwZNAAfPDZF6iorMTipctwzeWXeXuaiYiIiIiIiIiIiIiIgqL5yanayfChQ/HK888huXdviIDzx8F1mUKhwNWXXYo7b77JuX7MyJF4+dlnnD/nzDmr1X2JiorEXbfcLBl+OfTq0QOjRowAAOh0emg0Grf1y1etBgCo1WrcesP1buEXAMhkMtx+0w1QKZW27Veu9rgPq9WKFWvWAgAGDRjgFn45RESE46ZrrgEANDQ0YMOWLR7b5ObnI/NYFgDgvHlz3cIvh9SUFJw7by4A4FBmJvILCz222bB5C3Q6PQDg5muvdQu/HOadeSYG9OsHAPh79RqIordaPiIiIiIiIiIiIiIiouAISAWYQ7++KXj71X9j97792LV3L3Lz8lFnHxYxLCwUPZKSMHjAAEydNBFRkZFu+8bHxSE+Li6Q3YXRaJtLS6VSuQ31ZzabsS/jIABg5LBhXocBjIyIwMjhw7Bzz17sy8iA2WyGwmUusazsHGjq6gAAUydN9NqP0SNHIDwsDPUNDdi1dx/OnTvHbf3uffuct6dOmuS1nemTJ+H3v5YAAHbt3edRRedoJzIiAiOHeVarOUybPAlZOTmo1WiQlZ2Dgf3TvG5LREREREREREREREQUaAENwBzGjhqJsaNGBuOu/XYiLw8HDh0GAJw1cyaU9kouACgqKYFeb6uUSk3p47OdtNRU7NyzFw06HYpLS91Cp+M5Oc7bvtqRy2RI7ZuCg4ePuO3T2M4JAIBCLkef3r28tpOSnAyFXA6zxYLj2d7b6ZPcGzKZ9+LAtH6pbo+BARgREREREREREREREXUmQQnAOiutth7llZXYvG0blq1cBbPZjInjxuKma6922664pNR5u5uPYRQBIDE+3mW/ErcArLi05e1o6uqg1da7zQPm6E9sbIxbhVlTCoUCsbExqKg86XbfgO2xO6rxWvqYWkMURRiNxlbt2xWZ7HPjAbahMS3g0JJEFDgWi0XyNhGdnnhMIKJg43GIiDoKjy9EFExNj0FGozWIvelcOmqqJQZgAKpranDzP+9xWzZs6BDMmT0bM6dO8dy+tsZ5OyIiwmfbkS5DOVbX1Hrcb6vaqa1xC8Bqam3tRoT7bgMAIiMiUVF50u2+W9qXKLe+1PrY0juz2YyMjIxW7dtVybolAQDqtVpodQ1B7g0Rna5OVlYGuwtE1InwmEBEwcbjEBF1FB5fiCgYhDDbef3y8nKUVpYHuTddX0ADME1dHTZs2Yrj2TnQ1GlgMpmb30kAFjz1ZMd3ronKkydRXFLiUW0FAAa9wXlbpVL5bMd16ESDweC2zvX3Zttxqexq2o7e0DhXWXMc/fFsQ9/YF5c+S1H4eExERERERERERERERETBFrAAbNPWbXjv00/dwqPmiACEjuuSU0REBBY8/SSMRhNqamuRnXMCazZswA+//oaVa9fhxSefQO9ePZ3bG12Gq1PI5T7bdl1vaDLkX4vacQ3AmrRjsv/eXBuu2zQdftCtLz6GUWx6P0374i+FQoEhQ4a0at+uyGQy4VhVDQAgPCICYVGRvncgImpHFovFefVjfEIC5H68nxBR18VjAhEFG49DRNRReHwhomCyWCyoatABALp164bEHt2D3KPO48iRIzCb/SiYaqGABGBZ2dl46/0PYLH6P6ZlIIIvB6VCgeFDhzp/P3PmDJwz5yw89txzqKquxuvv/h/eeHkhZDKZbXuXCihrM4/J7DKup7pJhZZS4d6Orzdd13/8pu0olEoYjcZm++Lan6bVYk374k8bUn3xlyAIflWsnY5kMhnk9r81IqJAk8vlkMv4JZCIbHhMIKJg43GIiDoKjy9EFExyuRwqFWeochCEjkmEAnKW/dc//4LFaoUA+P0TbMm9e+HcOXMAALn5+Thy7JhznWvoY2omlTSZGiuk1Gq12zq1urGd5tJNk0uFlkc79v74k5A6+uOrL80+JqP3x0RERERERERERERERBRsAQnAjhw95hZqiX7+BNugAf2dt0/k5jlvx8bGOG/XNzT4bKOuTtu4X0y027rYmBa0o3VpJzrGbZ2jP8214dqO63179KW+JX2J9rElERERERERERERERFR4AWkxk5bXw+gcU6v0SNGYM7sWUhMSEBoaIjb8HudiVLZWBWlNzTOXdYzKcl5u/Jkpc82yisb1/dw2a9pOxWVJxEXG9tsO5EREYiICPdoJ7+gEJVVVbBarc6hGpsymc2orq6x98V9fNGoyEhEhIdDW1/fpsdEREREREREREREREQUbAEJwMLDwlBXVwcAiIuLw1OPPnxKzHFUXlHhvB3jUunUq2dPhKjV0BsMOHY822cbx3NyAAAhISHo2aOH27q01FTn7WPHj7tVnLmyWCw4kZcPAOiX2tdjfVpqKrbt3AWj0Yi8ggKkpqRItpObl+ecv6tfX+l29h88iOwTubBYrV7/jY5n57js49kOERERERERERERERFRMAUkhUpLTXVWf6Uk9w56+KXX6/3absOWLc7b6UMGO28rFQoMTx8KANi7/4DbkICu6rRaHDh0GAAwclg6lAr3vHHggP6ICA+339dWr/3YeyADDfbhDceNGuWxfszIEc7b6zdv8VjvsHn7DuftcaO9t6Opq8Pe/Qe8trPF3k5kRAQG9pcO7YiIiIiIiIiIiIiIiIIlIEnU1IkTnLera2oCcZc+vfrW2/jmx5+g0dR53ea7n3/BoSOZAIAxI0eiR3f3IQPnnXkGAMBoMuGzrxZBFN1nLRNFEZ9+9TVMJpPb9q7kMhnOmjUTAJCVnY2Va9d5bKOtr8dX330PwFZFNnPqVI9t0lJTMaBfPwDA0hUrkZtf4LFNbn4+lq5YCQAY2D9Nskps1vRpUKvVAICvvv9eck6xFWvWIste1TZn9iyvwy0SEREREREREREREREFS0CGQJw5bSp+/P0PlFdUoKCoGLUaDaKjogJx15KMJhN++v0P/L5kKUaPGIHhQ4ege7dEKBVKFBQXY+PmLc6QJyoyEnfefKNHG+NGj8bI4cOwP+Mg1m3ahMqqk5g9fTriYmJQVV2NNRs24lCmI0AbgTEjR0r25ZLzz8f6zVtQXVODDz79DJnHjmHMyJEIDQ1BYXEJlq5YgdKycgDA5RddgKioSMl2brz2ajz38iswGo148sUFmD93Dgak2UKxo1nHsWzlKhiNRsjlctx0zTWSbURHReGyCy/ANz/+hPyCQjzy1DM4d+4c9OzRA3q9Hrv27cO6jZsAAPFxsbjovPkteNaJiIiIiIiIiIiIiIgCQxCbli51gLUbNmL/wUNYv3kzBABTJk7E2FHSgZCU2TOmt2t//v3Gm9i+a3ez2/XskYQnHnwQyb17Sa7X1tdjwWuv42hWltc2hgwciKcfewThYWFet8k+cQIvvf4GqqqrvW5z7tw5uOMmzyDO1ZoNG/DhZ1/AaK86a0qlUuGft92CWdOmeW1DFEV89MX/sHzVaq/bxMfF4elHH/Y615gvBw4cgMlkglKpxIgRI5rf4TRhNBpxqKwCgjoEUTGxCGdlHREFkMVqQXlZGQCgW/fukMvkQe4REQUTjwlEFGw8DhFRR+HxhYiCyWK1oKJOC9FsQlJsDJJUAalPOiV0VG4QkADs4muvhwA45wFrqV+/+bpd+yOKIo5mZWH3vv04djwbhcXFqNNqYbVaERkRgbTUvpg0fjxmTpvqMW9XUxarFWvWb8DGLVuRX1gIrVaL8PBw9O3TBzOmTMbsGdP9GiZQW1+PpStWYvuu3SgrL4fBaER0VBSGDByAOWfMxoj0dL8eW1FxMZasWIl9GRmoqrIFanFxsRg9YgTmz52Lnj2S/Gpnf8ZBrFy7DkePZ6GmVgOVUomk7t0xcdxYzJ8312eg5wsDMGkMwIgomPglkIhc8ZhARMHG4xARdRQeX4gomBiAeddRuUFQnuGWJG6tCcyabVMQMHjgQAweOLDNbcllMsyZPQtzZs9qUzsR4eG44uKLcMXFF7WpnV49ezZbKeaPkcOHYeTwYW1uh4iIiIiIiIiIiIiIKNACGoAJTf7bnA4vTSMiIiIiIiIiIiIiIqIuJ2ABGMMsIiIiIiIiIiIiIiIiCoSABGBXXnJxIO6GiIiIiIiIiIiIiIiIKDAB2FWXXhKIuyEiIiIiIiIiIiIiIiKCLNgdICIiIiIiIiIiIiIiImpPDMCIiIiIiIiIiIiIiIioSwnIEIhNGY1G1Gm1sFqtfm2fmJDQwT0iIiIiIiIiIiIiIiKiriKgAdimrdvw659/Ijcv3/+dBAG/Lvqq4zpFREREREREREREREREXUrAArDflyzFV99+BwAQW7CfILZkayIiIiIiIiIiIiIiIjrdBSQAqzh5Et/++JMz+BL83I/RFxEREREREREREREREbVUQAKwjVu2wmQ2uwVfvsItfwMyIiIiIiIiIiIiIiIioqYCEoAdPHzEeVsEIJfL0a9vCrKycyAACAsLQ9+UPs5tjhw9BtFqRY/u3REXFxuILhIREREREREREREREVEXEZAArLi0BAJs4ZdMJsO/n3sGPbon4fo77wIAJCTEY+HTTzm3//h/X2LZylUICwt1W05ERERERERERERERETUHFkg7kRTpwVgG9pwYFoaBqSlQaVSOtdXVVW7bX/ZhRcAAHJO5GL7rt2B6CIRERERERERERERERF1EQEJwAwGg/N2v9S+AACVSgWVSgURgFarRUNDg3ObuNhYqNVqAMCmrVsD0UUiIiIiIiIiIiIiIiLqIgISgMnlcuftiPBw5+3YmGjn7cysLOdti8UCs8kEADh2PDsAPSQiIiIiIiIiIiIiIqKuIiABWGhIiPO2wWh03u6Z1MN5+8fffoderwcALFu5CharFSKAWo0mEF0kIiIiIiIiIiIiIiKiLkIRiDtJTIiHpq4OAoDComLn8tSUPth74AAA4FjWcdz4j7sRFhqC2loNBABiIDpHREREREREREREREREXUpAKsB6dO8OwBZoHTl6FBaLBQAwdtQo5zYiAKPRiJpaDUT77wKA3r16BqKLRERERERERERERERE1EUEJADrm9LHeVun02HvgQwAwNDBg5DcqxcAW9jl+uMwa9q0QHSRiIiIiIiIiIiIiIiIuoiABGDDhgzFwLQ0DExLw4C0NJSUljrX/ePWW6BQKiX3GzJoEM6ZOycQXSQiIiIiIiIiIiIiIqIuIiBzgA0a0B+vvvi85LohgwbixSf/hf99+x2OZR2HCCA0JARnzJiO66+6EnJZQDI6IiIiIiIiIiIiIiIi6iICEoA1Z/DAgXjl+edgMptRX1+PyMhIBl9ERERERERERERERETUKp0qZVIqFIiJjnaGXyazGR9+9kWQe0VERERERERERERERESnkk4VgLmqOHkSTz7/IlasWRPsrhAREREREREREREREdEppMOHQNRo6lBxshKiKCIhPh4x0dHN7rN3/wG8+f4HqNNqIXR0B4mIiIiIiIiIiIiIiKhL6bAALCc3F599vQhHMo+6Le/dqxcuvfACzJw6RXK/737+BT/9/gdEUeyorhEREREREREREREREVEX1iEB2IFDh7DwtddhNpvRNMYqKCrC2+9/gJzcXNx87TXO5VptPd547z3sO5AB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\n",
"text/plain": [
"