Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save luisherranz/805e1881fa93d1564933961c24cb545c to your computer and use it in GitHub Desktop.
Save luisherranz/805e1881fa93d1564933961c24cb545c to your computer and use it in GitHub Desktop.
interactivity-api-colab.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/adamsilverstein/47d5f2debd2a4005f23d9ed5867cb8cb/interactivity-api-colab.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KcAZ2RHCg_Ze"
},
"source": [
"## Interactivity API\n",
"\n",
"Report on adoption and impact."
]
},
{
"cell_type": "markdown",
"source": [
"## Setup"
],
"metadata": {
"id": "4G2WkwMPzxbT"
}
},
{
"cell_type": "markdown",
"metadata": {
"id": "qTmLBxDxBAZL"
},
"source": [
"### Provide your credentials to the runtime"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "SeTJb51SKs_W",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3b26afec-eae9-4b60-cb9d-f452c9b69a65"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Authenticated\n"
]
}
],
"source": [
"from google.colab import auth\n",
"auth.authenticate_user()\n",
"print('Authenticated')\n",
"project_id = 'wpp-research'"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "goQQ96EDKs_7"
},
"source": [
"### Declare the Cloud project ID which will be used throughout this notebook\n",
"\n"
]
},
{
"cell_type": "code",
"source": [
"from google.cloud.bigquery import magics\n",
"# Update with your own Google Cloud Platform project name\n",
"magics.context.project = 'wpp-research'"
],
"metadata": {
"id": "YdTgQYtSoOoE"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"### Add a helper to get the latest dataset"
],
"metadata": {
"id": "yV85Ec6A9FED"
}
},
{
"cell_type": "code",
"source": [
"from datetime import datetime, timedelta\n",
"\n",
"def get_first_of_previous_month():\n",
" today = datetime.now()\n",
" first_day_previous_month = datetime(today.year, today.month - 1, 1) if today.month > 1 else datetime(today.year - 1, 12, 1)\n",
" return first_day_previous_month.strftime('%Y_%m_%d')\n",
"\n",
"dataset = get_first_of_previous_month() # eg. \"2023_06_01\" - datasets are updated monthly, indicate the latest"
],
"metadata": {
"id": "stNLljYnR355"
},
"execution_count": 3,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "UMKGkkZEPVRu"
},
"source": [
"### Optional: Enable data table display\n",
"\n",
"Colab includes the ``google.colab.data_table`` package that can be used to display large pandas dataframes as an interactive data table.\n",
"It can be enabled with:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "LMNA-vBHPyHz"
},
"outputs": [],
"source": [
"%load_ext google.colab.data_table"
]
},
{
"cell_type": "code",
"source": [
"from google.colab import data_table\n",
"data_table.enable_dataframe_formatter()"
],
"metadata": {
"id": "JlBfb2k3JpRS"
},
"execution_count": 5,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Interactivity API\n",
"## Adoption over time"
],
"metadata": {
"id": "2FfbQTTPMspu"
}
},
{
"cell_type": "code",
"source": [
"from google.cloud import bigquery\n",
"\n",
"client = bigquery.Client(project=project_id)\n",
"\n",
"query = f\"\"\"\n",
"WITH\n",
" wordpress_sites AS (\n",
" SELECT\n",
" date,\n",
" page AS origin,\n",
" client AS device,\n",
" JSON_EXTRACT(custom_metrics, '$.cms.wordpress.uses_interactivity_api') AS uses_interactivity_api\n",
" FROM\n",
" `httparchive.all.pages`,\n",
" UNNEST(technologies) AS technologies,\n",
" UNNEST(technologies.categories) AS category\n",
" WHERE\n",
" date > PARSE_DATE( '%Y-%m-%d', '2024-04-01' )\n",
" AND technologies.technology = 'WordPress'\n",
" AND category = 'CMS'\n",
" AND is_root_page = TRUE\n",
" )\n",
"\n",
"SELECT\n",
" date,\n",
" COUNT( DISTINCT origin ) AS wordpress_origins,\n",
" COUNT( DISTINCT IF( uses_interactivity_api = 'true', origin, null ) ) AS uses_interactivity_api,\n",
" COUNT( DISTINCT IF( uses_interactivity_api = 'true', origin, null ) ) / COUNT ( DISTINCT origin ) AS pct_uses_interactivity_api\n",
"FROM wordpress_sites\n",
"GROUP BY date\n",
"ORDER BY date ASC\n",
"\"\"\"\n",
"\n",
"ia_adoption_data = client.query(query).to_dataframe()\n",
"\n",
"ia_adoption_data"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 273
},
"id": "XCV29-7Nm5cE",
"outputId": "449b6d27-9fff-473d-ee91-e9e95c8f7850"
},
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date wordpress_origins uses_interactivity_api \\\n",
"0 2024-05-01 5934368 45339 \n",
"1 2024-06-01 5895943 47442 \n",
"2 2024-07-01 5820251 48424 \n",
"3 2024-08-01 5634882 48603 \n",
"4 2024-09-01 5779122 52791 \n",
"5 2024-10-01 5983748 57402 \n",
"6 2024-11-01 5916935 58379 \n",
"\n",
" pct_uses_interactivity_api \n",
"0 0.007640 \n",
"1 0.008047 \n",
"2 0.008320 \n",
"3 0.008625 \n",
"4 0.009135 \n",
"5 0.009593 \n",
"6 0.009866 "
],
"text/html": [
"\n",
" <div id=\"df-016eb4ac-e3f5-4de0-9221-7f5b5166895e\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>wordpress_origins</th>\n",
" <th>uses_interactivity_api</th>\n",
" <th>pct_uses_interactivity_api</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-05-01</td>\n",
" <td>5934368</td>\n",
" <td>45339</td>\n",
" <td>0.007640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-06-01</td>\n",
" <td>5895943</td>\n",
" <td>47442</td>\n",
" <td>0.008047</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-07-01</td>\n",
" <td>5820251</td>\n",
" <td>48424</td>\n",
" <td>0.008320</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2024-08-01</td>\n",
" <td>5634882</td>\n",
" <td>48603</td>\n",
" <td>0.008625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2024-09-01</td>\n",
" <td>5779122</td>\n",
" <td>52791</td>\n",
" <td>0.009135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2024-10-01</td>\n",
" <td>5983748</td>\n",
" <td>57402</td>\n",
" <td>0.009593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2024-11-01</td>\n",
" <td>5916935</td>\n",
" <td>58379</td>\n",
" <td>0.009866</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-016eb4ac-e3f5-4de0-9221-7f5b5166895e')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-016eb4ac-e3f5-4de0-9221-7f5b5166895e button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-016eb4ac-e3f5-4de0-9221-7f5b5166895e');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-6e09330a-761d-42db-9204-3f744fc7f77b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6e09330a-761d-42db-9204-3f744fc7f77b')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-6e09330a-761d-42db-9204-3f744fc7f77b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" <div id=\"id_e7950b47-2b32-4be2-b532-f9a9b3ea5cee\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('ia_adoption_data')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_e7950b47-2b32-4be2-b532-f9a9b3ea5cee button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('ia_adoption_data');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "ia_adoption_data",
"summary": "{\n \"name\": \"ia_adoption_data\",\n \"rows\": 7,\n \"fields\": [\n {\n \"column\": \"date\",\n \"properties\": {\n \"dtype\": \"dbdate\",\n \"num_unique_values\": 7,\n \"samples\": [\n \"2024-05-01\",\n \"2024-06-01\",\n \"2024-10-01\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"wordpress_origins\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 7,\n \"samples\": [\n 5934368,\n 5895943,\n 5983748\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 7,\n \"samples\": [\n 45339,\n 47442,\n 57402\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pct_uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0008197851123314178,\n \"min\": 0.0076400722031394076,\n \"max\": 0.009866425776183109,\n \"num_unique_values\": 7,\n \"samples\": [\n 0.0076400722031394076,\n 0.008046549975126964,\n 0.009592984196526993\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
},
"application/vnd.google.colaboratory.module+javascript": "\n import \"https://ssl.gstatic.com/colaboratory/data_table/e523c247d1e24a05/data_table.js\";\n\n const table = window.createDataTable({\n data: [[{\n 'v': 0,\n 'f': \"0\",\n },\n\"2024-05-01\",\n{\n 'v': 5934368,\n 'f': \"5934368\",\n },\n{\n 'v': 45339,\n 'f': \"45339\",\n },\n{\n 'v': 0.0076400722031394076,\n 'f': \"0.0076400722031394076\",\n }],\n [{\n 'v': 1,\n 'f': \"1\",\n },\n\"2024-06-01\",\n{\n 'v': 5895943,\n 'f': \"5895943\",\n },\n{\n 'v': 47442,\n 'f': \"47442\",\n },\n{\n 'v': 0.008046549975126964,\n 'f': \"0.008046549975126964\",\n }],\n [{\n 'v': 2,\n 'f': \"2\",\n },\n\"2024-07-01\",\n{\n 'v': 5820251,\n 'f': \"5820251\",\n },\n{\n 'v': 48424,\n 'f': \"48424\",\n },\n{\n 'v': 0.008319916099838306,\n 'f': \"0.008319916099838306\",\n }],\n [{\n 'v': 3,\n 'f': \"3\",\n },\n\"2024-08-01\",\n{\n 'v': 5634882,\n 'f': \"5634882\",\n },\n{\n 'v': 48603,\n 'f': \"48603\",\n },\n{\n 'v': 0.008625380265283283,\n 'f': \"0.008625380265283283\",\n }],\n [{\n 'v': 4,\n 'f': \"4\",\n },\n\"2024-09-01\",\n{\n 'v': 5779122,\n 'f': \"5779122\",\n },\n{\n 'v': 52791,\n 'f': \"52791\",\n },\n{\n 'v': 0.00913477860477768,\n 'f': \"0.00913477860477768\",\n }],\n [{\n 'v': 5,\n 'f': \"5\",\n },\n\"2024-10-01\",\n{\n 'v': 5983748,\n 'f': \"5983748\",\n },\n{\n 'v': 57402,\n 'f': \"57402\",\n },\n{\n 'v': 0.009592984196526993,\n 'f': \"0.009592984196526993\",\n }],\n [{\n 'v': 6,\n 'f': \"6\",\n },\n\"2024-11-01\",\n{\n 'v': 5916935,\n 'f': \"5916935\",\n },\n{\n 'v': 58379,\n 'f': \"58379\",\n },\n{\n 'v': 0.009866425776183109,\n 'f': \"0.009866425776183109\",\n }]],\n columns: [[\"number\", \"index\"], [\"string\", \"date\"], [\"number\", \"wordpress_origins\"], [\"number\", \"uses_interactivity_api\"], [\"number\", \"pct_uses_interactivity_api\"]],\n columnOptions: [{\"width\": \"1px\", \"className\": \"index_column\"}],\n rowsPerPage: 25,\n helpUrl: \"https://colab.research.google.com/notebooks/data_table.ipynb\",\n suppressOutputScrolling: true,\n minimumWidth: undefined,\n });\n\n function appendQuickchartButton(parentElement) {\n let quickchartButtonContainerElement = document.createElement('div');\n quickchartButtonContainerElement.innerHTML = `\n<div id=\"df-000b749d-e3ca-494a-aa70-b6556fdbe427\">\n <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-000b749d-e3ca-494a-aa70-b6556fdbe427')\"\n title=\"Suggest charts\"\n style=\"display:none;\">\n \n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n width=\"24px\">\n <g>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n </g>\n</svg>\n </button>\n \n<style>\n .colab-df-quickchart {\n --bg-color: #E8F0FE;\n --fill-color: #1967D2;\n --hover-bg-color: #E2EBFA;\n --hover-fill-color: #174EA6;\n --disabled-fill-color: #AAA;\n --disabled-bg-color: #DDD;\n }\n\n [theme=dark] .colab-df-quickchart {\n --bg-color: #3B4455;\n --fill-color: #D2E3FC;\n --hover-bg-color: #434B5C;\n --hover-fill-color: #FFFFFF;\n --disabled-bg-color: #3B4455;\n --disabled-fill-color: #666;\n }\n\n .colab-df-quickchart {\n background-color: var(--bg-color);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: none;\n fill: var(--fill-color);\n height: 32px;\n padding: 0;\n width: 32px;\n }\n\n .colab-df-quickchart:hover {\n background-color: var(--hover-bg-color);\n box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n fill: var(--button-hover-fill-color);\n }\n\n .colab-df-quickchart-complete:disabled,\n .colab-df-quickchart-complete:disabled:hover {\n background-color: var(--disabled-bg-color);\n fill: var(--disabled-fill-color);\n box-shadow: none;\n }\n\n .colab-df-spinner {\n border: 2px solid var(--fill-color);\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n animation:\n spin 1s steps(1) infinite;\n }\n\n @keyframes spin {\n 0% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n border-left-color: var(--fill-color);\n }\n 20% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 30% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n border-right-color: var(--fill-color);\n }\n 40% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 60% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n }\n 80% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-bottom-color: var(--fill-color);\n }\n 90% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n }\n }\n</style>\n\n <script>\n async function quickchart(key) {\n const quickchartButtonEl =\n document.querySelector('#' + key + ' button');\n quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n quickchartButtonEl.classList.add('colab-df-spinner');\n try {\n const charts = await google.colab.kernel.invokeFunction(\n 'suggestCharts', [key], {});\n } catch (error) {\n console.error('Error during call to suggestCharts:', error);\n }\n quickchartButtonEl.classList.remove('colab-df-spinner');\n quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n }\n (() => {\n let quickchartButtonEl =\n document.querySelector('#df-000b749d-e3ca-494a-aa70-b6556fdbe427 button');\n quickchartButtonEl.style.display =\n google.colab.kernel.accessAllowed ? 'block' : 'none';\n })();\n </script>\n</div>`;\n parentElement.appendChild(quickchartButtonContainerElement);\n }\n\n appendQuickchartButton(table);\n "
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"source": [
"ia_adoption_data.head(1000)"
],
"metadata": {
"id": "xJn59S62H_6u",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 273
},
"outputId": "0c02414e-375f-4c22-a42e-f41e8a88ed52"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date wordpress_origins uses_interactivity_api \\\n",
"0 2024-05-01 5934368 45339 \n",
"1 2024-06-01 5895943 47442 \n",
"2 2024-07-01 5820251 48424 \n",
"3 2024-08-01 5634882 48603 \n",
"4 2024-09-01 5779122 52791 \n",
"5 2024-10-01 5983748 57402 \n",
"6 2024-11-01 5916935 58379 \n",
"\n",
" pct_uses_interactivity_api \n",
"0 0.007640 \n",
"1 0.008047 \n",
"2 0.008320 \n",
"3 0.008625 \n",
"4 0.009135 \n",
"5 0.009593 \n",
"6 0.009866 "
],
"text/html": [
"\n",
" <div id=\"df-7cbf2cad-a940-4626-a9d6-0d105d48c638\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>wordpress_origins</th>\n",
" <th>uses_interactivity_api</th>\n",
" <th>pct_uses_interactivity_api</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-05-01</td>\n",
" <td>5934368</td>\n",
" <td>45339</td>\n",
" <td>0.007640</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-06-01</td>\n",
" <td>5895943</td>\n",
" <td>47442</td>\n",
" <td>0.008047</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-07-01</td>\n",
" <td>5820251</td>\n",
" <td>48424</td>\n",
" <td>0.008320</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2024-08-01</td>\n",
" <td>5634882</td>\n",
" <td>48603</td>\n",
" <td>0.008625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2024-09-01</td>\n",
" <td>5779122</td>\n",
" <td>52791</td>\n",
" <td>0.009135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2024-10-01</td>\n",
" <td>5983748</td>\n",
" <td>57402</td>\n",
" <td>0.009593</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2024-11-01</td>\n",
" <td>5916935</td>\n",
" <td>58379</td>\n",
" <td>0.009866</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7cbf2cad-a940-4626-a9d6-0d105d48c638')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-7cbf2cad-a940-4626-a9d6-0d105d48c638 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-7cbf2cad-a940-4626-a9d6-0d105d48c638');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-dc3e29b7-f27a-448c-9bdc-13fcadda531b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-dc3e29b7-f27a-448c-9bdc-13fcadda531b')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-dc3e29b7-f27a-448c-9bdc-13fcadda531b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "ia_adoption_data",
"summary": "{\n \"name\": \"ia_adoption_data\",\n \"rows\": 7,\n \"fields\": [\n {\n \"column\": \"date\",\n \"properties\": {\n \"dtype\": \"dbdate\",\n \"num_unique_values\": 7,\n \"samples\": [\n \"2024-05-01\",\n \"2024-06-01\",\n \"2024-10-01\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"wordpress_origins\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 7,\n \"samples\": [\n 5934368,\n 5895943,\n 5983748\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 7,\n \"samples\": [\n 45339,\n 47442,\n 57402\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pct_uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0008197851123314178,\n \"min\": 0.0076400722031394076,\n \"max\": 0.009866425776183109,\n \"num_unique_values\": 7,\n \"samples\": [\n 0.0076400722031394076,\n 0.008046549975126964,\n 0.009592984196526993\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
},
"application/vnd.google.colaboratory.module+javascript": "\n import \"https://ssl.gstatic.com/colaboratory/data_table/e523c247d1e24a05/data_table.js\";\n\n const table = window.createDataTable({\n data: [[{\n 'v': 0,\n 'f': \"0\",\n },\n\"2024-05-01\",\n{\n 'v': 5934368,\n 'f': \"5934368\",\n },\n{\n 'v': 45339,\n 'f': \"45339\",\n },\n{\n 'v': 0.0076400722031394076,\n 'f': \"0.0076400722031394076\",\n }],\n [{\n 'v': 1,\n 'f': \"1\",\n },\n\"2024-06-01\",\n{\n 'v': 5895943,\n 'f': \"5895943\",\n },\n{\n 'v': 47442,\n 'f': \"47442\",\n },\n{\n 'v': 0.008046549975126964,\n 'f': \"0.008046549975126964\",\n }],\n [{\n 'v': 2,\n 'f': \"2\",\n },\n\"2024-07-01\",\n{\n 'v': 5820251,\n 'f': \"5820251\",\n },\n{\n 'v': 48424,\n 'f': \"48424\",\n },\n{\n 'v': 0.008319916099838306,\n 'f': \"0.008319916099838306\",\n }],\n [{\n 'v': 3,\n 'f': \"3\",\n },\n\"2024-08-01\",\n{\n 'v': 5634882,\n 'f': \"5634882\",\n },\n{\n 'v': 48603,\n 'f': \"48603\",\n },\n{\n 'v': 0.008625380265283283,\n 'f': \"0.008625380265283283\",\n }],\n [{\n 'v': 4,\n 'f': \"4\",\n },\n\"2024-09-01\",\n{\n 'v': 5779122,\n 'f': \"5779122\",\n },\n{\n 'v': 52791,\n 'f': \"52791\",\n },\n{\n 'v': 0.00913477860477768,\n 'f': \"0.00913477860477768\",\n }],\n [{\n 'v': 5,\n 'f': \"5\",\n },\n\"2024-10-01\",\n{\n 'v': 5983748,\n 'f': \"5983748\",\n },\n{\n 'v': 57402,\n 'f': \"57402\",\n },\n{\n 'v': 0.009592984196526993,\n 'f': \"0.009592984196526993\",\n }],\n [{\n 'v': 6,\n 'f': \"6\",\n },\n\"2024-11-01\",\n{\n 'v': 5916935,\n 'f': \"5916935\",\n },\n{\n 'v': 58379,\n 'f': \"58379\",\n },\n{\n 'v': 0.009866425776183109,\n 'f': \"0.009866425776183109\",\n }]],\n columns: [[\"number\", \"index\"], [\"string\", \"date\"], [\"number\", \"wordpress_origins\"], [\"number\", \"uses_interactivity_api\"], [\"number\", \"pct_uses_interactivity_api\"]],\n columnOptions: [{\"width\": \"1px\", \"className\": \"index_column\"}],\n rowsPerPage: 25,\n helpUrl: \"https://colab.research.google.com/notebooks/data_table.ipynb\",\n suppressOutputScrolling: true,\n minimumWidth: undefined,\n });\n\n function appendQuickchartButton(parentElement) {\n let quickchartButtonContainerElement = document.createElement('div');\n quickchartButtonContainerElement.innerHTML = `\n<div id=\"df-3037eb57-aa9f-4973-b514-f77ebb5a0ea5\">\n <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-3037eb57-aa9f-4973-b514-f77ebb5a0ea5')\"\n title=\"Suggest charts\"\n style=\"display:none;\">\n \n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n width=\"24px\">\n <g>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n </g>\n</svg>\n </button>\n \n<style>\n .colab-df-quickchart {\n --bg-color: #E8F0FE;\n --fill-color: #1967D2;\n --hover-bg-color: #E2EBFA;\n --hover-fill-color: #174EA6;\n --disabled-fill-color: #AAA;\n --disabled-bg-color: #DDD;\n }\n\n [theme=dark] .colab-df-quickchart {\n --bg-color: #3B4455;\n --fill-color: #D2E3FC;\n --hover-bg-color: #434B5C;\n --hover-fill-color: #FFFFFF;\n --disabled-bg-color: #3B4455;\n --disabled-fill-color: #666;\n }\n\n .colab-df-quickchart {\n background-color: var(--bg-color);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: none;\n fill: var(--fill-color);\n height: 32px;\n padding: 0;\n width: 32px;\n }\n\n .colab-df-quickchart:hover {\n background-color: var(--hover-bg-color);\n box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n fill: var(--button-hover-fill-color);\n }\n\n .colab-df-quickchart-complete:disabled,\n .colab-df-quickchart-complete:disabled:hover {\n background-color: var(--disabled-bg-color);\n fill: var(--disabled-fill-color);\n box-shadow: none;\n }\n\n .colab-df-spinner {\n border: 2px solid var(--fill-color);\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n animation:\n spin 1s steps(1) infinite;\n }\n\n @keyframes spin {\n 0% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n border-left-color: var(--fill-color);\n }\n 20% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 30% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n border-right-color: var(--fill-color);\n }\n 40% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 60% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n }\n 80% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-bottom-color: var(--fill-color);\n }\n 90% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n }\n }\n</style>\n\n <script>\n async function quickchart(key) {\n const quickchartButtonEl =\n document.querySelector('#' + key + ' button');\n quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n quickchartButtonEl.classList.add('colab-df-spinner');\n try {\n const charts = await google.colab.kernel.invokeFunction(\n 'suggestCharts', [key], {});\n } catch (error) {\n console.error('Error during call to suggestCharts:', error);\n }\n quickchartButtonEl.classList.remove('colab-df-spinner');\n quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n }\n (() => {\n let quickchartButtonEl =\n document.querySelector('#df-3037eb57-aa9f-4973-b514-f77ebb5a0ea5 button');\n quickchartButtonEl.style.display =\n google.colab.kernel.accessAllowed ? 'block' : 'none';\n })();\n </script>\n</div>`;\n parentElement.appendChild(quickchartButtonContainerElement);\n }\n\n appendQuickchartButton(table);\n "
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "markdown",
"source": [
"### Interactity API adoption over time"
],
"metadata": {
"id": "laQH9R2FlBqZ"
}
},
{
"cell_type": "code",
"source": [
"# plot the adoption data for mobile/desktop, organized by date as the X axis and pct_uses_interactivity_api as the Y axis\n",
"\n",
"import pandas as pd\n",
"import ipywidgets as widgets\n",
"\n",
"# Assuming you've run the BigQuery query and stored the results\n",
"adoption_data = ia_adoption_data.copy()\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# order data by date\n",
"adoption_data = adoption_data.sort_values(by='date')\n",
"\n",
"# Plotting\n",
"plt.figure(figsize=(12, 6)) # Adjust the figure size for better readability\n",
"\n",
"# Plot the data\n",
"plt.plot(adoption_data['date'], adoption_data['pct_uses_interactivity_api'], marker='o', linestyle='-', color='blue', label='WordPress Sites')\n",
"\n",
"# Formatting\n",
"plt.xlabel('Date', fontsize=12)\n",
"plt.ylabel('% of WordPress Sites Using Interactivity API', fontsize=12)\n",
"plt.title('Adoption of Interactivity API Over Time (Mobile / Desktop)', fontsize=14)\n",
"plt.legend(fontsize=12) # Show the legend for clarity\n",
"plt.grid(axis='y', linestyle='--') # Add a subtle grid for better visual reference\n",
"plt.xticks(rotation=45, ha=\"right\") # Rotate x ticks for readability\n",
"\n",
"# Format Y numbers as pertcents, with 5 decimal points of precision\n",
"plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda y, _: '{:.3%}'.format(y)))\n",
"\n",
"# Show the plot\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"id": "NjZsC6N1IENa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"outputId": "85cdf428-d5aa-4a28-fc69-d46bee7f1e7d"
},
"execution_count": 8,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADMHElEQVR4nOzdd3RU1dfG8e+kh5IEAoQeelF6710QkCJNihAQUQGRZkFRmgpiQbCidGmCGIkUDT8hSAdpIghI7x1JIEDqff+4bwbGFCZDwpDwfNZi6T3nln1mJoHsnLOPxTAMAxERERERERERkQfIxdkBiIiIiIiIiIjIo0dJKREREREREREReeCUlBIRERERERERkQdOSSkREREREREREXnglJQSEREREREREZEHTkkpERERERERERF54JSUEhERERERERGRB05JKREREREREREReeCUlBIRERERERERkQdOSSkRkUzq+PHjWCwWevfu7exQbDRq1AiLxeLsMO7LqlWrqFu3Ljly5MBisdC+fXtnh5Sp9O7dG4vFwvHjx516D8k81q5di8ViYcyYMc4OxW5Lly7FYrGwadMmp8YxZswYLBYLa9eutfsai8VCo0aN7vs+j6KkXruH1bPPPktgYCC3b992digikoEpKSUi8pB67rnnsFgs+Pv7ExUV5exw7JbZf/A4fvw47dq14+jRo/Tp04fRo0fTtWvXFK9JeE2+//77+3p2ZkjoAcyePRuLxcLs2bMf6HOdkZhYt24dFosFi8XCDz/8kOx5Ca/J3X+8vb0pU6YMw4YN4/LlyzbnJ3wWzp8/n6p4Dh8+zMCBAyldujRZs2Yle/bslC9fntdee41z5845NMYHLeHryd4/GSkRlSAmJobXX3+dFi1aUKdOHWt7wi8bLBYLefPmJTY2Nsnr9+/fbz2vSJEiDyjqh0e5cuWoVq3aPc8rUqSIzWfF09OT3LlzU6NGDQYOHMiGDRseQLSOc/bfCaNGjeLMmTNMnjzZaTGISMbn5uwAREQksevXr7N48WIsFgtXr15l6dKlPPPMM84OK01899133Lx509lhOOy3337j9u3bfPLJJ3Tv3t3Z4WRKEyZMYMSIERQoUMCp90gLM2bMAMzZDzNnzqRz584pnt+0aVPq1asHwKVLlwgNDeXTTz8lODiYHTt24O/v73AsM2fO5KWXXiI2NpYmTZrQtm1b4uPj2bJlCx9//DFTp05l0aJFtGrVyuFnPAhJzSLZvXs3ISEhNGzYMFF/o0aNqFGjBvv37ydXrlwPJsj7NHfuXA4dOsTUqVOT7Hdzc+PChQusXLmStm3bJuqfMWMGLi7O+93z/v37yZIli1OefeTIEfbt28e7775r1/murq68/fbbAMTGxvLvv//y119/8c033/DVV1/Rpk0b5syZQ44cOdIz7AypVKlStGvXjg8++IBBgwaRNWtWZ4ckIhmQklIiIg+hRYsWERkZybBhw5g8eTIzZszINEmpwoULOzuE+3L27FkA8ufP7+RIMq98+fKRL18+p9/jfkVERLBkyRIqVKhAQEAAq1at4tSpUxQqVCjZa5o1a8aIESOsxzExMbRo0YKwsDA+//xzh2f9LF++nOeffx5/f39CQkJsZt8A/Pzzz3Tt2pUOHTqwadMmqlSp4tBzHoRGjRolSjzNnj2bkJAQGjVqlOxrVKZMmfQPLo18/fXXFCpUiMaNGyfZX6dOHf78809mzpyZKCkVGxvLvHnzaNasGb///vuDCDcRZ77WISEhALRr186u893c3JL8zJw4cYK+ffuybNkynn76adasWePURN/D6tlnnyU4OJjvv/+evn37OjscEcmA9J1VROQhNGPGDNzc3Hj99ddp3Lgxq1ev5sSJE0meGxcXx8SJEylRogReXl6UKFGCCRMmEB8fn+z99+7dS5cuXciTJw+enp4ULVqUIUOGcOXKlUTnFilShCJFinDt2jVefPFF8ubNi5eXF5UrV2bhwoU25zZq1IixY8cC0Lhx4ySXjyS33CA2NpZJkyZRsWJFvL298fX1pXHjxixbtizRuXcv/1q1ahV16tQhS5Ys+Pv7ExQUlOQ4UmLP65GwbGb06NGJxufoUsWE2iEXLlwgKCiIXLly4e3tTa1atRLd02KxWH/AvHu5yX9rhu3Zs4euXbuSL18+PDw8CAwMZNCgQYlek7trju3fv5+nn34af39/mzpMP/30E926daNEiRJkyZIFX19f6tevz48//pjsmP7880969OhBwYIF8fT0JF++fDz55JPW97F379706dMHgD59+tiMJcF/60GtX78ei8XCc889l+QzL168iLu7O3Xr1k32HmPGjLH+gD927Fib5x4/fpxnn30Wi8XCtm3bknzGqFGjsFgsiT7zKVm4cCE3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CebSvKgocHGB/v1h7Fjw93d2dCIiIg83h2ZKffXVVwQHB7NgwYK0jkdERERE5KFnGDB/PpQuDe+/byakmjSB3bvNGVJKSImIiNybxfjvtnl2qFChAlevXuXcuXNky5aNggUL4urqantji4U///wzzQLNjCIiIvD19SU8PBwfHx9nhyMiIiIidti+3awbtWmTeVy0KHzyCbRvDxaLU0MTERF5KNib73Bo+V7OnDnx9/enZMmSDgcoIiIiIpKRnD8Pb70Fs2ebM6WyZjWPhw0DLy9nRyciIpLxOJSUWrt2bRqHISIiIiLycIqOhilT4N134fp1s+3ZZ+GDD6BAAefGJiIikpE5lJQSEREREcnsDANWrDBnQh06ZLZVr24mqGrXdm5sIiIimYFdSal169YB0KBBA5vje0k4X0REREQkIzlwAIYMgdBQ8zggwJwZ1auXucOeiIiI3D+7Cp27uLhgsVi4desWHh4e1uPkGIaBxWIhLi4uTYPNbFToXEREROThcu0ajB1r7qAXGwvu7jB0KIwcCfrnmoiIiH3StNB5WFgYAB4eHjbHIiIiIiKZQVwczJhhJp8uXzbb2raFjz8G7e0jIiKSPuyaKSXpQzOlRERERJxv3ToYPBh27zaPy5aFTz+FFi2cGpaIiEiGZW++I01XxB89epT9+/en5S1FRERERNLFyZPwzDPQsKGZkPL1hcmT4c8/lZASERF5EBxKSn322Wd07drVpq1Pnz6ULFmScuXKUa1aNS5evJgmAYqIiIiIpKWbN2HMGChdGhYvNguXv/SSucPe4MFmHSkRERFJfw4lpaZPn05AQID1ODQ0lDlz5vDCCy/w+eefc/ToUcaOHZtmQYqIiIiI3C/DgEWLoEwZs5j57dvmLKkdO+DrryF3bmdHKCIi8mixq9D5f504cYKyZctajxcvXkzRokX5+uuvATh//jxz585NmwhFRERERO7Trl3mLKj1683jwoXNIuadOkEKm0qLiIhIOnJoptR/a6OvWrWKli1bWo+LFCnC+fPn7y8yEREREZH7dOkSvPACVK1qJqS8vWHcODhwADp3VkJKRETEmRxKSpUqVYqffvoJMJfunT171iYpdfr0afz8/NIkQBERERGR1IqONnfQK1kSpk0zl+516wYHD8I775jJKREREXEuh5bvvfrqq3Tv3p0cOXIQGRlJ2bJlaXHX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es9r167p+eefV+HCheXr66uOHTvq7NmzzusXLlxQeHi4fH19FRwcrN27d6d5/fPPP69307upDYB0O37cDJnKlpXGjDEDqfLlpfffN6+NHp0aSElm8HTsmLRhgzRvnvnfo0cJpAAAAADAFaV7Tym73a58+fKpfv36Cg0NVWhoqBo2bChfX99MK+bLL79Ujx499NFHH6l+/fqaNGmSvvrqKx06dEjFihW76f558+apd+/e+vTTT9WoUSP9+uuveuqpp9SlSxdNnDgx3e/Zr18/rVy5Up9//rn8/f01YMAA2e12/fDDD5KkoUOHaufOnfr44481bdo0bdq0STt27JAk/fjjjxowYIC2bt0qtztcG8SeUsCt7dlj7he1YIHkcJhjQUHSiBFSp06S+10vPAYAAAAAZJX05h3pDqW2b9+u2rVr33Hwcifq16+vunXr6v3335ckJScnq0yZMho4cKBefvnlm+4fMGCADhw4oHXr1jnHhg4dqq1bt2rz5s3pes+YmBgVLVpU8+bNU6dOnSRJBw8eVGBgoLZs2aIGDRooLCxMbdu21XPPPacDBw6oTp06unLlihITE1W3bl3NnDlTderUuePnJZQCUhmG9N13Zhj1zTep4w89JA0fbv43ZX8oAAAAAIDryvSNzuvWrZsphd1OQkKCdu7cqVdeecU5Zrfb9dBDD2nLli23fE2jRo00Z84cbdu2TfXq1dPvv/+uVatWqXv37ul+z507dyoxMVEPPfSQ855q1aqpbNmyzlCqVq1aWr9+vfr06aPVq1erZs2akqQJEyaoefPm6Q6krl+/ruvXrzs/jo2NlSQlJiYqMTHRWZ+bm5scDoeSk5PT1O3m5qakpCTdmCO6ubnJbrffdjzlfVO4/2+KSVJSUrrGPTw8lJycLEfKdBVJNptN7u7utx2/Xe08E890q9ptNnctWSJNmGBoxw77/35OQ489ZtPQockKCnL873U555ly4+8Tz8Qz8Uw8E8/EM/FMPBPPxDPxTDxTep8pvVxmEcz58+flcDhUvHjxNOPFixfXwYMHb/mabt266fz58woNDZVhGEpKStJzzz2nV199Nd3veebMGXl6eiogIOCme86cOSNJevnll9WvXz9VrFhR5cuX1yeffKLDhw9r1qxZ2rJli5577jmtWbNGderU0YwZM+Tv73/Let944w2NHTv2pvE1a9YoX758kqSyZcsqODhYe/bsUVRUlPOeqlWrqlq1atq2bZv+/PNP53hQUJDKlSunjRs3Ki4uzjnesGFDFStWTGvWrEnTrC1atJCPj49WrVqVpoawsDDFx8drw4YNzjF3d3c9+uijOn/+fJpg0M/PTw888ID++OMP/fTTT87xokWLqlGjRjp8+LBz83ueiWe63TMlJNi1YUMZrV1bS0eO2CTZ5Onp0IMPRiki4pj69Gmhc+fOa9WqnPNMufH3iWfimXgmnoln4pl4Jp6JZ+KZeCae6U6fydvbW+mR7uV7We3UqVMqVaqUIiMj1bBhQ+f48OHD9f3332vr1q03vea7775Tly5dNG7cONWvX19HjhzRoEGD1LdvX40aNSpd7zlv3jz16tUrzQwmSapXr55atGiht95665b1PvDAAxo0aJCOHz+uFStWaOXKlerbt68KFy58203PbzVTqkyZMjp//rxzOhtpK8+U25/pzz+TNH26Xe+/b9e5c+Z6vIIFDfXrl6znn09W0aI575ly4+8Tz8Qz8Uw8E8/EM/FMPBPPxDPxTDxTRp/p8uXLmbt8L6sVKVJEbm5uaU69k6SzZ8+qRIkSt3zNqFGj1L17d/Xp00eSVKNGDV25ckXPPPOMRo4cma73LFGihBISEnTp0qU0s6X+7uf97LPPFBAQoHbt2ikiIkLt27eXh4eHHnvsMY0ePfq2z+jl5SUvL6+bxj08POTh4ZFmzM3N7ZZT3lIaML3jf33fjIzb7XbZ7Tcf1Hi78dvVzjPl7Wf64w9p0iTp4489dPmyOVa2rPTii9LTT9vk6+smKe3P6+rPlJFxnolnknim29V4p+M8E88k8Uy3q/FOx3kmnknimW5X452O80w8k8QzpdfNVd3Cnj17FBMTk+GfJD08PT0VEhKSZtPy5ORkrVu3Ls0spxtdvXr1pl/YlF84wzDS9Z4hISHy8PBIc8+hQ4cUFRV1y5/3zz//1L///W9NnTpVkuRwOJyJZmJiYpr0EYD0yy9Sz57SvfdKEydKly9LNWpIc+ZIR45IgwZJmXiIJwAAAAAgh0hXKBUcHKyVK1c6P37ggQfShDiZ5cUXX9SMGTM0a9YsHThwQP369dOVK1fUq1cvSVKPHj3SbFoeHh6uadOmacGCBTp69KjWrl2rUaNGKTw83BlO/dN7+vv76+mnn9aLL76oDRs2aOfOnerVq5caNmyoBg0a3FTj4MGDNXToUJUqVUqS1LhxY82ePVsHDhzQxx9/rMaNG2f6rwuQ0xiGtGmT1KaNGUB98YW5UXmLFtLXX0s//yw98YR0m9AfAAAAAJAHpGuOlY+Pj65ever8+LvvvnMumctMjz/+uP7880+NHj1aZ86cUVBQkL755hvnRuVRUVFpZka99tprstlseu2113Ty5EkVLVpU4eHhGj9+fLrfU5Lee+892e12dezYUdevX1erVq304Ycf3lTf6tWrdeTIEc2ePds5NmDAAO3YsUP169dXvXr1NGbMmEz/dQFyiuRkafly6a23pB9/NMdsNikiQho+XKpXz9r6AAAAAACuI10bnTdu3FgXL17UsGHD5O/vr06dOmnQoEFq0qTJ374uIiIi0wrNjWJjY9O18Rfg6q5fl2bPlt55R0o5vMHLy1y299JLUuXK1tYHAAAAAMg+6c070hVK7dixQ506dXIeCWiz2fRPL7PZbOyv9A8IpZDTxcRIH31kbmB+5ow5FhAg9e8vDRwo3easAAAAAABALpbevCNdy/fq1KmjI0eO6LffftPZs2fVvHlzjRw5Ug899FCmFQwg5zh5Upo82Qyk4uLMsVKlzJP0+vaV/PysrQ8AAAAA4PrSfW6fu7u7qlatqqpVq6pnz55q06aN6tevn5W1AXAxBw6YS/Rmz5b+d+ikqlc394vq2lXy9LS2PgAAAABAzpHuUOpGn332WZqP4+PjJZkbogPIfSIjpQkTpGXLUseaNDHDqLAwyZ6uczwBAAAAAEiV4b9KRkVFqVevXipevLh8fX3l6+ur4sWLq3fv3jp+/Hhm1gjAAsnJ0n//K4WGSo0bm4GUzSa1b2+GVBs3Sm3aEEgBAAAAADImQzOlDh48qNDQUF26dEkPP/ywAgMDneNffPGF/vvf/2rz5s2qWrVqphYLIOslJEjz5klvvy3t32+OeXpK3bubJ+lVq2ZtfQAAAACA3CFDodTLL78su92u3bt3q0aNGmmu/fLLL3rwwQf18ssva8mSJZlSJICsFxsrffyxeZLeyZPmWIEC0nPPSYMGSffcY2l5AAAAAIBcJkOh1Pfff6+hQ4feFEhJ0v33368BAwZo4sSJd10cgKx35ox5kt60aVJMjDlWsqQ0ZIj0zDOSv7+19QEAAAAAcqcMhVKJiYl/u6l5vnz5lJhyNBcAl/Trr+ZJerNmmUv2JKlqVXPz8ieekLy8rK0PAAAAAJC7ZWiL4uDgYM2cOVMxKdMqbhAbG6tPPvlEtWvXvuviAGS+bdukjh3NvaFmzDADqYYNpaVLzT2kevcmkAIAAAAAZL0MzZQaO3asHnnkEVWrVk29evVSlSpVJEmHDh3SrFmzFB0drQ8++CBTCwWQcYYhff21NGGC9P33qePh4ebMqNBQ62oDAAAAAORNNsMwjIy88Ntvv9WwYcP0888/pxkPCgrS22+/rQcffDBTCszNYmNj5e/vr5iYGBUoUMDqcpALJSZKCxaYYdQvv5hjHh7m8ryXXpLuu8/a+gAAAAAAuU96844MzZSSpIceeki7d+/WmTNndPz4cUlSuXLlVKJEiYy+JYBMcvmyNHOmNHGi9Mcf5pivr/Tss9LgwVLp0paWBwAAAABAxkOpFCVKlCCIAlzEuXPS1KnSBx9IFy+aY8WLS4MGSf36SQEBlpYHAAAAAIDTXYdSAKz322/Su+9Kn30mXbtmjlWubC7R69FD8va2tj4AAAAAAP6KUArIwXbuNPeLWrhQSk42x+rWlUaMkNq3l9zcLC0PAAAAAIDbIpQCchjDkNauld56S1q/PnW8dWszjGraVLLZrKsPAAAAAID0IJQCcoikJOmrr8yZUT/9ZI65uUldu0rDhkk1a1paHgAAAAAAd4RQCnBxV65In35qnqR37Jg5lj+/1LeveZJeuXJWVgcAAAAAQMZkSij1/fffa+7cuTp58qRKlCihxx9/XC1btsyMtwbyrPPnpfffN39ER5tjRYtKL7wg9e8vFSpkbX0AAAAAANwN+92+wfTp0/Xoo48qISFBtWrV0oULF/Too4/q3XffzYz6gDzn6FFp4ECpbFlp7FgzkLr3XunDD6Xjx6XXXiOQAgAAAADkfDbDMIz03BgXFyc/P7+bxgMDAzVhwgSFh4c7x1599VV98cUXOnHiROZVmgvFxsbK399fMTExKlCggNXlwGK7d0tvvy395z+Sw2GO1a5tbl7esSMn6QEAAAAAcob05h3pnilVqVIlffLJJ+m612azycbxX8A/Mgxp3TqpVSszgJo/3wykWraUvv1W2rFD6tyZQAoAAAAAkPuke0+padOmadiwYfrwww81ZcoUNW7cWJL0wgsvqFu3bnrsscd0zz336ODBg1q6dKn+7//+L8uKBnI6h0NatMg8SW/nTnPMbpcef1waPlwKCrK0PAAAAAAAsly6Z0pFRERo//796tChgx555BF16dJFJ06cUL9+/bRkyRLZ7Xbt2rVLfn5+WrZsmYYPH56VdQM5Uny8NG2aVKWKGUDt3Cn5+EgDBkhHjkjz5hFIAQAAAADyhnTvKXWjkydPavjw4Vq2bJleeukljRgxQj4+PllRX67GnlJ5x4UL5kblU6ZIf/5pjhUubIZRAwZIRYpYWx8AAAAAAJkl0/eUulGpUqU0d+5crVmzRitXrlTVqlU1f/78DBcL5FZRUdKQIeZJeqNGmYFUuXJmOHX8uPSvfxFIAQAAAADypjuaKRUVFaXVq1fr6tWrql+/vho0aCDDMPTpp5/qtdde07333qspU6YoJCQkK2vONZgplXvt3WvuF5Wycbkk1aplnqT32GOSe7p3cwMAAAAAIGfJ9JlSK1asULVq1fTmm2/qiy++UGhoqF566SXZbDY9/fTT+vXXX9WwYUOFhoaqd+/eOnfuXKY8CJBTGIb0/fdSWJhUs6Y0Z44ZSD3wgLR6tbR7t9S1K4EUAAAAAADSHcyUuu+++xQSEqIvvvhCkjR37lz16NFDUVFRKlWqlPO+X3/9VUOGDNHmzZsVExOTNVXnEsyUyh0cDmnpUnNm1LZt5pjdLnXqJA0bJtWpY2l5AAAAAABkq0yfKXXixAk1btzY+XHjxo1lGIZOnTqV5r4qVapo5cqVWrBgQQbKBnKOa9ekjz+WAgPNAGrbNsnbW+rXTzp0SPrySwIpAAAAAABuJ90LiUJDQzVlyhTdf//9CggI0Pjx41WoUCHdd999t7y/devWmVYk4EouXZKmTZMmT5bOnjXHChaUnn9eGjhQKlbM0vIAAAAAAMgR0h1KzZgxQz169FDTpk1lGIYqVqyor776Svny5cvK+gCXceKENGmSNH26dPmyOVamjPTii1KfPpKvr6XlAQAAAACQo6Q7lLrnnnv07bff6tq1a7p27ZoCAgKysCzAdezfL739tjR3rpSYaI7df780fLjUpYvk4WFtfQAAAAAA5ER3fA6Yt7e3vL29s6IWwKVs3iy99Za0YkXqWLNmZhjVurVks1lXGwAAAAAAOR2H0wM3SE6W/vtf8yS9yEhzzGaTOnQww6j69a2tDwAAAACA3IJQCpB0/bq5PO/tt6WDB80xT0+pZ0/ppZekKlWsrQ8AAAAAgNyGUAp5WkyMuXH5pEnS6dPmmL+/1L+/9MILUokSlpYHAAAAAECuRSiFPOn0aTOI+ugjKTbWHCtVShoyROrbVypQwNLyAAAAAADI9QilkKccPCi98440e7aUkGCOBQaa+0V162Yu2QMAAAAAAFmPUAp5wpYt5ubly5ZJhmGOhYaaYdSjj0p2u7X1AQAAAACQ1xBKIddKTpZWrTLDqE2bUsfbtTPDqEaNrKsNAAAAAIC8jlAKuU5CgjR/vnmS3r595piHh9S9u3mSXmCgtfUBAAAAAABCKeQicXHSjBnSe+9JJ06YY35+0nPPSYMGmRuZAwAAAAAA10AohRzv7FlpyhTpww+lS5fMsRIlpMGDzUDK39/K6gAAAAAAwK0QSiHHOnzYPElv1izp+nVzrGpVadgw6cknJS8va+sDAAAAAAC3RyiFHGf7dumtt6TFi1NP0mvQQBoxQmrblpP0AAAAAADICQilkCMYhvTNN+ZJet99lzrepo15kl5oqGSzWVYeAAAAAAC4Q4RScGmJidJ//mOGUXv2mGPu7tITT5gn6d1/v7X1AQAAAACAjCGUgku6ckWaOVOaOFGKijLHfH2lZ54xNzAvU8bS8gAAAAAAwF0ilIJL+fNPaepU6YMPpAsXzLFixaRBg6R+/aSCBa2tDwAAAAAAZA5CKbiE33+X3n1X+vRT6do1c6xSJXOJXs+ekre3tfUBAAAAAIDMRSgFS+3aZe4X9dVXUnKyOVanjnmSXocOkpubtfUBAAAAAICsQSiFbGcY0rffmmHUt9+mjj/yiHmSXvPmnKQHAAAAAEBuRyiFbJOUJC1caIZRu3ebY25uUpcu0rBhUq1a1tYHAAAAAACyD6EUstzVq9Jnn5l7Rh09ao7lyyf16SO9+KJUrpy19QEAAAAAgOxHKIUMczikTZuk06elkiWlJk3S7gEVHS29/755ml50tDlWpIj0wgtS//5S4cLW1A0AAAAAAKxHKIUMWbxYGjRIOnEidax0aWnyZKl2bWniROmTT8xZUpJUoYJ5kt5TT5mzpAAAAAAAQN5GKIU7tnix1KmTuWH5jU6elDp2lOz21JP0goPNk/Q6dpTc6TYAAAAAAPA/xAS4Iw6HOUPqr4GUlDqWnCw99JAZRj34ICfpAQAAAACAmxFK4Y5s2pR2yd7tjBwpNW+e5eUAAAAAAIAcym51AchZTp/O3PsAAAAAAEDeRCiFO1KyZObeBwAAAAAA8iZCKdyRJk3MU/Zut0+UzSaVKWPeBwAAAAAAcDuEUrgjbm7S5Mnm//81mEr5eNIk8z4AAAAAAIDbIZTCHYuIkBYulEqVSjteurQ5HhFhTV0AAAAAACDn4PQ9ZEhEhNSunXka3+nT5h5STZowQwoAAAAAAKQPoRQyzM1Nat7c6ioAAAAAAEBOxPI9AAAAAAAAZDtCKQAAAAAAAGQ7QikAAAAAAABkO0IpAAAAAAAAZDtCKQAAAAAAAGQ7QikAAAAAAABkO0IpAAAAAAAAZDtCKQAAAAAAAGQ7QikAAAAAAABkO0IpAAAAAAAAZDtCKQAAAAAAAGQ7QikAAAAAAABkO0IpAAAAAAAAZDt3qwvIywzDkCTFxsZaXAkAAAAAAEDmSMk5UnKP2yGUslBcXJwkqUyZMhZXAgAAAAAAkLni4uLk7+9/2+s2459iK2SZ5ORknTp1Sn5+frLZbFaXkyGxsbEqU6aM/vjjDxUoUMDqcgBJ9CWsRw/CFdGXcEX0JaxGD8IV5Ya+NAxDcXFxuueee2S3337nKGZKWchut6t06dJWl5EpChQokGP/sCD3oi9hNXoQroi+hCuiL2E1ehCuKKf35d/NkErBRucAAAAAAADIdoRSAAAAAAAAyHaEUrgrXl5eGjNmjLy8vKwuBXCiL2E1ehCuiL6EK6IvYTV6EK4oL/UlG50DAAAAAAAg2zFTCgAAAAAAANmOUAoAAAAAAADZjlAKAAAAAAAA2Y5QCgAAAAAAANmOUAoAgHRKTk62ugQAAAAg1yCUwk3Onj2rU6dOWV0GkEZUVJT27NljdRnIww4ePKjJkydbXQaQhsPhUGJiotVlAACAdDAMw+oSXA6hFNLYvXu36tWrp4MHD1pdCuC0Z88eNWvWTDNmzNCFCxesLgd50N69exUUFKShQ4dq69atVpcDSJIOHTqkAQMG6NFHH9XYsWP5/AiXcOzYMc2YMUNTpkzR119/bXU5yIN+++03vfXWWxo5cqT+85//6MqVK1aXBDi/RttsNoKpvyCUgtPPP/+sJk2aqEOHDnrggQesLgeQJB05ckQPPfSQOnXqpHfeeUeFChWyuiTkMT///LPq1aunxx9/XM2aNdOKFSsksZQP1vrll18UGhqqCxcuqHLlyho/frw+/vhjq8tCHrd3717Vr19f8+fP15IlS9SmTRv16NFD27Zts7o05BG//PKL6tSpo1WrVmnjxo3q1q2bevXqpbVr11pdGvKw/fv3q3jx4ho8eLAkgqm/shn8akDSvn371LBhQz3//PN644035HA4tHfvXl29elX+/v667777rC4RedSkSZO0fft2zZ07V0lJSZo5c6aOHTumcuXK6cEHH1SVKlWsLhG52O7du9WsWTO98MILGjdunIYPH67PP/9chw8flr+/vwzDkM1ms7pM5DGXLl1S69at1aJFC/3f//2fJGnMmDG6fPmy3nrrLbm7u1tcIfKi6OhoPfjgg2rTpo3GjRsnSfr666/Vpk0bPfrooxoyZIhatGhhcZXIzeLj49WpUyfde++9mjp1qiRp27Zt6t+/vwoVKqTnn39e7dq1s7hK5DWnTp1Shw4dlJSUpEOHDqlv37567733JInvI/+HmVLQ9evX1b17d/n6+mrQoEGSpE6dOql3794KDw9X/fr19fbbb1tcJfKqPXv2yMvLS5L0wAMP6NNPP9WOHTv06quvavDgwSwNQJY5d+6cGjdurGeffdb5F6yBAweqUKFCzr2l+EYCVoiPj1d8fLyaNm3qHPvjjz+0bds21a9fX/369eNzI7LdpUuX5O7urm7duskwDCUkJCgoKEiBgYHavn273n//fV28eNHqMpGL+fj46OLFiypWrJgkc0ZzvXr1NGvWLF2/fl3Tp09nf1JkK8MwtGHDBpUrV05Tp07VjBkzNG3aNL344ouSmDGVglAK8vLy0sSJE1WgQAENGTJEISEhunr1qqZMmaLVq1frjTfe0IgRI/TRRx9ZXSrykJRP0GXKlJGHh4eWLl0qb29vrVy5Ut9++622bdumuLg4ffrppxZXitzKw8ND33zzTZpQvnjx4goODtaaNWucY3wzgeyWkJCgw4cP64cfftCePXs0btw4LViwQA8//LCeeuop7dy5Ux988IHOnDljdanIQ+Li4rRr1y6dOXNGNptNnp6eunr1qsqUKaN3331XS5Ys0cKFC60uE7mUYRi6fPmyPD09de7cOUlmKOVwOHTffffp/fff188//6xZs2ZZXCnyEpvNpqZNm+rJJ59Uo0aN1LVrV3366af68MMPNWTIEOc9ef57SQN5WnJysvP/N2zYYJQoUcJo1qyZcerUqTT3DR061KhRo4YRHR2d5jVA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0fr169WmTRu1bdtWBw4ckI+Pj4UVAgAApB8zpQAAAHKwBx54QKNGjdLx48c1Z84cSdKePXv01FNP6d5775W3t7dKlCih3r17Kzo62vm6f/3rXxo2bJgkqUKFCs6lgceOHXPeM2fOHIWEhMjHx0eFChVSly5d9Mcff2Tr8wEAgNyLUAoAACCH6969uyRpzZo1kqS1a9fq999/V69evTR16lR16dJFCxYsUFhYmAzDkCRFRESoa9eukqT33ntPs2fP1uzZs1W0aFFJ0vjx49WjRw9VrlxZEydO1ODBg7Vu3To1bdqU5X4AACBTsHwPAAAghytdurT8/f3122+/SZL69++voUOHprmnQYMG6tq1qzZv3qwmTZqoZs2aql27tubPn6/27durfPnyznuPHz+uMWPGaNy4cXr11Ved4xEREQoODtaHH36YZhwAACAjmCkFAACQC/j6+jpP4btxX6lr167p/PnzatCggSRp165d//heixcvVnJysjp37qzz5887f5QoUUKVK1fWhg0bsuYhAABAnsJMKQAAgFzg8uXLKlasmCTpwoULGjt2rBYsWKBz586luS8mJuYf3+vw4cMyDEOVK1e+5XUPD4+7LxgAAOR5hFIAAAA53IkTJxQTE6NKlSpJkjp37qzIyEgNGzZMQUFB8vX1VXJysh555BElJyf/4/slJyfLZrPp66+/lpub203XfX19M/0ZAABA3kMoBQAAkMPNnj1bktSqVStdvHhR69at09ixYzV69GjnPYcPH77pdTab7ZbvV7FiRRmGoQoVKqhKlSpZUzQAAMjz2FMKAAAgB1u/fr1ef/11VahQQU888YRzZlPKKXspJk2adNNr8+fPL0k3naYXEREhNzc3jR079qb3MQxD0dHRmfcAAAAgz2KmFAAAQA7x9ddf6+DBg0pKStLZs2e1fv16rV27VuXKldPy5cvl7e0tb29vNW3aVBMmTFBiYqJKlSqlNWvW6OjRoze9X0hIiCRp5MiR6tKlizw8PBQeHq6KFStq3LhxeuWVV3Ts2DG1b99efn5+Onr0qJYsWaJnnnlGL730UnY/PgAAyGUIpQAAAHKIlOV4np6eKlSokGrUqKFJkyapV69e8vPzc943b948DRw4UB988IEMw1DLli319ddf65577knzfnXr1tXrr7+ujz76SN98842Sk5N19OhR5c+fXy+//LKqVKmi9957T2PHjpUklSlTRi1btlTbtm2z76EBAECuZTP+OicbAAAAAAAAyGLsKQUAAAAAAIBsRygFAAAAAACAbEcoBQAAAAAAgGxHKAUAAAAAAIBsRygFAAAAAACAbEcoBQAAAAAAgGxHKAUAAAAAAIBsRygFAAAAAACAbEcoBQAAAAAAgGxHKAUAAAAAAIBsRygFAAAAAACAbEcoBQAAAAAAgGxHKAUAAAAAAIBs9/8AALGR//ZXjgAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Block themes\n",
"\n",
"Note: see [this colab](https://gist.github.com/adamsilverstein/b18e6c44880f262f7e3b1f175021ee15) for block theme research."
],
"metadata": {
"id": "rVVMvDvp2oE3"
}
},
{
"cell_type": "code",
"source": [
"from google.cloud import bigquery\n",
"\n",
"client = bigquery.Client(project=project_id)\n",
"\n",
"block_iapi_sites = client.query('''\n",
"WITH sites_by_block_theme_inteactivity_api AS (\n",
" SELECT\n",
" page,\n",
" JSON_QUERY(custom_metrics, '$.cms.wordpress.block_theme') as block_theme,\n",
" JSON_EXTRACT(custom_metrics, '$.cms.wordpress.uses_interactivity_api') AS uses_interactivity_api\n",
" FROM\n",
" `httparchive.all.pages`,\n",
" UNNEST(technologies) as technologies\n",
" WHERE\n",
" date = PARSE_DATE('%%Y_%%m_%%d','%s') AND\n",
" technologies.technology = \"WordPress\" AND\n",
" is_root_page = TRUE\n",
")\n",
"\n",
"SELECT\n",
" COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) AS has_block_theme,\n",
" COUNT( DISTINCT( IF( uses_interactivity_api = 'true', page, null ))) AS uses_interactivity_api,\n",
" COUNT( DISTINCT IF( uses_interactivity_api = 'true', page, null ) ) / COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) pct_block_theme_sites_using_interactivity_api\n",
"FROM sites_by_block_theme_inteactivity_api\n",
"''' % dataset).to_dataframe()\n"
],
"metadata": {
"id": "BrOIIaeRxfFf"
},
"execution_count": 9,
"outputs": []
},
{
"cell_type": "code",
"source": [
"block_iapi_sites.head(1000)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"id": "OEa25jeVyLL1",
"outputId": "1c51ade5-2c83-4239-b791-7ce454ec4678"
},
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" has_block_theme uses_interactivity_api \\\n",
"0 114680 58379 \n",
"\n",
" pct_block_theme_sites_using_interactivity_api \n",
"0 0.50906 "
],
"text/html": [
"\n",
" <div id=\"df-0e44d1ab-6bf6-4696-b252-1dca935e9712\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>has_block_theme</th>\n",
" <th>uses_interactivity_api</th>\n",
" <th>pct_block_theme_sites_using_interactivity_api</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>114680</td>\n",
" <td>58379</td>\n",
" <td>0.50906</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0e44d1ab-6bf6-4696-b252-1dca935e9712')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-0e44d1ab-6bf6-4696-b252-1dca935e9712 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-0e44d1ab-6bf6-4696-b252-1dca935e9712');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "block_iapi_sites",
"summary": "{\n \"name\": \"block_iapi_sites\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"has_block_theme\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 1,\n \"samples\": [\n 114680\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 1,\n \"samples\": [\n 58379\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pct_block_theme_sites_using_interactivity_api\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 0.509059993024067,\n \"max\": 0.509059993024067,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.509059993024067\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
},
"application/vnd.google.colaboratory.module+javascript": "\n import \"https://ssl.gstatic.com/colaboratory/data_table/e523c247d1e24a05/data_table.js\";\n\n const table = window.createDataTable({\n data: [[{\n 'v': 0,\n 'f': \"0\",\n },\n{\n 'v': 114680,\n 'f': \"114680\",\n },\n{\n 'v': 58379,\n 'f': \"58379\",\n },\n{\n 'v': 0.509059993024067,\n 'f': \"0.509059993024067\",\n }]],\n columns: [[\"number\", \"index\"], [\"number\", \"has_block_theme\"], [\"number\", \"uses_interactivity_api\"], [\"number\", \"pct_block_theme_sites_using_interactivity_api\"]],\n columnOptions: [{\"width\": \"1px\", \"className\": \"index_column\"}],\n rowsPerPage: 25,\n helpUrl: \"https://colab.research.google.com/notebooks/data_table.ipynb\",\n suppressOutputScrolling: true,\n minimumWidth: undefined,\n });\n\n function appendQuickchartButton(parentElement) {\n let quickchartButtonContainerElement = document.createElement('div');\n quickchartButtonContainerElement.innerHTML = `\n<div id=\"df-c91743e4-5f8b-4fd5-8c75-4ce0727dfa41\">\n <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c91743e4-5f8b-4fd5-8c75-4ce0727dfa41')\"\n title=\"Suggest charts\"\n style=\"display:none;\">\n \n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n width=\"24px\">\n <g>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n </g>\n</svg>\n </button>\n \n<style>\n .colab-df-quickchart {\n --bg-color: #E8F0FE;\n --fill-color: #1967D2;\n --hover-bg-color: #E2EBFA;\n --hover-fill-color: #174EA6;\n --disabled-fill-color: #AAA;\n --disabled-bg-color: #DDD;\n }\n\n [theme=dark] .colab-df-quickchart {\n --bg-color: #3B4455;\n --fill-color: #D2E3FC;\n --hover-bg-color: #434B5C;\n --hover-fill-color: #FFFFFF;\n --disabled-bg-color: #3B4455;\n --disabled-fill-color: #666;\n }\n\n .colab-df-quickchart {\n background-color: var(--bg-color);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: none;\n fill: var(--fill-color);\n height: 32px;\n padding: 0;\n width: 32px;\n }\n\n .colab-df-quickchart:hover {\n background-color: var(--hover-bg-color);\n box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n fill: var(--button-hover-fill-color);\n }\n\n .colab-df-quickchart-complete:disabled,\n .colab-df-quickchart-complete:disabled:hover {\n background-color: var(--disabled-bg-color);\n fill: var(--disabled-fill-color);\n box-shadow: none;\n }\n\n .colab-df-spinner {\n border: 2px solid var(--fill-color);\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n animation:\n spin 1s steps(1) infinite;\n }\n\n @keyframes spin {\n 0% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n border-left-color: var(--fill-color);\n }\n 20% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 30% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n border-right-color: var(--fill-color);\n }\n 40% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 60% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n }\n 80% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-bottom-color: var(--fill-color);\n }\n 90% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n }\n }\n</style>\n\n <script>\n async function quickchart(key) {\n const quickchartButtonEl =\n document.querySelector('#' + key + ' button');\n quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n quickchartButtonEl.classList.add('colab-df-spinner');\n try {\n const charts = await google.colab.kernel.invokeFunction(\n 'suggestCharts', [key], {});\n } catch (error) {\n console.error('Error during call to suggestCharts:', error);\n }\n quickchartButtonEl.classList.remove('colab-df-spinner');\n quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n }\n (() => {\n let quickchartButtonEl =\n document.querySelector('#df-c91743e4-5f8b-4fd5-8c75-4ce0727dfa41 button');\n quickchartButtonEl.style.display =\n google.colab.kernel.accessAllowed ? 'block' : 'none';\n })();\n </script>\n</div>`;\n parentElement.appendChild(quickchartButtonContainerElement);\n }\n\n appendQuickchartButton(table);\n "
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "markdown",
"source": [
"## Block Themes Mobile only"
],
"metadata": {
"id": "zVfWF5AD901g"
}
},
{
"cell_type": "code",
"source": [
"from google.cloud import bigquery\n",
"\n",
"client = bigquery.Client(project=project_id)\n",
"\n",
"block_iapi_sites_mobile = client.query('''\n",
"WITH sites_by_block_theme_inteactivity_api AS (\n",
" SELECT\n",
" page,\n",
" JSON_QUERY(custom_metrics, '$.cms.wordpress.block_theme') as block_theme,\n",
" JSON_EXTRACT(custom_metrics, '$.cms.wordpress.uses_interactivity_api') AS uses_interactivity_api\n",
" FROM\n",
" `httparchive.all.pages`,\n",
" UNNEST(technologies) as technologies\n",
" WHERE\n",
" date = PARSE_DATE('%%Y_%%m_%%d','%s') AND\n",
" technologies.technology = \"WordPress\" AND\n",
" is_root_page = TRUE AND\n",
" client = \"mobile\"\n",
")\n",
"\n",
"SELECT\n",
" COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) AS has_block_theme,\n",
" COUNT( DISTINCT( IF( uses_interactivity_api = 'true', page, null ))) AS uses_interactivity_api,\n",
" COUNT( DISTINCT IF( uses_interactivity_api = 'true', page, null ) ) / COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) pct_block_theme_sites_using_interactivity_api\n",
"FROM sites_by_block_theme_inteactivity_api\n",
"''' % dataset).to_dataframe()\n"
],
"metadata": {
"id": "fULIlhH7AIDO"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"source": [
"block_iapi_sites_mobile.head(1000)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"id": "KxkSlg3qA3-P",
"outputId": "b162fba2-c4a4-4102-befe-7df47d7fd399"
},
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" has_block_theme uses_interactivity_api \\\n",
"0 110662 55888 \n",
"\n",
" pct_block_theme_sites_using_interactivity_api \n",
"0 0.505033 "
],
"text/html": [
"\n",
" <div id=\"df-7c5b358f-fa4a-4b1b-afd2-92c50c14b178\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>has_block_theme</th>\n",
" <th>uses_interactivity_api</th>\n",
" <th>pct_block_theme_sites_using_interactivity_api</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>110662</td>\n",
" <td>55888</td>\n",
" <td>0.505033</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7c5b358f-fa4a-4b1b-afd2-92c50c14b178')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-7c5b358f-fa4a-4b1b-afd2-92c50c14b178 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-7c5b358f-fa4a-4b1b-afd2-92c50c14b178');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "block_iapi_sites_mobile",
"summary": "{\n \"name\": \"block_iapi_sites_mobile\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"has_block_theme\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 1,\n \"samples\": [\n 110662\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 1,\n \"samples\": [\n 55888\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pct_block_theme_sites_using_interactivity_api\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 0.5050333447795992,\n \"max\": 0.5050333447795992,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.5050333447795992\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
},
"application/vnd.google.colaboratory.module+javascript": "\n import \"https://ssl.gstatic.com/colaboratory/data_table/e523c247d1e24a05/data_table.js\";\n\n const table = window.createDataTable({\n data: [[{\n 'v': 0,\n 'f': \"0\",\n },\n{\n 'v': 110662,\n 'f': \"110662\",\n },\n{\n 'v': 55888,\n 'f': \"55888\",\n },\n{\n 'v': 0.5050333447795992,\n 'f': \"0.5050333447795992\",\n }]],\n columns: [[\"number\", \"index\"], [\"number\", \"has_block_theme\"], [\"number\", \"uses_interactivity_api\"], [\"number\", \"pct_block_theme_sites_using_interactivity_api\"]],\n columnOptions: [{\"width\": \"1px\", \"className\": \"index_column\"}],\n rowsPerPage: 25,\n helpUrl: \"https://colab.research.google.com/notebooks/data_table.ipynb\",\n suppressOutputScrolling: true,\n minimumWidth: undefined,\n });\n\n function appendQuickchartButton(parentElement) {\n let quickchartButtonContainerElement = document.createElement('div');\n quickchartButtonContainerElement.innerHTML = `\n<div id=\"df-c5f2109e-5086-4d3a-931a-890c954c61c9\">\n <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c5f2109e-5086-4d3a-931a-890c954c61c9')\"\n title=\"Suggest charts\"\n style=\"display:none;\">\n \n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n width=\"24px\">\n <g>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n </g>\n</svg>\n </button>\n \n<style>\n .colab-df-quickchart {\n --bg-color: #E8F0FE;\n --fill-color: #1967D2;\n --hover-bg-color: #E2EBFA;\n --hover-fill-color: #174EA6;\n --disabled-fill-color: #AAA;\n --disabled-bg-color: #DDD;\n }\n\n [theme=dark] .colab-df-quickchart {\n --bg-color: #3B4455;\n --fill-color: #D2E3FC;\n --hover-bg-color: #434B5C;\n --hover-fill-color: #FFFFFF;\n --disabled-bg-color: #3B4455;\n --disabled-fill-color: #666;\n }\n\n .colab-df-quickchart {\n background-color: var(--bg-color);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: none;\n fill: var(--fill-color);\n height: 32px;\n padding: 0;\n width: 32px;\n }\n\n .colab-df-quickchart:hover {\n background-color: var(--hover-bg-color);\n box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n fill: var(--button-hover-fill-color);\n }\n\n .colab-df-quickchart-complete:disabled,\n .colab-df-quickchart-complete:disabled:hover {\n background-color: var(--disabled-bg-color);\n fill: var(--disabled-fill-color);\n box-shadow: none;\n }\n\n .colab-df-spinner {\n border: 2px solid var(--fill-color);\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n animation:\n spin 1s steps(1) infinite;\n }\n\n @keyframes spin {\n 0% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n border-left-color: var(--fill-color);\n }\n 20% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 30% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n border-right-color: var(--fill-color);\n }\n 40% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 60% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n }\n 80% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-bottom-color: var(--fill-color);\n }\n 90% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n }\n }\n</style>\n\n <script>\n async function quickchart(key) {\n const quickchartButtonEl =\n document.querySelector('#' + key + ' button');\n quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n quickchartButtonEl.classList.add('colab-df-spinner');\n try {\n const charts = await google.colab.kernel.invokeFunction(\n 'suggestCharts', [key], {});\n } catch (error) {\n console.error('Error during call to suggestCharts:', error);\n }\n quickchartButtonEl.classList.remove('colab-df-spinner');\n quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n }\n (() => {\n let quickchartButtonEl =\n document.querySelector('#df-c5f2109e-5086-4d3a-931a-890c954c61c9 button');\n quickchartButtonEl.style.display =\n google.colab.kernel.accessAllowed ? 'block' : 'none';\n })();\n </script>\n</div>`;\n parentElement.appendChild(quickchartButtonContainerElement);\n }\n\n appendQuickchartButton(table);\n "
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"source": [
"## Adoption in block themes over time"
],
"metadata": {
"id": "mZOYBKW3BEjb"
}
},
{
"cell_type": "code",
"source": [
"from google.cloud import bigquery\n",
"\n",
"client = bigquery.Client(project=project_id)\n",
"\n",
"block_iapi_sites_over_time = client.query('''\n",
"WITH sites_by_block_theme_inteactivity_api AS (\n",
" SELECT\n",
" date,\n",
" page,\n",
" JSON_QUERY(custom_metrics, '$.cms.wordpress.block_theme') as block_theme,\n",
" JSON_EXTRACT(custom_metrics, '$.cms.wordpress.uses_interactivity_api') AS uses_interactivity_api\n",
" FROM\n",
" `httparchive.all.pages`,\n",
" UNNEST(technologies) as technologies\n",
" WHERE\n",
" date >= PARSE_DATE('%%Y_%%m_%%d','%s') AND\n",
" technologies.technology = \"WordPress\" AND\n",
" is_root_page = TRUE\n",
")\n",
"\n",
"SELECT\n",
" date,\n",
" COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) AS has_block_theme,\n",
" COUNT( DISTINCT( IF( uses_interactivity_api = 'true', page, null ))) AS uses_interactivity_api,\n",
" COUNT( DISTINCT IF( uses_interactivity_api = 'true', page, null ) ) / COUNT( DISTINCT( IF( block_theme = \"true\", page, NULL))) pct_block_theme_sites_using_interactivity_api\n",
"FROM sites_by_block_theme_inteactivity_api\n",
"GROUP BY DATE\n",
"ORDER BY DATE ASC\n",
"''' % \"2024_04_01\").to_dataframe()\n"
],
"metadata": {
"id": "IeWe4d6pBDxb"
},
"execution_count": 13,
"outputs": []
},
{
"cell_type": "code",
"source": [
"block_iapi_sites_over_time.head(1000)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 294
},
"id": "puzqjAT0BkOx",
"outputId": "6e5c1a44-a3b4-4ca1-81aa-f83c02337c6b"
},
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" date has_block_theme uses_interactivity_api \\\n",
"0 2024-04-01 87979 42660 \n",
"1 2024-05-01 91733 45339 \n",
"2 2024-06-01 95058 47442 \n",
"3 2024-07-01 97118 48424 \n",
"4 2024-08-01 98651 48603 \n",
"5 2024-09-01 105238 52791 \n",
"6 2024-10-01 112335 57402 \n",
"7 2024-11-01 114680 58379 \n",
"\n",
" pct_block_theme_sites_using_interactivity_api \n",
"0 0.484888 \n",
"1 0.494250 \n",
"2 0.499085 \n",
"3 0.498610 \n",
"4 0.492676 \n",
"5 0.501634 \n",
"6 0.510989 \n",
"7 0.509060 "
],
"text/html": [
"\n",
" <div id=\"df-0a6ad33f-bec8-4956-8619-7d508350bf0d\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>date</th>\n",
" <th>has_block_theme</th>\n",
" <th>uses_interactivity_api</th>\n",
" <th>pct_block_theme_sites_using_interactivity_api</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-04-01</td>\n",
" <td>87979</td>\n",
" <td>42660</td>\n",
" <td>0.484888</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-05-01</td>\n",
" <td>91733</td>\n",
" <td>45339</td>\n",
" <td>0.494250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-06-01</td>\n",
" <td>95058</td>\n",
" <td>47442</td>\n",
" <td>0.499085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2024-07-01</td>\n",
" <td>97118</td>\n",
" <td>48424</td>\n",
" <td>0.498610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2024-08-01</td>\n",
" <td>98651</td>\n",
" <td>48603</td>\n",
" <td>0.492676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>2024-09-01</td>\n",
" <td>105238</td>\n",
" <td>52791</td>\n",
" <td>0.501634</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>2024-10-01</td>\n",
" <td>112335</td>\n",
" <td>57402</td>\n",
" <td>0.510989</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>2024-11-01</td>\n",
" <td>114680</td>\n",
" <td>58379</td>\n",
" <td>0.509060</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-0a6ad33f-bec8-4956-8619-7d508350bf0d')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-0a6ad33f-bec8-4956-8619-7d508350bf0d button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-0a6ad33f-bec8-4956-8619-7d508350bf0d');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
"<div id=\"df-0367db6a-6a7b-4917-ae8f-03f4b5d13275\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-0367db6a-6a7b-4917-ae8f-03f4b5d13275')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-0367db6a-6a7b-4917-ae8f-03f4b5d13275 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
"</div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "block_iapi_sites_over_time",
"summary": "{\n \"name\": \"block_iapi_sites_over_time\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"date\",\n \"properties\": {\n \"dtype\": \"dbdate\",\n \"num_unique_values\": 8,\n \"samples\": [\n \"2024-05-01\",\n \"2024-09-01\",\n \"2024-04-01\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"has_block_theme\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 8,\n \"samples\": [\n 91733,\n 105238,\n 87979\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uses_interactivity_api\",\n \"properties\": {\n \"dtype\": \"Int64\",\n \"num_unique_values\": 8,\n \"samples\": [\n 45339,\n 52791,\n 42660\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pct_block_theme_sites_using_interactivity_api\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.008566221194582916,\n \"min\": 0.48488843928664793,\n \"max\": 0.5109894511950861,\n \"num_unique_values\": 8,\n \"samples\": [\n 0.49424961573261533,\n 0.501634390619358,\n 0.48488843928664793\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
},
"application/vnd.google.colaboratory.module+javascript": "\n import \"https://ssl.gstatic.com/colaboratory/data_table/e523c247d1e24a05/data_table.js\";\n\n const table = window.createDataTable({\n data: [[{\n 'v': 0,\n 'f': \"0\",\n },\n\"2024-04-01\",\n{\n 'v': 87979,\n 'f': \"87979\",\n },\n{\n 'v': 42660,\n 'f': \"42660\",\n },\n{\n 'v': 0.48488843928664793,\n 'f': \"0.48488843928664793\",\n }],\n [{\n 'v': 1,\n 'f': \"1\",\n },\n\"2024-05-01\",\n{\n 'v': 91733,\n 'f': \"91733\",\n },\n{\n 'v': 45339,\n 'f': \"45339\",\n },\n{\n 'v': 0.49424961573261533,\n 'f': \"0.49424961573261533\",\n }],\n [{\n 'v': 2,\n 'f': \"2\",\n },\n\"2024-06-01\",\n{\n 'v': 95058,\n 'f': \"95058\",\n },\n{\n 'v': 47442,\n 'f': \"47442\",\n },\n{\n 'v': 0.4990847692987439,\n 'f': \"0.4990847692987439\",\n }],\n [{\n 'v': 3,\n 'f': \"3\",\n },\n\"2024-07-01\",\n{\n 'v': 97118,\n 'f': \"97118\",\n },\n{\n 'v': 48424,\n 'f': \"48424\",\n },\n{\n 'v': 0.4986099384254206,\n 'f': \"0.4986099384254206\",\n }],\n [{\n 'v': 4,\n 'f': \"4\",\n },\n\"2024-08-01\",\n{\n 'v': 98651,\n 'f': \"98651\",\n },\n{\n 'v': 48603,\n 'f': \"48603\",\n },\n{\n 'v': 0.4926762019645011,\n 'f': \"0.4926762019645011\",\n }],\n [{\n 'v': 5,\n 'f': \"5\",\n },\n\"2024-09-01\",\n{\n 'v': 105238,\n 'f': \"105238\",\n },\n{\n 'v': 52791,\n 'f': \"52791\",\n },\n{\n 'v': 0.501634390619358,\n 'f': \"0.501634390619358\",\n }],\n [{\n 'v': 6,\n 'f': \"6\",\n },\n\"2024-10-01\",\n{\n 'v': 112335,\n 'f': \"112335\",\n },\n{\n 'v': 57402,\n 'f': \"57402\",\n },\n{\n 'v': 0.5109894511950861,\n 'f': \"0.5109894511950861\",\n }],\n [{\n 'v': 7,\n 'f': \"7\",\n },\n\"2024-11-01\",\n{\n 'v': 114680,\n 'f': \"114680\",\n },\n{\n 'v': 58379,\n 'f': \"58379\",\n },\n{\n 'v': 0.509059993024067,\n 'f': \"0.509059993024067\",\n }]],\n columns: [[\"number\", \"index\"], [\"string\", \"date\"], [\"number\", \"has_block_theme\"], [\"number\", \"uses_interactivity_api\"], [\"number\", \"pct_block_theme_sites_using_interactivity_api\"]],\n columnOptions: [{\"width\": \"1px\", \"className\": \"index_column\"}],\n rowsPerPage: 25,\n helpUrl: \"https://colab.research.google.com/notebooks/data_table.ipynb\",\n suppressOutputScrolling: true,\n minimumWidth: undefined,\n });\n\n function appendQuickchartButton(parentElement) {\n let quickchartButtonContainerElement = document.createElement('div');\n quickchartButtonContainerElement.innerHTML = `\n<div id=\"df-b8b2d501-3946-4226-8053-9dfb16cf37cc\">\n <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-b8b2d501-3946-4226-8053-9dfb16cf37cc')\"\n title=\"Suggest charts\"\n style=\"display:none;\">\n \n<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n width=\"24px\">\n <g>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n </g>\n</svg>\n </button>\n \n<style>\n .colab-df-quickchart {\n --bg-color: #E8F0FE;\n --fill-color: #1967D2;\n --hover-bg-color: #E2EBFA;\n --hover-fill-color: #174EA6;\n --disabled-fill-color: #AAA;\n --disabled-bg-color: #DDD;\n }\n\n [theme=dark] .colab-df-quickchart {\n --bg-color: #3B4455;\n --fill-color: #D2E3FC;\n --hover-bg-color: #434B5C;\n --hover-fill-color: #FFFFFF;\n --disabled-bg-color: #3B4455;\n --disabled-fill-color: #666;\n }\n\n .colab-df-quickchart {\n background-color: var(--bg-color);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n display: none;\n fill: var(--fill-color);\n height: 32px;\n padding: 0;\n width: 32px;\n }\n\n .colab-df-quickchart:hover {\n background-color: var(--hover-bg-color);\n box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n fill: var(--button-hover-fill-color);\n }\n\n .colab-df-quickchart-complete:disabled,\n .colab-df-quickchart-complete:disabled:hover {\n background-color: var(--disabled-bg-color);\n fill: var(--disabled-fill-color);\n box-shadow: none;\n }\n\n .colab-df-spinner {\n border: 2px solid var(--fill-color);\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n animation:\n spin 1s steps(1) infinite;\n }\n\n @keyframes spin {\n 0% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n border-left-color: var(--fill-color);\n }\n 20% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 30% {\n border-color: transparent;\n border-left-color: var(--fill-color);\n border-top-color: var(--fill-color);\n border-right-color: var(--fill-color);\n }\n 40% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-top-color: var(--fill-color);\n }\n 60% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n }\n 80% {\n border-color: transparent;\n border-right-color: var(--fill-color);\n border-bottom-color: var(--fill-color);\n }\n 90% {\n border-color: transparent;\n border-bottom-color: var(--fill-color);\n }\n }\n</style>\n\n <script>\n async function quickchart(key) {\n const quickchartButtonEl =\n document.querySelector('#' + key + ' button');\n quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n quickchartButtonEl.classList.add('colab-df-spinner');\n try {\n const charts = await google.colab.kernel.invokeFunction(\n 'suggestCharts', [key], {});\n } catch (error) {\n console.error('Error during call to suggestCharts:', error);\n }\n quickchartButtonEl.classList.remove('colab-df-spinner');\n quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n }\n (() => {\n let quickchartButtonEl =\n document.querySelector('#df-b8b2d501-3946-4226-8053-9dfb16cf37cc button');\n quickchartButtonEl.style.display =\n google.colab.kernel.accessAllowed ? 'block' : 'none';\n })();\n </script>\n</div>`;\n parentElement.appendChild(quickchartButtonContainerElement);\n }\n\n appendQuickchartButton(table);\n "
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"source": [
"# Plot block_iapi_sites_over_time\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Plotting\n",
"plt.figure(figsize=(12, 6)) # Adjust figure size for better readability\n",
"plt.plot(block_iapi_sites_over_time['date'], block_iapi_sites_over_time['pct_block_theme_sites_using_interactivity_api'], marker='o', linestyle='-', color='blue', label='Block Theme Sites')\n",
"\n",
"# Formatting\n",
"plt.xlabel('Date', fontsize=12)\n",
"plt.ylabel('% of Block Theme Sites Using Interactivity API', fontsize=12)\n",
"plt.title('Adoption of Interactivity API in Block Themes Over Time', fontsize=14)\n",
"plt.legend(fontsize=12) # Show legend\n",
"plt.grid(axis='y', linestyle='--') # Add grid\n",
"plt.xticks(rotation=45, ha=\"right\") # Rotate x-axis ticks for better readability\n",
"\n",
"# Format Y numbers as percents, with 3 decimal points of precision\n",
"plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda y, _: '{:.3%}'.format(y)))\n",
"\n",
"# Show the plot\n",
"plt.tight_layout()\n",
"plt.show()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "6TgxRmtvBmfj",
"outputId": "582ccd46-6f8b-4b74-ce0d-c1242fabf55b"
},
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAADot0lEQVR4nOzdd3RUVdfH8e+kkEYKhARCC4jSpTxIrwEkVKlSBQRsqAiIIopSHguCioI+KkoJRZAiXaRKU4qiFKnSW2ihJEAg9b5/3DcDQwrDEBgSfp+1ZjFzbttnSsjsnLOPxTAMAxERERERERERkfvIxdkBiIiIiIiIiIjIw0dJKRERERERERERue+UlBIRERERERERkftOSSkREREREREREbnvlJQSEREREREREZH7TkkpERERERERERG575SUEhERERERERGR+05JKRERERERERERue+UlBIRERERERERkftOSSkREbFx5MgRLBYLzz77rLNDsVGvXj0sFouzw7gry5cvp2bNmuTKlQuLxUKrVq2cHVK28uyzz2KxWDhy5IhTz5GdFClShCJFijg7DBvDhg3DYrGwZs2a+3K9iIgILBYLERER9+V6KR7E514eHPpZJSLZhZJSIiLZTM+ePbFYLAQGBhIXF+fscOx2v79o3m9HjhyhZcuWHDp0iB49ejB06FA6duyY4TEpz8mPP/54V9fODgk9cF5yYM2aNVgsFoYNG3bfrrlu3TosFgsWi4XZs2enu1/Kc3LzzcvLi5IlS/L6668TFRVls3/Ke+H06dP3ugt2KVKkSKr4PTw8KFq0KC+88EK2+MKdkjyw93a/399Z3bx583jqqacICQkhR44cBAUF0bBhQyZOnEhSUpKzw7NLWp+DjG7Z4XMhIpLCzdkBiIhI5rl8+TKzZs3CYrFw4cIF5s+fT4cOHZwdVqaYMmUKsbGxzg7DYStXruT69et89tlndO7c2dnhZEsjRoxg0KBBFChQwKnnyAwTJkwAwGKxMHHiRJ5++ukM92/QoAG1atUC4Ny5cyxbtozPP/+cuXPn8tdffxEYGOhQHKtWrXLouDvh6urKu+++a3186dIlNm/ezPfff8/cuXP5+++/KVy48D2P415p1apVqhFPa9asYe3atbRs2ZIKFSrYbLv1saTt6tWrdO7cmYULF5IrVy6aNWtGoUKFOHfuHEuWLKFX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mC+kn5+fk6MREREREREREclYTEwMhQoVsuY00qOk1AMuZcqen5+fklIiIiIiIiIikmXcrgyRCp2LiIiIiIiIiMh9p6SUiIiIiIiIiIjcd0pKiYiIiIiIiIjIfaeklIiIiIiIiIiI3HdKSomIiIiIiIiIyH2n1feykaSkJBISEpwdhkiW5ebmhqur621XiBAREREREZG7p6RUNmAYBqdPn+bSpUvODkUky3N1dSU4OBh/f38lp0RERERERO4hJaWygZSEVHBwMN7e3voiLeIAwzBITEwkJiaGU6dOce3aNUJCQpwdloiIiIiISLalpFQWl5SUZE1IBQYGOjsckSzP19cXDw8PoqKiCA4OxtXV1dkhiYiIiIiIZEsqdJ7FpdSQ8vb2dnIkItmHj48PhmGoRpuIiIiIiMg9pKRUNqEpeyKZR58nERERERGRe09JKRERERERERERue+UlJJsw2KxMGzYsHty7jVr1mCxWJgzZ849OX8Ki8XCq6++ek+v8aAqUqQIzz77rLPDEBERERERkftESSl5YEVERGCxWGxuwcHBhIWF8csvvzg7PLvUq1cvVR/Sut2rZNqD4J9//qFdu3aEhobi6elJgQIFePLJJ/nyyy8zPG737t0MGzaMI0eO3J9ARUREREQyWVISrFkDM2aY/yYlOTsikQeLVt+TB95///tfihYtimEYnDlzhoiICJo2bcqiRYto3ry5s8PL0ODBg3nuueesj//880/Gjh3LO++8Q6lSpazt5cqVc0Z499yGDRsICwujcOHCPP/88+TLl4/jx4+zadMmxowZQ58+faz77tu3DxeXG3ny3bt3M3z4cOrVq0eRIkWcEL2IiIiIiOPmzoW+feHEiRttBQvCmDHQpo3z4hJ5kCgpJQ+8Jk2a8MQTT1gf9+rVi7x58zJjxowHPin15JNP2jz29PRk7NixPPnkk9SrV885Qd1HH374If7+/vz5558EBATYbDt79qzNYw8Pj/sYmYiIiIjIvTN3LrRrB4Zh237ypNk+Z44SUyKg6XuSjgd5mGlAQABeXl64ud0+p7p161aaNGmCn58fOXPmpEGDBmzatCnVfpcuXaJ///4UKVIEDw8PChYsSLdu3YiKikr33HFxcTRv3hx/f382bNhwV3261fz58ylbtiweHh6UKVOGpUuXptrn5MmT9OzZk7x581r3mzhxos0+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3N/bGypXtk1U5c17X7smck8oKZVNeXubo5PuxLp10LTp7fdbsgTq1LnzeDJTyvSyK+l0MigoCG9vb/bt25dq2969e3FxcbGOEipWrBg7d+6067qtWrWiUaNGPPvss/j6+vLNN9842APHBQUF4evrS1JSEg0bNryn1ypWrBiGYVC0aFGKFy+eaedNGfl26tSpdPe5derkzTGBuXqfPf0vVqwYAwYMYMCAAezfv58KFSrw2WefMW3aNAciFxERERFJW3IydO8OK1eas0SGDIEvv0y9gNQXX9xYQMrNzRwxVbEi9O5ttp0/D5s330hSbd5sllBZu9a8pShSxExOpSSqKlSANCaRiDzQVFMqm7JYzB+Ed3Jr1Mj8IZlOLgCLBQoVMve703Ond05HJCQksHz5cnLkyGFdje1Wrq6uNGrUiAULFnDkyBFr+5kzZ5g+fTq1atWyTvNq27atdVrZrYw0imF169aNsWPH8u233/LWW29lTqfugKurK23btuWnn35KM5l27ty5TLtWmzZtcHV1Zfjw4ameC8MwOH/+fIbHr169Os3ncMmSJQBpTq9M4fP/8z0vXbpk0x4eHo6fnx8fffQRCWmMiU7pf2xsLNevX7fZVqxYMXx9fYmLi8swbhERERGRO2EY0L8//PijOXVv7lwYOBCOHIHVq2H6dPPfw4dvv6J5YKA5WOC//zWn9F28CLt2wfjx8Nxz5lQ+i8U8948/mnV/q1YFPz+oUQMGDIDZs80V/u6mtq/I/aCRUmLl6gpjxkC7dukPM/3iC3O/++mXX35h7969gFkrafr06ezfv59BgwZZE0tp+eCDD1ixYgW1atXi5Zdfxs3NjXHjxhEXF8eoUaOs+7355pvMmTOHp59+mp49e1KpUiUuXLjAwoUL+fbbbylfvnyqc7/66qvExMQwePBg/P39eeeddzK/4xn4+OOPWb16NVWrVuX555+ndOnSXLhwgb///puVK1dyIZOqIxYrVowPPviAt99+myNHjtCqVSt8fX05fPgw8+bN44UXXuCNN95I9/g+ffoQGxtL69atKVmyJPHx8WzYsIGZM2dSpEgRevToke6xFSpUwNXVlZEjRxIdHY2Hhwf169cnODiYb775hq5du/Kf//yHjh07EhQUxLFjx/j555+pWbMmX331Ff/++y8NGjSgffv2lC5dGjc3N+bNm8eZM2fo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J4wfr9XSxLnOnTNHU02YAPPn337/6dOhU6d7HlamyPTpe927d8+UwERERERERETup3/+gRYtzIRUixYwbpwSUuJ8QUHQvLm5Sp89SamQkHse0n1n90gpcQ6NlBIREREREXHckSNQowacOgU1a8Ly5eDt7eyoRG5ISoIiRcw6VGllaCwWcxW+w4ezTk0pe3MZGSxG6LioqCi++uqre3FqEREREREREbucOwfh4WZCqmxZWLRICSl58Li6wpgx5v1bR/ClPP7ii6yTkLoTmZaUio2NZfr06TRr1owCBQrQVxXjRERERERExEmuXIFmzeDffyE01FzxLFcuZ0clkrY2bWDOHLNA+s0KFjTbUwqmZzd3tPrerZKTk1m2bBk//PADCxYsIDY2lkcffZTXXnuNFi1aZFaMIiIiIiIiInaLj4e2beHPPyEwEJYtS/1lX+RB06YNtGxpFuU/dcqsIVW7dvYcIZXCoaTUpk2b+OGHH5g1axZRUVGEhoYSGxvLd999R69evTI7RhERERERERG7JCfDs8+ataN8fGDJEihRwtlRidjH1RXq1XN2FPeP3Umpffv28cMPPzB9+nQOHTpEsWLFeP755+nUqRMeHh4UL16cXBoLKSIiIiIiIk5iGPD66zBjBri5wdy5UKWKs6MSkfTYnZQqXbo0+fLlo1OnTnTo0IHKlStbtx08ePCeBCciIiIiIiJir5EjbxSMnjwZGjVybjwikjG7C527u7tz8eJFjh49yvHjx4mLi7uXcYmIiIiIiIjYbeJEePtt8/7nn0Pnzs6NR0Ruz+6k1JkzZxg7diznzp3j6aefJjg4mG7durF06VISEhLuZYwiIiIiIiIi6Vq4EJ5/3rw/aBD06+fUcETETnYnpfz9/XnuuedYs2YNR44c4Z133mH79u00bdqUKlWqYLFY2Lt3L/Hx8fcyXhERERERERGr9euhQwezwHnPnvDRR86OSETsZTEMw7ibE+zYsYNp06bx448/cuLECXLmzMmTTz7JU089Rffu3TMrzodWTEwM/v7+REdH4+fn5+xwREREREREHhj//AN16sClS9CihVnY3M2hNeZFJDPZm8u466TUzdasWcO0adOYO3cu0dHRJCUlZdapH1pKSomIiIiIiKR29CjUqAGRkVCzJixfDt7ezo5KRMD+XIbd0/fsUa9ePcaPH8/p06eZM2dOZp5aREREREREBIBz58yV9SIjoUwZWLRICSmRrChTk1IpcuTIQevWre/FqUVEREREROQhduUKNGsG//4LhQvDsmWQK5ezoxIRR9yTpJSIiIiIiIhIZouPh7Zt4c8/ITDQTEgVKODsqETEUUpKiYiIiIiIyAMvORmeffZG7aglS6BkSWdHJSJ3Q0kpEREREREReaAZBrz+OsyYYa6uN3cuVKni7KhE5G4pKSUiIiIiIiIPtJEjYcwY835EBISHOzUcEckkDiWlRo4cycmTJzM7FhEREREREREbEyfC22+b9z//HLp0cW48IpJ5HEpKDR48mNDQUOrXr8+kSZO4fPlyZsclIiIiIiIiD7mFC+H55837gwZBv35ODUdEMplDSamjR48yYsQILly4QK9evciXLx8dO3bk559/JikpKbNjFBERERERkYfMb79Bhw5mgfMePeCjj5wdkYhkNothGMbdnGDnzp388MMPzJgxg2PHjpEnTx46dOjAM888Q9WqVTMrzodWTEwM/v7+REdH4+fn5+xwRERERERE7rl//oE6deDSJWjRwixs7ubm7KhExF725jLuOil1s/Xr1/PFF18wf/58AIoVK0a3bt144YUXCA4OzqzLPFSUlBIRERERkYfJ0aNQowZERkLNmrB8OXh7OzsqEbkT9uYyMmX1vevXr/Pjjz8yatQoFi1ahKurK02aNKFs2bK8//77FCtWjHnz5mXGpURERERERCSbiooyV9aLjIQyZWDRIiWkRLIzh0dKGYbBihUr+OGHH5g/fz6XL1+mYsWKdO3alc6dO1tHRp06dYpOnTpx7NgxDh06lKnBPww0UkpERERERB4GV65A/frw559QuDBs2AAFCjg7KhFxhL25DIdm5fbv35+ZM2dy5swZQkJCeOmll+jWrRtlypRJtW9ISAjPPfcc3bp1c+RSIiIiIiIiks3Fx0PbtmZCKjAQli1TQkrkYeBQUur777+ndevWdOvWjYYNG2KxWDLcv1atWkyaNMmhAEVERERERCT7SlldL6V21M8/Q8mSzo5KRO4Hh5JSZ86cwcfHx+79ixQpQpEiRRy5lIiIiIiIiGRThgEDBsD06ebqenPnghZxF3l4OFTo/PHHH2fhwoXpbl+8eDGPPPKIw0GJiIiIiIhI9jdyJHzxhXk/IsIsci4iDw+HklJHjhzhypUr6W6/cuUK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IiIiIumbPPlGQurTT5WQEpHsz6Gk1JQpU6hTpw5FihShQoUKVKhQwWb7kSNHWLduHd26dcuMGEVERERERLK1xYuhVy/z/htvwIABzo1HROR+cKimVI8ePdiwYUO62zdv3kyPHj0cDkpERERERORhsWEDtG8PSUnQrRuMHOnsiERE7g+HklK3K0N19epV3NwcnhkoIiIiIiLyUNi1C5o3h2vXoGlTGD8eXBz6liYikvXYnTnasWMH27Ztsz5ev349iYmJqfa7dOkS3377LcWLF8+UAEVERERERLKjY8cgPBwuXjRX2Js1C9zdnR2ViMj9Y3dSat68eQwfPhwAi8XCuHHjGDduXJr7BgQEMGXKlMyJUEREREREJJs5f95MSJ08CaVKmTWlfHycHZWIyP1lMW43F+//nTp1isjISAzDoEqVKvz3v/+lSZMmtiezWPDx8aFYsWKavpdJ7F1GUUREREREsoarV6FBA9i8GQoWNGtKFSrk7KhERDKPvbkMuzNHISEhhISEALB69WpKlSpFcHDw3UcqIiIiIiLykEhIgKefNhNSuXPD8uVKSInIw8uh4Ux169bN7DhERERERESyteRk6NkTfvkFvLzMKXulSjk7KhER53F4jt2yZcuYMGEChw4d4uLFi6lW5LNYLBw8ePCuAxQREREREckOBg6EadPA1RXmzIHq1Z0dkYiIczmUlPrkk08YNGgQefPmpUqVKjz++OOZHZeIiIiIiEi28ckn8Nln5v2JE6FpU+fGIyLyIHAoKTVmzBjq16/PkiVLcNeapSIiIiIiIumaPNkcJQVmcqpbN+fGIyLyoHBx5KCLFy/Srl07JaREREREREQy8PPP0KuXef+NN8ybiIiYHEpKValShX379mV2LCIiIiIiItnGhg3mSntJSeboqJEjnR2RiMiDxaGk1Ndff83cuXOZPn16ZscjIiIiIiKS5e3aBc2bw7VrZv2o8ePBxaFvXyIi2ZfFuHXZPDuUK1eOCxcucOrUKXLmzEnBggVxdXW1PbHFwvbt2zMt0IdVTEwM/v7+REdH4+fn5+xwRERERETkNo4fhxo14MQJqFYNVq4EHx9nRyUicv/Ym8twqNB57ty5CQwM5LHHHnM4QBERERERkezm/Hlo1MhMSJUqBYsXKyElIpIeh5JSa9asyeQwREREREREsrarV6FZM9i7FwoWhGXL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YfFiKFfO6lQiIiIiIiIiGZtLM6V+//13atSoweXLl3nssccoUaKEffunn37KkiVL2LRpE8WKFUvWsCIpYcQImDHDvLvevHlQu7bViUREREREREQyPpeaUi+99BJubm7s2LGDMmXKJNr322+/Ua9ePV566SUWLFiQLCFFUsp778Ho0ebj6dOhVStr84iIiIiIiIhkFi5dvrdhwwb69et3R0MKoHTp0jz33HP88MMP95tNJEV99RX062c+fv11ePppa/OIiIiIiIiIZCYuNaViY2P/c1FzX19fYmNjXQ4lktK+/x4ef9xcT6pvX3jlFasTiYiIiIiIiGQuLjWlQkNDmTlzJpGRkXfsi4qK4uOPP6Z8+fL3HU4kJWzbZl6mFxsL7drBlClgs1mdSkRERERERCRzcWlNqVGjRtGoUSOKFy9Ojx49KFq0KAAHDhxgzpw5XLhwgWnTpiVrUJHkcPAgNG4MV69C3bowdy64u1udSkRERERERCTzsRmGYbjygd9//z1Dhgxh165dibaHhITwzjvvUK9evWQJmNlFRUURGBhIZGQkAQEBVsdJ106fhurV4fBhKF8e1q8HfUlFREREREREkpejvQyXm1K3nDlzhqNHjwIQHBxM3rx57+d0chs1pZJHZCTUrg27dkGhQvDTT5Anj9WpRERERERERDIeR3sZLl2+92958+ZVI0rStJs3oUULsyGVJw+sXq2GlIiIiIiIiIjVXFroXCS9iI+HLl1gwwbzUr2VK+GRR6xOJSIiIiIiIiJqSkmGZRjQty989x14ecGiRRASYnUqEREREREREQE1pSQDGzUKPvwQbDb44gt49FGrE4mIiIiIiIjILWpKSYY0fbrZlAJ4/31o08baPCIiIiIiIiKSmJpSkuF884152R7Aa6/Bs89aGkdERERERERE7uK+774HsGHDBj7//HNOnjxJ3rx56dChAw0aNEiOU4s4Zd06c2Fzw4DevWHECKsTiYiIiIiIiMjd3PdMqQ8//JDw8HBiYmIoV64cFy9eJDw8nAkTJiRHPhGH7dgBLVtCTAy0bQvvvmuuJyUiIiIiIiIiaY/NMAzDkQOvXLmCv7//HdtLlCjBuHHjaNasmX3b8OHD+fTTTzlx4kTyJc2koqKiCAwMJDIykoCAAKvjpFmHDkH16nD2LNSpAytWgLe31alEREREREREMh9HexkOz5QqXLgwH3/8sUPH2mw2bJqiIqnk7Flo0MD8NyQEFi5UQ0pEREREREQkrXN4Tanp06czZMgQ3n//faZOnUr16tUB6NevH507d6Zdu3Y8+OCD/P777yxcuJAxY8akWGiRW6KioHFj+OsveOQRc4aUJpSJiIiIiIiIpH0Oz5Rq3bo1+/bto1WrVjRq1IiOHTty4sQJevfuzYIFC3Bzc2P79u34+/uzaNEiXnzxxZTMLcLNm+YaUjt2QO7csHo15M1rdSoRERERERERcYTDa0r928mTJ3nxxRdZtGgRgwcPZujQoWTJkiUl8mV6WlPq7uLjoWNH+OYb8PeHDRsgNNTqVCIiIiIiIiKS7GtK/dtDDz3E559/zurVq1m2bBnFihVj3rx5LocVcYZhwPPPmw0pLy9zDSk1pERERERERETSF4fXlAI4duwYq1at4vr161SuXJlq1aoRERHBJ598wqBBg3jvvfeYOnUqYWFhKZVXhDfegOnTwWaDzz+HunWtTiQiIiIiIiIiznJ4ptTSpUspXrw4b731Fp9++ik1atRg8ODB2Gw2nnzySf744w+qVq1KjRo16NmzJ+fOnUvJ3JJJffABjBxpPp42Ddq2tTaPiIiIiIiIiLjG4abU0KFDadu2LYcOHWLbtm3MmTOHSZMmcfLkSQD8/f0ZP348u3bt4uzZsxQpUiTFQkvm9O230KeP+XjECOjd29o8IiIiIiIiIuI6h5tSJ06coHr16vb3q1evjmEYnDp1KtFxRYsWZdmyZcyfPz/5Ukqm98MP0LmzuZ7UM8/Aa69ZnUhERERERERE7ofDa0rVqFGDqVOnUrp0aYKCgnjzzTfJnj07pUqVuuvxjRs3TraQkrnt3AktWkBMDLRubV62Z7NZnUpERERERERE7ofDM6VmzJjBAw88QK1atShTpgxbt27l66+/xtfXNyXzSSb311/QqBFERUHt2ubC5u7uVqcSERERERERkfvl8EypBx98kO+//56bN29y8+ZNgoKCUjCWCJw9Cw0amP+WKweLFoGPj9WpRERERERERCQ5ONyUusXHxwcfdQYkhUVFQZMmcOgQPPwwrFgBgYFWpxIRERERERGR5OLw5XsiqSU62lw7avt2yJULVq2CBx6wOpWIiIiIiIiIJCc1pSRNiY+Hbt1g7VrImtWcIVWkiNWpRERERERERCS5qSklaYZhQP/+8NVX4OkJCxZAWJjVqUREREREREQkJagpJWnGm2/CtGlgs8Fnn0H9+lYnEhEREREREZGUoqaUpAkzZsCrr5qPp06F9u2tzSMiIiIiIiIiKUtNKbHcggXw7LPm41degeeeszaPiIiIiIiIiKQ8NaXEUhs3QqdOkJAATz0Fr79udSIRERERERERSQ1qSolldu+G5s0hOhpatoT33zfXkxIRERERERGRjE9NKbHE4cPQsCFERkKtWjBvHnh4WJ1KRERERERERFKLmlKS6s6dMxtSZ85A2bKwaBH4+FidSkRERERERERSU5ptSr311lvYbDYGDBhg33bmzBm6du1K3rx58fPzo3z58nz77bf/eZ7XXnsNm82W6K148eKJjrl58yZ9+/YlR44cZM2alTZt2nD27NlExxw7dozw8HB8fX3JnTs3Q4YMIS4uzr5/x44dhIaGkjVrVpo1a8bFixft++Li4ggLCyMiIuI+viIZw5Ur0KQJHDwIBQvCihUQFGR1KhERERERERFJbWmyKbV161Y+/PBDypYtm2h7t27dOHDgAIsXL2bPnj20bt2a9u3bs2PHjv88X6lSpTh9+rT9bdOmTYn2Dxw4kCVLlvD111+zYcMGTp06RevWre374+PjCQ8PJyYmhs2bNzNnzhxmz57NiBEj7Mf06tWLunXrsn37diIjIxkzZox934QJE6hevTqVKlW6ny9LuhQfDz/8YF6et2YNtGoF27ZBzpywahU8+KDVCUVERERERETECmmuKXX16lW6dOnCjBkzyJYtW6J9mzdv5vnnn6dSpUo88sgjvPLKKwQFBbFt27b/PKeHhwd58+a1v+XMmdO+LzIyko8//piJEydSt25dwsLCmDVrFps3b+bnn38GYPXq1ezbt4/PPvuMkJAQGjduzBtvvMG0adOIiYkBYP/+/Tz11FMULVqUTp06sX//fgD++usvPv74Y958883k/DKlC999Z86GqlMHOneGBg1g7Vrw9jZnSBUtanVCEREREREREbFKmltaum/fvoSHh1O/fn1Gjx6daF+1atX48ssvCQ8PJygoiK+++oqbN2/y6KOP/uc5Dx48yIMPPoiPjw9Vq1Zl7NixFChQAIBt27YRGxtL/fr17ccXL16cAgUKsGXLFqpUqcKWLVsoU6YMefLksR/TsGFDevfuzd69ewkNDaVcuXKsWbOG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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"# Performance Impact"
],
"metadata": {
"id": "IMUFNWnxlfiR"
}
}
],
"metadata": {
"colab": {
"provenance": [],
"toc_visible": true,
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment