Skip to content

Instantly share code, notes, and snippets.

@nicksherron
Last active July 2, 2025 00:54
Show Gist options
  • Select an option

  • Save nicksherron/f8c819a58c9248568fd57718d9411fbd to your computer and use it in GitHub Desktop.

Select an option

Save nicksherron/f8c819a58c9248568fd57718d9411fbd to your computer and use it in GitHub Desktop.
Querying Github data for what percentage of go repos have tests in them. PS. DO NOT RUN, bigquery query not optimized and is crazy expensive to run. I did win the argument though 😜
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "go_tests_stats_bigquery_2016.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyPBCHOzNdFnSLmfiay3BZL/",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/nicksherron/f8c819a58c9248568fd57718d9411fbd/go_tests_stats_bigquery_2016.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E5MW22QgYqD9"
},
"source": [
"# imports and google auth"
]
},
{
"cell_type": "code",
"metadata": {
"id": "q2AzIHeZYyIr"
},
"source": [
"from google.colab import auth\n",
"auth.authenticate_user()"
],
"execution_count": 44,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "_Jtu8cIOYyIs"
},
"source": [
"import pandas as pd\n",
"project_id = 'personal-326121'"
],
"execution_count": 45,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"#Github go projects as of sampled from 2016 with content larger than 377.8 kb\n",
"\n",
"Don't have tests vs have tests\n",
"\n"
],
"metadata": {
"id": "-iA4bTLrsH3s"
}
},
{
"cell_type": "code",
"source": [
"%%bigquery --project $project_id df3\n",
"WITH\n",
" gorepos AS (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" `bigquery-public-data.github_repos.languages` r\n",
" CROSS JOIN\n",
" UNNEST(LANGUAGE) l\n",
" WHERE\n",
" l.name = 'Go'\n",
" AND l.bytes > 377810\n",
"),\n",
" has_tests AS (\n",
" SELECT\n",
" files.repo_name AS repo_name,\n",
" contents.content AS content\n",
" FROM\n",
" `bigquery-public-data.github_repos.contents` contents\n",
" INNER JOIN\n",
" `bigquery-public-data.github_repos.files` files\n",
" ON\n",
" contents.id = files.id\n",
" WHERE\n",
" repo_name IN (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" gorepos)\n",
" AND REGEXP_CONTAINS(content, r'\\*testing.T' )\n",
" )\n",
"SELECT\n",
" COUNT(DISTINCT gorepos.repo_name) AS total,\n",
" COUNT(DISTINCT gorepos.repo_name) - COUNT(DISTINCT has_tests.repo_name) AS no_tests,\n",
" COUNT(DISTINCT has_tests.repo_name) AS has_tests\n",
"FROM\n",
" gorepos,\n",
" has_tests"
],
"metadata": {
"id": "YQFnvuSCsH3s"
},
"execution_count": 46,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df3"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
},
"outputId": "df0bb395-afa3-4c03-9039-6e263fcbdeea",
"id": "XzlbNM1WsH3t"
},
"execution_count": 47,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <div id=\"df-eadadc14-82e3-42cb-88c2-a33ce60ab48c\">\n",
" <div 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>total</th>\n",
" <th>no_tests</th>\n",
" <th>has_tests</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>10524</td>\n",
" <td>268</td>\n",
" <td>10256</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-eadadc14-82e3-42cb-88c2-a33ce60ab48c')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-eadadc14-82e3-42cb-88c2-a33ce60ab48c 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-eadadc14-82e3-42cb-88c2-a33ce60ab48c');\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",
" </div>\n",
" "
],
"text/plain": [
" total no_tests has_tests\n",
"0 10524 268 10256"
]
},
"metadata": {},
"execution_count": 47
}
]
},
{
"cell_type": "code",
"source": [
"df3.has_tests / df3.total"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b28df6bc-bbe0-4504-e065-c918bb014b74",
"id": "lHyJ6UfesH3t"
},
"execution_count": 48,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 0.974534\n",
"dtype: float64"
]
},
"metadata": {},
"execution_count": 48
}
]
},
{
"cell_type": "code",
"source": [
"df3[['has_tests', 'no_tests']].T.plot.pie(subplots=True, figsize=(18, 12),fontsize=20, autopct=\"%.2f\", ) "
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 718
},
"outputId": "021b7e8e-9bbe-4636-c49c-a6170b3486b6",
"id": "hrVxWCwzsH3t"
},
"execution_count": 49,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fafdfe0f790>],\n",
" dtype=object)"
]
},
"metadata": {},
"execution_count": 49
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAv0AAAKaCAYAAACtN+b2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeWBU9b3//9fsCUkIOwiEHQFxYRdRqWLLVau3apdrW1vpvfanVm3t1y5aW63dtLWltXXDfala2rrjvoKIsu9hTQzZyL4nM3PmLL8/IrRpAiSQ5MzyfPxR4czMmfdJSPqaz/l83h+P4ziOAAAAACQtr9sFAAAAAOhZhH4AAAAgyRH6AQAAgCRH6AcAAACSHKEfAAAASHKEfgAAACDJEfoBAACAJEfoBwAAAJIcoR8AAABIcoR+AAAAIMkR+gEAAIAk53e7AAAAALQXi8VUVFSkcDjidilJLT09TTk5OQoEAm6X0qM8juM4bhcBAACAtvLz8+X3h5SZmS2Px+N2OUnJcRw1NtbLsqIaN26c2+X0KKb3AAAAxKFwOELg72Eej0dZWdkpcTeF0A8AABCnCPw9L1W+xoR+AAAAIMmxkBcAACABpPcJKS3U/dEtEjUVbol2+3kRXwj9AAAACSAt5NeFN7zY7ed9+Q9f6FTonzt3ht59d6X69OnT7TUc8OCD92vRov87pk463XGOZMT0HgAAAMSFhx9+QLFYzPVzJCNG+gEAANApf//7M1q+/D3V19fr2muv14IF50iSbrnlZhUWFigWi2nkyBzdfPOt6tu3r/btK9Avf3mrIpGIbNvW5z9/ob7+9W92eO4777xdkvTtby+S1+vVvfc+KK/Xoz/9abHy8vYoGo1q5szZ+t73/p98Pp8eemiJ3nrrDQWDQXk8Ht1zzwO6//67253jnXfe1DPPPKVgMCjbtvXrX/9WY8aM7Z0vWByhTz8AAEAc2r49V8OHjz749/79M3psek9tbfMRnzd37gzdcMOP9OUvX6rNmzfppz/9sV5++Q1JUl1drfr16y9Juv/+e2RZlq655rtavPhODRw4UJdf/r+SpIaGBvXt2/ew7/HvU4h+/etfaMaMGTrvvAtk27ZuvfVmzZw5W2effY6++MULtWzZm0pLS1Nzc7NCoZD8fn+7c5xzznwtXfqsBg0aLMMwZNuW0tLS27xvaek+TZ16Qte/eAmEkX4AAAB0yuc+91+SpBNPPEmVlZWKRqMKhUJ69dVX9MYbr8o0TYXDYY0aNUqSNG3aDN1zz12KRCKaOXOWZs6c3aX3W7lyuXJzt+npp/8qSYpEIhoyZIgyMzM1cmSOfvGLWzRnzlydccaZysjI6PAcs2bN1i9+cavOOGO+Tj/9DI0YMfIYvgKJi9APAACATgkGQ5Ikn88nSbIsS5s2bdBzz/1DDz74mPr376833nhNL7zwnCRpwYJzdNJJJ2v16o/0xBOP6eWXX9Rtt/260+/nOI5+97vFHQb1hx56XFu2bNb69Wu0aNHX9cc/3q2JE49v97w77vi9cnO3a/36tbrmmv9PP/rRzZo37/SjufyERugHAABIAJGoqZf/8IUeOe+xaGxsVGZmprKzs2UYhl5++V9TkIqKCjVixEhdcMF/KydnlH71q58f9lx9+mSoqanp4NScM8/8jJ544lH96Ec/kc/nU11drVpaWpSd3U/hcItmzJipGTNmauvWrcrPz9PEice3OYdpmior26+pU0/U1Kknqri4WLt37yT0AwAAID6FW6Jx2U//tNPm6fXXX9VXvnKRsrP7adq0GcrN3S5Jeuedt/TGG6992j7To+9//4eHPdfXvnaZrr32SoVCId1774O6/vof6O6779I3vnGpPB6PAoGArr/+B/L7/brxxh8qGo3IcRxNmjRZZ521oN05/vSne/TLX96qpqYmeTweDR06VNdcc11Pf0niEgt5AQAA4tB/LuRFz0mFhbz06QcAAACSHNN7AAAA0GsefvgBvf/+u+2O33XXvRowYIALFaUGpvcAAADEIab39B6m9wAAAABIeIR+AAAAIMkR+gEAAIAkx0JeAACABNA3wy/fpzvidifLiKqh+dg26OqqZcte0sknn6JRo45+zUJ3nCOVEPoBAAASgC8YUv6vv9jt5x1387NSL4f+V155Wf369TumwN4d50glhH4AAAAc0dy5M3TVVddo+fL3VF9fr2uvvV4LFpwjSfroow913313y7Is9e/fXz/+8c3KyRnV4XmWLXtRO3fmavHiO7Vkyb267rrva86cU/XEE4/p/fffkWlaGjx4sH7yk59p4MBBWrHifS1Zcq+8Xq8sy9INN/xY+/eXtDtHWlqafv/738pxbJmmqW996wotXHhub36J4hqhHwAA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1iyNGjVKffv21f79+/Xuu+/KMAzdd999mj9//sHzr1ixQldeeaUyMzO1YMECDR06VHV1dcrPz1d+fr5WrVrVpYt67LHH9M4772jNmjW6+OKLNWLEiIOPXXfddZKkhoYGXX755crNzdXUqVM1ffp02batlStXqrCwUFdddZW+//3vH3zd4sWLtWTJEo0cOVLz589XVlaWKisrtXXrVo0bN05//vOfVVxcrOeff16PP/64JOnyyy8/+PopU6bos5/9bLdf67EqLGvUNXe+26vvCQAA4tOUMQN06xVzlZEecLsUdLMujfSvWbNG1113XZvR6AsuuEBXXHGFHn744YOhf/z48VqxYoUGDBjQ5vVlZWX60pe+pNtvv71N6P/HP/4h27b15JNPavLkyW1eU1NT0+WLWrRokRobGw+G/lNPPbXdc37zm98oNzdXP/jBD/Ttb3/74PFoNKrvfOc7WrJkic4991xNmTJFkrR06VINHTpUy5YtU3p6eoc1jhw5Utddd52ef/55Sf/6gPHvuvtaj1VNA6v0AQBAq9rGiLxej9tloAd0aU7/iBEjdPXVV7c5duaZZ2r48OHasmXLwWNZWVntAr8kDRs2TOeee67y8/NVWlra7vFQKNTuWEfnOVa1tbV66aWXdOKJJ7YJ/Adq+OEPfyjHcfTyyy+3eczv98vna3+762hq7K1rPZKqenbjBQAArWobowr6WfKZjLo00j958uQOQ++wYcO0adOmNsfWr1+vJ554Qps2bVJ1dbVisVibx8vLyzV8+HBJ0oUXXqg333xTX/nKV3Teeedp7ty5mjFjhoYNG9bV6+mUrVu3yrIseTwe/eUvf2n3uGmakqT8/PyDxy688EI9+eSTOv/883Xeeedp9uzZmj59urKysrr03r19rYdjO44qa1nECwAAWkUNS5btqIO4hwTXpdDft2/fjk/i98u2/7UY9K233tJ3v/tdhUIhzZs3T6NGjVJ6erq8Xq/WrFmjNWvWyDCMg89fuHChlixZokceeUTPPfecli5dKkmaOnWqbrjhBp1++ulHc22HVFdXJ6k1/G/duvWQz2tubj7455tuukkjR47Uc889pwceeEAPPPCA/H6/5s+frxtvvFGjR4/u1Hv39rUeTixmqa4x2mvvBwAA4l9TS0wDskn9yabL3Xs646677lIgENCzzz6r8ePHt3nslltu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\n",
"text/plain": [
"<Figure size 1296x864 with 1 Axes>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"#Github go projects as of sampled from 2016 with content larger than 30k bytes\n",
"\n",
"Don't have tests vs have tests\n",
"\n"
],
"metadata": {
"id": "R9_JA5cmxqdi"
}
},
{
"cell_type": "code",
"source": [
"%%bigquery --project $project_id df2\n",
"WITH\n",
" gorepos AS (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" `bigquery-public-data.github_repos.languages` r\n",
" CROSS JOIN\n",
" UNNEST(LANGUAGE) l\n",
" WHERE\n",
" l.name = 'Go'\n",
" AND l.bytes > 30000\n",
"),\n",
" has_tests AS (\n",
" SELECT\n",
" files.repo_name AS repo_name,\n",
" contents.content AS content\n",
" FROM\n",
" `bigquery-public-data.github_repos.contents` contents\n",
" INNER JOIN\n",
" `bigquery-public-data.github_repos.files` files\n",
" ON\n",
" contents.id = files.id\n",
" WHERE\n",
" repo_name IN (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" gorepos)\n",
" AND REGEXP_CONTAINS(content, r'\\*testing.T' )\n",
" )\n",
"SELECT\n",
" COUNT(DISTINCT gorepos.repo_name) AS total,\n",
" COUNT(DISTINCT gorepos.repo_name) - COUNT(DISTINCT has_tests.repo_name) AS no_tests,\n",
" COUNT(DISTINCT has_tests.repo_name) AS has_tests\n",
"FROM\n",
" gorepos,\n",
" has_tests"
],
"metadata": {
"id": "UuNn5Uroxqdi"
},
"execution_count": 50,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
},
"outputId": "3efba94b-8e1a-4e75-d60e-87b600f784a4",
"id": "WwqfiTqwxqdi"
},
"execution_count": 51,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <div id=\"df-e38b90f4-9e17-4238-b9bf-96c340419df8\">\n",
" <div 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>total</th>\n",
" <th>no_tests</th>\n",
" <th>has_tests</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>35829</td>\n",
" <td>4525</td>\n",
" <td>31304</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e38b90f4-9e17-4238-b9bf-96c340419df8')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-e38b90f4-9e17-4238-b9bf-96c340419df8 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-e38b90f4-9e17-4238-b9bf-96c340419df8');\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",
" </div>\n",
" "
],
"text/plain": [
" total no_tests has_tests\n",
"0 35829 4525 31304"
]
},
"metadata": {},
"execution_count": 51
}
]
},
{
"cell_type": "code",
"source": [
"df2.has_tests / df2.total"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3c112044-5505-4fa4-8e85-613e0f60d37f",
"id": "y5vcHbdYxqdj"
},
"execution_count": 52,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 0.873706\n",
"dtype: float64"
]
},
"metadata": {},
"execution_count": 52
}
]
},
{
"cell_type": "code",
"source": [
"df2[['has_tests', 'no_tests']].T.plot.pie(subplots=True, figsize=(18, 12),fontsize=20, autopct=\"%.2f\", ) "
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 718
},
"outputId": "fe6fe7b2-e549-4fe5-c749-b6e37cc897fc",
"id": "Oyde8ApAxqdj"
},
"execution_count": 53,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fafdfd95490>],\n",
" dtype=object)"
]
},
"metadata": {},
"execution_count": 53
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtIAAAKaCAYAAAATYb6rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hV9eHH8c+5KzshbAgBZCtomYqKVNFaF7XaVq3V6q+1VVvtsrZWraPDDiutu45WS1u34t4oe8qSDSEmIYQEyB53nfH7A6QiKCQkOffc+349D8+Dd5z7uYkJn3zzHYbjOI4AAAAAtIrP7QAAAACAF1GkAQAAgDagSAMAAABtQJEGAAAA2oAiDQAAALQBRRoAAABoA4o0AAAA0AYUaQAAAKANKNIAAABAG1CkAQAAgDagSAMAAABtEHA7AAAAgJfZtq1du3appqZWlmW5HSepZWSkq7CwUMFg0O0okiTDcRzH7RAAAABeVVpaKtO0lZubL78/IMMw3I6UlBzHUWNjvSwrqkGDBrkdRxJTOwAAAA5Lc3Oz8vO7KxAIUqI7kGEYysnJUzgccTvKXhRpAACAw+A4kmFQqTpDov2gwmcdAAAAaAMWGwIAALSzjMw0pae1f82KRE2FW6Ltfl20DUUaAACgnaWnBTT1upfa/bqv3HXuIRXpiRPH6r335ikzM7PdM3zskUf+rssv/+5h7aDRHtdwE1M7AAAA0Gr/+MfDisfjrl/DTYxIAwAAJKFnnnlSs2e/r/r6el1zzU80ZcqpkqRbbrlJZWUlisfj6tevUDfddKtyc3NVWlqi3/72VkUiEdm2rbPPnqpvfevbB7z2nXf+QZL0ve9dLp/PpwceeEQ+n6G//W2atmzZrGg0qnHjJujHP/6Z/H6/Hn30Ib3zzlsKhUIyDEP33/+w/v73+/a7xsyZb+vJJ/+rUCgk27b1+9//SQMHHtE5H7A2YB9pAACAw7B27Tr17Ttgn9vy87M6bGpHbW3zQR83ceJYXXfdL/SNb1ykVatW6uabf6lXXnlLklRXV6suXfIlSX//+/2yLEs//OGPNG3anerWrZsuu+w7kqSGhgbl5uZ+7mt8cvrI73//G40dO1ZnnnmObNvWrbfepHHjJuiUU07V1742Va+++rbS09PV3NystLQ0BQKB/a5x6qmT9fTTz6t79x6KxWKybUvp6Rn7vG5FRalGjjyq9R+8DsCINAAAQBL60pe+LEkaNepo7dy5U9FoVGlpaXr99df01luvyzRNhcNh9e/fX5I0evRY3X//3YpEIho3brzGjZvQqtebN2+21q1boyee+I8kKRKJqGfPnsrOzla/foX6zW9u0bHHTtSkSScpKyvrgNcYP36CfvObWzVp0mSdeOIkFRT0O4yPQMejSAMAACShUChNkuT3+yVJlmVp5crleuGFZ/XII48rPz9fb731hl588QVJ0pQpp+roo4/R4sULNX3643rllZd0++2/P+TXcxxHf/7ztAOW30cf/Zc+/HCVli1bossv/5b++tf7NHTosP0e98c//kXr1q3VsmVL9cMffl+/+MVNOuGEE9vy9jsFRRoAAKCdRaKmXrnr3A657uFobGxUdna28vLyFIvF9Mor/5t+snVrmQoK+umcc76iwsL++t3vbvvca2VmZqmpqWnvtIyTTvqipk9/TL/4xY3y+/2qq6tVS0uL8vK6KBxu0dix4zR27DitXr1axcVbNHTosH2uYZqmKiu3a+TIURo5cpTKy8u1adMGijQAAEAqCbdEE3K/5+OPP0Fvvvm6Lrjgq8rL66LRo8dq3bq1kqSZM9/RW2+9sWcrOkM//en1n3utiy++RNdcc6XS0tL0wAOP6Cc/+bnuu+9uXXrpRTIMQ8FgUD/5yc8VCAR0ww3XKxqNyHEcDR8+QiefPGW/a/ztb/frt7+9VU1NTTIMQ7169dIPf3htR39IDguLDQEAAA7DgRYbouMk0mJD9pEGAAAA2oCpHQAAADigf/zjYc2a9d5+t9999wPq2rWrC4kSC1M7AAAADgNTOzoXUzsAAAAAj6NIAwAAAG1AkQYAAADagMWGAAAA7Sw3KyD/npMF25MVi6qh+fAOZWmtV199Wccc8wX179/2eeDtcY1ERJEGAABoZ/5Qmop//7V2v+6gm56XOrlIv/baK+rSpcthleD2uEYiokgDAAAkmYkTx+qqq36o2bPfV319va655ieaMuVUSdLChfP14IP3ybIs5efn65e/vEmFhf0PeJ1XX31JGzas07Rpd+qhhx7Qtdf+VMcee5ymT39cs2bNlGla6tGjh2688dfq1q275syZpYceekA+n0+WZem6636p7du37XeN9PR0/eUvf5Lj2DJNU//3f1fo9NPP6MwP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Xplb7HYMAAAS3hNvbxRntKSeQyrS5eXlGj58uG644YaOzoMEEY6a+vfr6xQzmfMFAMDB1DRE9O7iUhYeppikHZG+9957NXz4cC1evLjTX3vKlCmaMmVKp79uewpHTb29uMztGAAAeMZT72wSO+GllqQt0mi7cNTUP19ZK4vfUQEAcMjqmqJ6c+FHijIqnTIo0thPQ1NUc1eUux0DAADPeWbmZg5oSSGB1j6hvLxcd911lxYsWKCWlhYNHTpU1157rU455ZS9j2lsbNTTTz+tOXPmqKSkRDU1NcrOztbo0aN15ZVXasyYMftd94MPPpVtNZAAACAASURBVNCjjz6qdevWqaamRnl5eSooKNDkyZN1zTXXtCrjlClTtG3bNknSt7/97X3u27hx496/h8NhTZ8+Xa+//rpKS0tlGIaGDRumSy+9VOecc84+z3McRy+++KKefvpplZSUqLm5WV27dtWQIUP0ta99TWeddZYWL168z+sNHz5879/PO+88/fGPf2z399rewlFTj768hgUTAAC0QUNzTK/O+0hTJx2htFCraxY8xnAO4cem8vJynXrqqTr22GNVVFSkwsJCjR49WvX19Xr99ddlmqYee+wxTZw4UZK0cuVKXXLJJRo/frz69++v3Nxcbd++Xe+9955isZgefPBBTZ48ee/158yZoyuvvFLZ2dmaMmWKevXqpbq6OhUXF6u4uFgLFixo1Zt6/PHHNXPmTC1ZskTnnXeeCgoK9t537bXXSpIaGhp02WWXad26dRo5cqTGjBkj27Y1b948lZWV6aqrrtJPf/rTvc+bNm2aHnroIfXr10+TJ09WTk6Odu7cqdWrV2vQoEG65557VF5erhkzZuhf//qXJOmyyy7b+/wjjzxSp512Wru/1/ZWVd2sK+5419UMAAB4WVZGUI//+nSlp1Gkk12rirS0u4h+ctR07ty5uuKKKzR58mQ98sgjknaPSMfjcXXt2nWf61RWVurrX/+6cnJy9MYbb+y9/dprr9Xbb7+tl156SSNGjNjnOTU1Nftd51Dce++9uu+++zR9+nQdd9xx+91/ww03aMaMGfr5z3+u733ve3tvj0aj+sEPfqD58+drxowZOvLIIyVJxx13nNLS0vTWW28pIyPjczN+vNDwvffe2+91O+K9tpdw1NT9z63S7OVM6wAA4HB868vDdd7JQxiVTnKtmiNdUFCgq6++ep/bTjrpJPXt21cffvjh3ttycnIOWAh79+6tM844Q8XFxaqoqNjv/rS0tP1u64hiWVtbq5dfflmjRo3ap0R/nOH666+X4zh65ZVX9rkvEAjI7/e3S8bOeq+tEY1Zmrtym6sZAABIBjNmbxGzJJNfq35MGjFixAGLZO/evbVy5cp9blu2bJmmT5+ulStXqrq6WvF4fJ/7q6qq1LdvX0nS1KlT9fbbb+uCCy7QmWeeqYkTJ2rs2LHq3bt3a9/PIVm9erUsy5JhGLr33nv3u980d5/kV1z8v8NIpk6dqn//+98666yzdOaZZ2rChAkaM2aMcnJyWvXanf1eD1U4auqpdzbIZnI0AACHrSVi6q1FpTrzhIEKBfbvTkgOrSrSubm5B75IICDb/t/BHe+8845+9KMfKS0tTSeccIL69++vjIwM+Xw+LVmyREuWLFEsFtv7+NNPP10PPfSQ/vnPf+qFF17Q008/LUkaOXKkrrvuOp144olteW+fqa6uTtLuQr169erPfFxzc/Pev//qV79Sv3799MILL+jhhx/Www8/rEAgoMmTJ+uGG27QgAEDDum1O/u9HirbdvQO+0YDANBuXni/SGceP9DtGOhAHTJx5+6771YwGNTzzz+vwYMH73PfLbfcoiVLluz3nJNPPlknn3yyWlpatGrVKs2aNUtPPvmkrrzySr344osaMmRIu+X7eBT58ssv169+9atDeo7f79fll1+uyy+/XNXV1Vq2bJlee+01vfnmmyoqKtJrr72mUCh0SNfqzPd6KKIxUy/MKuIUQwAA2lFNQ0SL11bqhKP7yO9nx+Fk1CGf1dLSUg0ZMmS/Em3btpYtW/a5z83MzNTxxx+vX/3qV7ryyisVj8c1Z86cVmfw+Xx7X/PTjjnmGPl8Pn3wwQetvq4kdevWTaeffrruvvtuTZw4UWVlZdq0adM+r21ZB9+Mvb3e6+FyJL02r/igjwMAAK3z1DsbZVoMVCWrDinSBQUFKikpUVVV1d7bHMfRvffeq6Kiov0ev3Tp0r3zkj+purpakpSent7qDF26dJGkAy5q7Natm6ZOnao1a9bo/vvvP2DpLSsr09atWyVJsVjsgD8AxONx1dfXS9I+O3l06dJFNTU1ikQi+z2nI97r4YjFLb25sETNkf0zAQCAw1NW2ajNW+s4pCVJdcjUjssvv1y33nqrzjvvPJ1++ukKBAJavny5tmzZolNOOUXvv//+Po//3e9+p6qqKo0dO1YFBQUKBoNau3atFi1apIKCAp199tmtzjBx4kT5fD5NmzZNmzdv3ju/+wc/+IGk3VNMSktLdc899+jll1/W2LFj1b17d+3YsUNbtmzR6tWrNW3aNBUWFioSiejiiy/WgAEDNHLkSPXt21fRaFQLFizQli1bNGXKlH1G348//nitXr1aV1xxhcaPH69QKKQRI0ZoypQpHfJeD4cj6fn39//hBgAAtI8n3tqoX3/3OGWwr3TS8d922223HexBDQ0Nmj59+t5DRT5txowZ2rZt297DTkaNGqWCggJt3rxZixcv1pYtWzR8+HD95S9/UWNj496DUvr16ydJysvLUzwe14YNG/TBBx9o7dq1CgQCuuCCC3THHXcoPz+/1W+sa9euKiws1MaNGzV37lzNnz9fixcv3psxFArp3HPPVffu3bV161YtXbpUH3zwgWpra9WjRw9deuml+tKXvrR3kWRmZqaampq0bt06LVq0SCUlJerRo4euvvpq/exnP9tnN5OPD6tZtWqV5s6dq4ULFyoUCum0007rkPfaVqZla+6KbZrFvtEAAHSYHbUtmjK+ULlZ+299C287pANZkJyiMUs/+essle9ocjsKAABJbdLovrr2G6OVmR50OwraEUtIU1jxtnpKNAAAnWDBh9sVjR98IwJ4C0U6RbVE4npm5qaDPxAAABw223b03MzNikRZ3J9MPDPr/d1339X69esP+riCggKdf/75nZDI2yIxS8s2VB38gQAAoF3MXFqmb599lNsx0I48VaRnzJhx0Mcde+yxFOmDiMRMzZhVJGbHAwDQeZojphat3q5Jo/vK72NSQDJgsWEKisYtXXbbm+wdDQBAJxta2EV3XH2i0tkKLynw41CKsWxbC1dXUKIBAHDB5q11qm7Y/8A2eBNFOsXE47ZenL3F7RgAAKSsF94vUjgadzsG2gFFOsXsrAtrS3m92zEAAEhZc1aUyzAMt2OgHVCkU0g4anIcOAAALovELM1ZXi7Lst2OgsNEkU4hPsPQvJXb3I4BAEDKe3luseIUac+jSKcI23a0aA2nKgEAkAhKKxu1fVez2zFwmCjSKSIas/TGwhK3YwAAgD1eeL9ILeyi5WkU6RQRjZta91G12zEAAMAeC1dvl9/HokMv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pco77Wqllg91Og5iXGrngTJM2+kYjujSpYsmT57c4td96aWX1KVLF7300kvN8vwU6STlsk2dN7az0zEAIO4t+GSLfvLHpcqb8F2ldh3idBzEsKyh58j0sHNWIqFIJynLNNW/vFA5GexhCQAnav5Hm/XQ8x8p/4zrlNJloNNxEIPcRe3kyil2OgaamBGJMOM9WfkDIb02d7VmvvaJ01EAICGM7FOqG8/roW3/97BqvvjQ6TiIIQWTblRq18EyTKvFrllZWakxY8Zo0qRJmj59un76059q3rx5qqmpUadOnXTdddfp5JNPPuQxfr9fTz75pF599VWtX79elmWpa9euuuSSS3T66acfd4aXXnpJt9122xFvmz59uq677rqDby9dulRPPPGEFi1apL179yo3N1cjR47Utddeq8LCQzdJ2LBhg37729/q/fff19atW+X1elVYWKg+ffrohhtuUHZ2tiZPnqyFCxce8drvvPOOysrKtH//fj311FP6+9//rk2bNikSiSg3N1cVFRWaOnWqKioqjvrxWXfdddddx/dXgkRhWabalmTqr3NWKxTi5ykAOFHrtuzTtr31GnPORNVvWaPg7s1OR0IMsNKylDdumkzb1aLXraqq0tNPP62MjAw9/vjjMgxDo0aNUuvWrbVgwQK9+uqr6t+/v8rKyiQ1lOjvfOc7evHFF5WZmakzzjhDHTt21KJFi/Tyyy8rEAhoyJDjn76Ul5enhQsXqrS0VFOmTNHAgQMP/jlw7RdffFHTp09XZWWlhg8frqFDh8rj8ehvf/ubXn31VY0bN07p6emSpG3btmnSpElaunSp+vTpo1GjRqljx46SGgry+PHjlZube/D6a9as0ZgxYzR+/PiD1x00aJDcbremTJmiV155RW3atNHo0aPVs2dPpaWl6YMPPlBZWZl69ux51I8tOWe84xBj+rfS6/PWOh0DABLCux9ukGUamn72Tdr6lwdUu3qJ05HgsMwhkyQHj29YuHChrrvuOk2fPv3g+yZMmKCpU6fqiSee0ODBgyVJM2fO1MKFCzVixAj9+te/lm031MTp06fr3HPP1eOPP65Ro0apb9++jb52eXm5ysvL9eijj6q0tPSQEegD1qxZo7vuukulpaV69tlnDxl9nj9/vq644grNmDFDjz32mCTpzTff1J49e3T77bdrypQphzxXTU2NTLNh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\n",
"text/plain": [
"<Figure size 1296x864 with 1 Axes>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"#Github go projects as of sampled from 2016 with more than 30 watchers\n",
"\n",
"Have tests vs don't have tests"
],
"metadata": {
"id": "V2vSxbQajyjU"
}
},
{
"cell_type": "code",
"metadata": {
"id": "JobM2XbK9cw2"
},
"source": [
"%%bigquery --project $project_id df1\n",
"WITH\n",
" gorepos AS (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" `bigquery-public-data.github_repos.languages` r\n",
" CROSS JOIN\n",
" UNNEST(LANGUAGE) l\n",
" WHERE\n",
" l.name = 'Go'\n",
" AND repo_name IN (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" `bigquery-public-data.github_repos.sample_repos`\n",
" WHERE\n",
" watch_count > 30) ),\n",
" has_tests AS (\n",
" SELECT\n",
" files.repo_name AS repo_name,\n",
" contents.content AS content\n",
" FROM\n",
" `bigquery-public-data.github_repos.contents` contents\n",
" INNER JOIN\n",
" `bigquery-public-data.github_repos.files` files\n",
" ON\n",
" contents.id = files.id\n",
" WHERE\n",
" repo_name IN (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" gorepos)\n",
" AND REGEXP_CONTAINS(content, r'testing.T' )\n",
" AND repo_name IN (\n",
" SELECT\n",
" repo_name\n",
" FROM\n",
" `bigquery-public-data.github_repos.sample_repos`\n",
" WHERE\n",
" watch_count > 30) )\n",
"SELECT\n",
" COUNT(DISTINCT gorepos.repo_name) AS total,\n",
" COUNT(DISTINCT gorepos.repo_name) - COUNT(DISTINCT has_tests.repo_name) AS no_tests,\n",
" COUNT(DISTINCT has_tests.repo_name) AS has_tests\n",
"FROM\n",
" gorepos,\n",
" has_tests"
],
"execution_count": 54,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df1"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
},
"id": "jLCUkUvi_VZx",
"outputId": "d42f66ab-4c67-43be-a0f7-1b8a628a5033"
},
"execution_count": 55,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"\n",
" <div id=\"df-7849045e-cc92-4ed5-bccc-80a54cb1bc1a\">\n",
" <div 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>total</th>\n",
" <th>no_tests</th>\n",
" <th>has_tests</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1530</td>\n",
" <td>283</td>\n",
" <td>1247</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-7849045e-cc92-4ed5-bccc-80a54cb1bc1a')\"\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 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
" \n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\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",
" [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-7849045e-cc92-4ed5-bccc-80a54cb1bc1a 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-7849045e-cc92-4ed5-bccc-80a54cb1bc1a');\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",
" </div>\n",
" "
],
"text/plain": [
" total no_tests has_tests\n",
"0 1530 283 1247"
]
},
"metadata": {},
"execution_count": 55
}
]
},
{
"cell_type": "code",
"source": [
"df1.has_tests / df1.total"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dj_G35Uti4V5",
"outputId": "b2b54cdd-2d60-4d7c-8416-313e53e182c6"
},
"execution_count": 56,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 0.815033\n",
"dtype: float64"
]
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "markdown",
"source": [
""
],
"metadata": {
"id": "naPPiW7Uj9nN"
}
},
{
"cell_type": "code",
"source": [
"df1[['has_tests', 'no_tests']].T.plot.pie(subplots=True, figsize=(18, 12),fontsize=20, autopct=\"%.2f\", ) "
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 718
},
"id": "eI_Cf2Iejcn4",
"outputId": "aed4708e-3fa0-417e-ece3-41be7a30cabb"
},
"execution_count": 57,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x7fafdfd72250>],\n",
" dtype=object)"
]
},
"metadata": {},
"execution_count": 57
},
{
"output_type": "display_data",
"data": {
"image/png": "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11+yZImuu+465eTkaNasWerXr58aGxtVVlamsrIyLV26tEt5H3vsMb3xxhtauXKlLr/8chUVFR247/rrr5ckNTc36+qrr1ZxcbHGjh2r0047TY7j6N1331VFRYW+/e1v64c//OGB582ePVtz5szRoEGDNHPmTOXm5qq2tlYbNmzQsGHD9Kc//UlVVVWaN2+eHn/8cUnS1VdffeD5J554os4999xuf689ybYdVdW26gez35ZlO17HAQAkmf69s3TPj85SVkbQ6yjwSLeXVWl/2fvk6N8777yja6+9VjNnztRDDz0kaf/IajQaVa9evQ66zt69e/WlL31Jubm5eumllw7cfv311+vVV1/V/PnzNWbMmIOeU19ff8h1OuPee+/Vn//8Z82dO1dTpkw55P6bbrpJ8+bN049//GN961vfOnB7JBLRd7/7Xb333nuaN2+eTjzxREnSlClTlJ6erldeeUWZmZlHzPjR4qrFixcf8ro98V57Slsoqu/fvVj7GpmnCgDoGaeO6qvbvjlZ6Wk98oUw4ly3j6kXFRXpO9/5zkG3nXnmmRo4cKA++OCDA7fl5uYetnT1799fX/jCF1RWVqbdu3cfcn96evoht/VEeWtoaNALL7ygcePGHVRUP8pw4403ynVdLViw4KD7AoGA/H5/t2SM1Xs9WhHT0m8eX0VRBQD0qHXbavXsm9tZcJWiuv1XlDFjxhy2rPXv31/r1q076LY1a9Zo7ty5Wrdunerq6hSNRg+6v7q6WgMHDpQkXXLJJXr11Vd15ZVX6oILLtDUqVM1YcIE9e/fv7vfgiRpw4YNsm1bhmHo3nvvPeR+y9r/F6asrOzAbZdccon+9re/6cILL9QFF1ygSZMm6bTTTlNubm6XXjvW7/VohCOWnn2zROtLar2OAgBIAf98batOGdlXo4YUKhhg/moq6faympeXd/gXCgTkOB/PaXzttdf0P//zP0pPT9e0adM0ZMgQZWbun0C9cuVKrVy5UqZpHnj8+eefrzlz5uiRRx7Rc889p6eeekqSNHbsWN1www2aPn16t76PxsZGSftL64YNGz7zcW1tbQf+fPPNN2vQoEF67rnn9OCDD+rBBx9UIBDQzJkzddNNN+n444/v1GvH+r12lRm1tWVng556fZunOQAAqcN1pV8/tlIP/HSWgoFDv3lE8vJs8sc999yjYDCoZ599VsOHDz/ovttvv10rV6485DlnnXWWzjrrLLW3t2v9+vV666239OSTT+q6667T888/rxEjRnRbvo9GQ6+55hrdfPPNnXqO3+/XNddco2uuuUZ1dXVas2aNXnzxRb388svavn27XnzxRaWlpXXqWrF8r13huq5a26O66/GVnFAFAIip5jZTv3xkpX5x3RnMX00hno2j79y5UyNGjDikqDqOozVr1hzxuVlZWTrjjDN0880367rrrlM0GtWSJUu6nOGjbTA+OeL7kfHjx8vn82n16tVdvq4k9e7dW+eff77uueceTZ06VRUVFdq27eORSD8bDP0AACAASURBVJ/PJ9vueO+47nqv3cWMOvrFIyvUFmbeEAAg9jaX1+uZN0qYv5pCPCurRUVFKi8vV3V19YHbXNfVvffeq+3btx/y+FWrVh2YJ/pJdXV1kqSMjIwuZygoKJCkwy7k6t27ty655BJt3LhR991332GLZUVFhSorKyVJpmketmRHo1E1Ne3fKP+TOwQUFBSovr5e4fChi5N64r12h3DE0tOvb9X2qkZPXh8AAEl6+o1t2rGnSZbFlompwLMx9GuuuUZ33HGHLr/8cp1//vkKBAJau3atSktLdfbZZ+vNN9886PG//OUvVV1drQkTJqioqEjBYFCbNm3S8uXLVVRUpIsuuqjLGaZOnSqfz6fZs2erpKTkwHzb7373u5L2T0fYuXOn/vSnP+mFF17QhAkT1KdPH9XU1Ki0tFQbNmzQ7NmzNXjwYIXDYX31q1/V8ccfr7Fjx2rgwIGKRCJaunSpSktLNWvWrINGkc844wxt2LBB1157rU4//XSlpaVpzJgxmjVrVo+812Nl2Y527m3RM4tLYv7aAAB80v75q6v0wE/PUQ6LrZKe/84777yzOy7U3NysuXPnHtjY/tPmzZunXbt2Hdhwf9y4cSoqKlJJSYlWrFih0tJSjR49WnfffbdaWloObNY/aNAgSVJ+fr6i0ai2bNmi1atXa9OmTQoEArryyiv161//WoWFhV3O3KtXLw0ePFhbt27VO++8o/fee08rVqw4kDEtLU2XXnqp+vTpo8rKSq1atUqrV69WQ0OD+vbtq69//es677zzDiwMy8rKUmtrq4qLi7V8+XKVl5erb9+++s53vqMf/ehHB+2S8NGBCevXr9c777yjZcuWKS0tTeeee26PvNdjFTYt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Cb3So9C/Z1s5zUiyw+3xw6gpULlIPxFdBssqEQnT0uoFAPj8ARw4Vo1tB8qx53AVDp6ohdfHnbRCldOmoVdaFHK6RaN/z1j0SHHC7fVDUxUYVJZTIroyLKtEpBtujw8erx+aQUFpRQP2HK7E/qPVOHiiBsfLG+DnuFfdMWoKMlOcyM6IQr/MWPRMj4LZqMLj9fO2PhF1CpZVItKtQCCA5rNXXzWDgtOVjdh/tBr7jlThYGktjpyqg8fLK7BdxWHVkJ5oR3qiAzkZUejdLRqxLjNa3T4YVBkaJ0QRURCwrBJRyGlp9cLnb1tvs7K2BUdP1eHL0hqcKGtAaUXbP61un+iYIctiUpGeaEdGogOZKU5kpUUhJc4KgyrD7fFDVSQYNVV0TCKKECyrRBQWfP4AWt1tV2GNBgVNrV6cPtOIw6fqcPhkLUrLG3DyTCMqa1s4HhaAy2ZEQrQFCTEWJEZbkJZoR0qcDYkxVpiNKlrdPiiyBJORpZSIxGJZJaKw1+rxwev1Q5YlaAYFrW4vaupbUVHTjNNnGnGyshGVNc2oqGnGmZpmVNW1wOsL3bdGq0lFlMOEKLsJUQ4jouwmpMTbkJZgQ0KUBS67EYEA4PH6IUlt5V7hrHwi0imWVSKKeF6vH26vD/5AAKrcNvbS6/OjqdWLpmYP6ps9qGtoRXV9K6rrW1Df6EZdowcNTW40t3rh9vrPTQ5ze33weNr+7fb4r+gqriyhbTF8TYFJU2ExqTBpKsxGFSajAotRhcn41a9VOK0aYpxtpdRh02Aza7CY1LNF1Ad/oO01DaoMg8rxpEQUmlhWiYiuQCAQgMfnh88XgN8fQAABABIkAJIEyJIESZYgSxIUWYIktQ1R+GolA+lsIZXO/uKrrwEAfyAABNqO9/n9ba/f9tC/Xl9ue11VkSGd/ToionDGskpEREREusVBSkRERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRbLKtEREREpFssq0RERESkWyyrRERERKRb/x8Z3ouRz4g3SAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 1296x864 with 1 Axes>"
]
},
"metadata": {}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment