{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploring facets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Facets aggregate collection data in interesting and useful ways, allowing us to build pictures of the collection. This notebook shows you how to get facet data from Trove." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RendererRegistry.enable('notebook')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import requests\n", "import altair as alt\n", "import pandas as pd\n", "import os\n", "\n", "# Make sure data directory exists\n", "os.makedirs('data', exist_ok=True)\n", "\n", "alt.renderers.enable('notebook')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Insert your API key between the quotes." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your API key is: \n" ] } ], "source": [ "api_key = ''\n", "print('Your API key is: {}'.format(api_key))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "api_search_url = 'https://api.trove.nla.gov.au/result'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set up our query parameters. We want everything, so we set the `q` parameter to be a single space." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "params = {\n", " 'q': ' ', # A space to search for everything\n", " 'facet': 'format',\n", " 'zone': 'book', \n", " 'key': api_key,\n", " 'encoding': 'json',\n", " 'n': 1\n", "}" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "response = requests.get(api_search_url, params=params)\n", "print(response.url) # This shows us the url that's sent to the API\n", "data = response.json()\n", "# print(data)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
facettotal
0Archived website21976
1Audio book181878
2Book/Braille30639
3Book/Illustrated8866768
4Book/Large print104565
5Book9240406
6Conference Proceedings576807
7Microform702354
8Thesis584371
\n", "
" ], "text/plain": [ " facet total\n", "0 Archived website 21976\n", "1 Audio book 181878\n", "2 Book/Braille 30639\n", "3 Book/Illustrated 8866768\n", "4 Book/Large print 104565\n", "5 Book 9240406\n", "6 Conference Proceedings 576807\n", "7 Microform 702354\n", "8 Thesis 584371" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from operator import itemgetter\n", "\n", "def facet_totals():\n", " '''\n", " Loop through facets saving terms and counts.\n", " Returns a list of dictionaries.\n", " '''\n", " facets = []\n", " # Sort alphabetically by facet name\n", " facet_list = sorted(data['response']['zone'][0]['facets']['facet']['term'], key=itemgetter('search'))\n", " for term in facet_list:\n", " term_count = int(term['count'])\n", " if 'term' in term:\n", " # There be sub-terms!\n", " for subterm in sorted(term['term'], key=itemgetter('search')):\n", " facets.append({'facet': subterm['search'], 'total': int(subterm['count'])})\n", " # Subtract the subterm count from the term count\n", " term_count = term_count - int(subterm['count'])\n", " # print('{:<50} {:,}'.format(subterm['search'], int(subterm['count'])))\n", " # print('{:<50} {:,}'.format(term['search'], term_count))\n", " facets.append({'facet': term['search'], 'total': term_count})\n", " return pd.DataFrame(facets)\n", "\n", "facet_totals = facet_totals()\n", "facet_totals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can create a bar chart using Plotly. The `x` values will be the zone names, and the `y` values will be the totals." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Comment out either or both of these lines if not necessary\n", "# Sort by total (highest to lowest) and take the top twenty\n", "#top_facets = facet_totals.sort_values(by=\"total\", ascending=False)[:20]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "var spec = {\"config\": {\"view\": {\"width\": 400, \"height\": 300}}, \"data\": {\"name\": \"data-9d497a49a7a963c58c126f625f1155a1\"}, \"mark\": \"bar\", \"encoding\": {\"x\": {\"type\": \"quantitative\", \"field\": \"total\"}, \"y\": {\"type\": \"nominal\", \"field\": \"facet\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v2.6.0.json\", \"datasets\": {\"data-9d497a49a7a963c58c126f625f1155a1\": [{\"facet\": \"Archived website\", \"total\": 21976}, {\"facet\": \"Audio book\", \"total\": 181878}, {\"facet\": \"Book/Braille\", \"total\": 30639}, {\"facet\": \"Book/Illustrated\", \"total\": 8866768}, {\"facet\": \"Book/Large print\", \"total\": 104565}, {\"facet\": \"Book\", \"total\": 9240406}, {\"facet\": \"Conference Proceedings\", \"total\": 576807}, {\"facet\": \"Microform\", \"total\": 702354}, {\"facet\": \"Thesis\", \"total\": 584371}]}};\n", "var opt = {};\n", "var type = \"vega-lite\";\n", "var id = \"2302a71e-4494-4bed-883b-ef52ed8cad51\";\n", "\n", "var output_area = this;\n", "\n", "require([\"nbextensions/jupyter-vega/index\"], function(vega) {\n", " var target = document.createElement(\"div\");\n", " target.id = id;\n", " target.className = \"vega-embed\";\n", "\n", " var style = document.createElement(\"style\");\n", " style.textContent = [\n", " \".vega-embed .error p {\",\n", " \" color: firebrick;\",\n", " \" font-size: 14px;\",\n", " \"}\",\n", " ].join(\"\\\\n\");\n", "\n", " // element is a jQuery wrapped DOM element inside the output area\n", " // see http://ipython.readthedocs.io/en/stable/api/generated/\\\n", " // IPython.display.html#IPython.display.Javascript.__init__\n", " element[0].appendChild(target);\n", " element[0].appendChild(style);\n", "\n", " vega.render(\"#\" + id, spec, type, opt, output_area);\n", "}, function (err) {\n", " if (err.requireType !== \"scripterror\") {\n", " throw(err);\n", " }\n", "});\n" ], "text/plain": [ "" ] }, "metadata": { "jupyter-vega": "#2302a71e-4494-4bed-883b-ef52ed8cad51" }, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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" }, "metadata": { "jupyter-vega": "#2302a71e-4494-4bed-883b-ef52ed8cad51" }, "output_type": "display_data" } ], "source": [ "# Create a bar chart\n", "alt.Chart(facet_totals).mark_bar().encode(\n", " x='total:Q',\n", " y='facet:N'\n", ")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "facet_totals.to_csv('data/facet-{}.csv'.format(params['facet']), index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once you've saved this file, you can download it from the workbench [data directory](data)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }