!pip install ipywidgets
!pip install pandas
!pip3 install requests
!pip3 install plotly
!pip3 install numpy
Requirement already satisfied: ipywidgets in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (7.6.3) Requirement already satisfied: ipython>=4.0.0; python_version >= "3.3" in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (7.22.0) Requirement already satisfied: widgetsnbextension~=3.5.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (3.5.1) Requirement already satisfied: traitlets>=4.3.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (5.0.5) Requirement already satisfied: jupyterlab-widgets>=1.0.0; python_version >= "3.6" in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (1.0.0) Requirement already satisfied: nbformat>=4.2.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (5.1.3) Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipywidgets) (5.3.4) Requirement already satisfied: backcall in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.2.0) Requirement already satisfied: pexpect>4.3; sys_platform != "win32" in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (4.8.0) Requirement already satisfied: setuptools>=18.5 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (50.3.1.post20201107) Requirement already satisfied: pygments in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (2.8.1) Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (3.0.17) Requirement already satisfied: appnope; sys_platform == "darwin" in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.1.2) Requirement already satisfied: pickleshare in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.7.5) Requirement already satisfied: jedi>=0.16 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.17.0) Requirement already satisfied: decorator in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (5.0.5) Requirement already satisfied: notebook>=4.4.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from widgetsnbextension~=3.5.0->ipywidgets) (6.3.0) Requirement already satisfied: ipython-genutils in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from traitlets>=4.3.1->ipywidgets) (0.2.0) Requirement already satisfied: jupyter-core in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets) (4.7.1) Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets) (3.2.0) Requirement already satisfied: jupyter-client in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (6.1.12) Requirement already satisfied: tornado>=4.2 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets) (6.1) Requirement already satisfied: ptyprocess>=0.5 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from pexpect>4.3; sys_platform != "win32"->ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.7.0) Requirement already satisfied: wcwidth in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.2.5) Requirement already satisfied: parso>=0.7.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jedi>=0.16->ipython>=4.0.0; python_version >= "3.3"->ipywidgets) (0.8.2) Requirement already satisfied: prometheus-client in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.10.0) Requirement already satisfied: terminado>=0.8.3 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.9.4) Requirement already satisfied: nbconvert in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (6.0.7) Requirement already satisfied: Send2Trash>=1.5.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.5.0) Requirement already satisfied: argon2-cffi in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (20.1.0) Requirement already satisfied: jinja2 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.11.3) Requirement already satisfied: pyzmq>=17 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (20.0.0) Requirement already satisfied: attrs>=17.4.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (20.3.0) Requirement already satisfied: six>=1.11.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (1.15.0) Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (0.17.3) Requirement already satisfied: python-dateutil>=2.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jupyter-client->ipykernel>=4.5.1->ipywidgets) (2.8.1) Requirement already satisfied: bleach in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (3.3.0) Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.3) Requirement already satisfied: jupyterlab-pygments in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.1.2) Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.4.3) Requirement already satisfied: testpath in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.4.4) Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.3) Requirement already satisfied: defusedxml in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.7.1) Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.8.4) Requirement already satisfied: cffi>=1.0.0 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.14.3) Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.1.1) Requirement already satisfied: webencodings in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (0.5.1) Requirement already satisfied: packaging in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (20.9) Requirement already satisfied: async-generator in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.10) Requirement already satisfied: nest-asyncio in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (1.5.1) Requirement already satisfied: pycparser in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from cffi>=1.0.0->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.20) Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from packaging->bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets) (2.4.7) Requirement already satisfied: pandas in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (1.2.3) Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from pandas) (2.8.1) Requirement already satisfied: pytz>=2017.3 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from pandas) (2021.1) Requirement already satisfied: numpy>=1.16.5 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from pandas) (1.19.2) Requirement already satisfied: six>=1.5 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0) Requirement already satisfied: requests in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (2.24.0) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from requests) (1.25.11) Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from requests) (3.0.4) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from requests) (2020.12.5) Requirement already satisfied: idna<3,>=2.5 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from requests) (2.10) Requirement already satisfied: plotly in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (4.14.3) Requirement already satisfied: retrying>=1.3.3 in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from plotly) (1.3.3) Requirement already satisfied: six in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (from plotly) (1.15.0) Requirement already satisfied: numpy in /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages (1.19.2)
import requests
import random
import pandas as pd
from IPython.display import Image, display, HTML
import ipywidgets as widgets
pd.set_option('display.max_colwidth', None)
pd.options.display.max_columns = None
df = pd.read_csv("https://dhmuse.netlify.app/data/cstmc-CSV-en.csv")
df
--------------------------------------------------------------------------- gaierror Traceback (most recent call last) /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1349 try: -> 1350 h.request(req.get_method(), req.selector, req.data, headers, 1351 encode_chunked=req.has_header('Transfer-encoding')) /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in request(self, method, url, body, headers, encode_chunked) 1254 """Send a complete request to the server.""" -> 1255 self._send_request(method, url, body, headers, encode_chunked) 1256 /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in _send_request(self, method, url, body, headers, encode_chunked) 1300 body = _encode(body, 'body') -> 1301 self.endheaders(body, encode_chunked=encode_chunked) 1302 /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in endheaders(self, message_body, encode_chunked) 1249 raise CannotSendHeader() -> 1250 self._send_output(message_body, encode_chunked=encode_chunked) 1251 /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in _send_output(self, message_body, encode_chunked) 1009 del self._buffer[:] -> 1010 self.send(msg) 1011 /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in send(self, data) 949 if self.auto_open: --> 950 self.connect() 951 else: /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in connect(self) 1416 -> 1417 super().connect() 1418 /usr/local/Caskroom/miniconda/base/lib/python3.8/http/client.py in connect(self) 920 """Connect to the host and port specified in __init__.""" --> 921 self.sock = self._create_connection( 922 (self.host,self.port), self.timeout, self.source_address) /usr/local/Caskroom/miniconda/base/lib/python3.8/socket.py in create_connection(address, timeout, source_address) 786 err = None --> 787 for res in getaddrinfo(host, port, 0, SOCK_STREAM): 788 af, socktype, proto, canonname, sa = res /usr/local/Caskroom/miniconda/base/lib/python3.8/socket.py in getaddrinfo(host, port, family, type, proto, flags) 917 addrlist = [] --> 918 for res in _socket.getaddrinfo(host, port, family, type, proto, flags): 919 af, socktype, proto, canonname, sa = res gaierror: [Errno 8] nodename nor servname provided, or not known During handling of the above exception, another exception occurred: URLError Traceback (most recent call last) <ipython-input-3-781a03205ae3> in <module> ----> 1 df = pd.read_csv("https://dhmuse.netlify.app/data/cstmc-CSV-en.csv") 2 df /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options) 608 kwds.update(kwds_defaults) 609 --> 610 return _read(filepath_or_buffer, kwds) 611 612 /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds) 460 461 # Create the parser. --> 462 parser = TextFileReader(filepath_or_buffer, **kwds) 463 464 if chunksize or iterator: /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds) 817 self.options["has_index_names"] = kwds["has_index_names"] 818 --> 819 self._engine = self._make_engine(self.engine) 820 821 def close(self): /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in _make_engine(self, engine) 1048 ) 1049 # error: Too many arguments for "ParserBase" -> 1050 return mapping[engine](self.f, **self.options) # type: ignore[call-arg] 1051 1052 def _failover_to_python(self): /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds) 1865 1866 # open handles -> 1867 self._open_handles(src, kwds) 1868 assert self.handles is not None 1869 for key in ("storage_options", "encoding", "memory_map", "compression"): /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/parsers.py in _open_handles(self, src, kwds) 1360 Let the readers open IOHanldes after they are done with their potential raises. 1361 """ -> 1362 self.handles = get_handle( 1363 src, 1364 "r", /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/common.py in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options) 556 557 # open URLs --> 558 ioargs = _get_filepath_or_buffer( 559 path_or_buf, 560 encoding=encoding, /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/common.py in _get_filepath_or_buffer(filepath_or_buffer, encoding, compression, mode, storage_options) 287 "storage_options passed with file object or non-fsspec file path" 288 ) --> 289 req = urlopen(filepath_or_buffer) 290 content_encoding = req.headers.get("Content-Encoding", None) 291 if content_encoding == "gzip": /usr/local/Caskroom/miniconda/base/lib/python3.8/site-packages/pandas/io/common.py in urlopen(*args, **kwargs) 193 import urllib.request 194 --> 195 return urllib.request.urlopen(*args, **kwargs) 196 197 /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context) 220 else: 221 opener = _opener --> 222 return opener.open(url, data, timeout) 223 224 def install_opener(opener): /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in open(self, fullurl, data, timeout) 523 524 sys.audit('urllib.Request', req.full_url, req.data, req.headers, req.get_method()) --> 525 response = self._open(req, data) 526 527 # post-process response /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in _open(self, req, data) 540 541 protocol = req.type --> 542 result = self._call_chain(self.handle_open, protocol, protocol + 543 '_open', req) 544 if result: /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args) 500 for handler in handlers: 501 func = getattr(handler, meth_name) --> 502 result = func(*args) 503 if result is not None: 504 return result /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in https_open(self, req) 1391 1392 def https_open(self, req): -> 1393 return self.do_open(http.client.HTTPSConnection, req, 1394 context=self._context, check_hostname=self._check_hostname) 1395 /usr/local/Caskroom/miniconda/base/lib/python3.8/urllib/request.py in do_open(self, http_class, req, **http_conn_args) 1351 encode_chunked=req.has_header('Transfer-encoding')) 1352 except OSError as err: # timeout error -> 1353 raise URLError(err) 1354 r = h.getresponse() 1355 except: URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>
# remove any artifacts that do not have images
df = df[df['image'].notna()]
df
def display_random(b):
out.clear_output()
# Randomly select a record from the randomly sorted data
randomArtifact = df.sample()
# Display the record
artiNum = randomArtifact.iloc[0]['artifactNumber']
imgURL = randomArtifact.iloc[0]['image']
with out:
# display(HTML(f'<h3>{record["displayTitle"]}</h3>'))
# display(Image(url=record['media'][0]['small']['uri']))
# display(HTML(f'<a href="https://collections.museumsvictoria.com.au/{record["id"]}">More info...</a>'))
display(HTML(f'<a href="https://ingeniumcanada.org/ingenium/collection-research/collection-item.php?id={artiNum}"> The thing </a>'))
# displays image
display(Image(requests.get(imgURL).content))
# Create a button to launch the randomness
go = widgets.Button(description='Randomise!')
out = widgets.Output()
go.on_click(display_random)
display(go)
display(out)
# grouping group1
group1 = df['group1'].value_counts()
group1df = group1.to_frame()
group1df = group1df.reset_index()
# calculating percentage of each group
group1per = df['group1'].value_counts(normalize=True) * 100
group1perdf = group1per.to_frame()
group1perdf = group1perdf.reset_index()
groupdf = pd.merge(group1df, group1perdf, how='outer', on='index', )
groupdf
index | group1_x | group1_y | |
---|---|---|---|
0 | Aviation | 10314 | 17.252396 |
1 | Communications | 6230 | 10.421023 |
2 | Industrial Technology | 4642 | 7.764749 |
3 | Photography | 4550 | 7.610859 |
4 | Printing | 3938 | 6.587157 |
5 | Medical Technology | 3893 | 6.511885 |
6 | Agriculture | 3180 | 5.319238 |
7 | Domestic Technology | 2528 | 4.228627 |
8 | Vacuum Tubes | 2074 | 3.469214 |
9 | Energy-electric | 2015 | 3.370523 |
10 | Non-motorized Ground Transportation | 1757 | 2.938963 |
11 | Physics | 1734 | 2.900490 |
12 | Lighting Technology | 1499 | 2.507402 |
13 | Railway Transportation | 1383 | 2.313367 |
14 | Computing Technology | 1153 | 1.928642 |
15 | Motorized Ground Transportation | 1103 | 1.845006 |
16 | Forestry | 1018 | 1.702825 |
17 | Marine Transportation | 964 | 1.612499 |
18 | Exploration and Survey | 816 | 1.364937 |
19 | Meteorology | 805 | 1.346537 |
20 | Chemistry | 770 | 1.287992 |
21 | Mathematics | 685 | 1.145811 |
22 | Space Technology | 625 | 1.045448 |
23 | Metrology | 574 | 0.960139 |
24 | Mining and Metallurgy | 420 | 0.702541 |
25 | Horology | 317 | 0.530251 |
26 | Astronomy | 313 | 0.523560 |
27 | Bookbinding | 277 | 0.463342 |
28 | Fire Fighting | 179 | 0.299416 |
29 | Fisheries | 27 | 0.045163 |
import plotly.graph_objects as go
import plotly.express as px
fig = px.bar(groupdf, y='group1_x', x='index', text='group1_y', labels={
"group1_x": "# of Occurences",
"index": "Group",
"group1_y": "Percent"
}, color='group1_y',
title="Artifacts Arranged by Group")
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
fig.update_layout(uniformtext_minsize=8, uniformtext_mode='hide', xaxis_tickangle=45)
fig.update_layout(
autosize=False,
width=950,
height=800,)
fig
# grouping category1
category1 = df['category1'].value_counts()
category1df = category1.to_frame()
category1df = category1df.reset_index()
# calculating percentage of each group
category1per = df['category1'].value_counts(normalize=True) * 100
category1perdf = category1per.to_frame()
category1perdf = category1perdf.reset_index()
categorydf = pd.merge(category1df, category1perdf, how='outer', on='index', )
categorydf.columns = ['Category', 'Count', 'Percentage']
categorydf
Category | Count | Percentage | |
---|---|---|---|
0 | Commemorative | 3666 | 6.145851 |
1 | Tools & equipment-trades | 2320 | 3.889355 |
2 | Printed specimens | 2156 | 3.614417 |
3 | Miscellaneous | 2121 | 3.555742 |
4 | Clothing | 1840 | 3.084661 |
5 | Archives | 1834 | 3.074602 |
6 | Radio | 1729 | 2.898575 |
7 | Cycles & cycling | 1293 | 2.167645 |
8 | Instruments | 1275 | 2.137469 |
9 | Still cameras | 1213 | 2.033529 |
10 | Food processing | 1201 | 2.013412 |
11 | Research | 1154 | 1.934619 |
12 | Sound | 1144 | 1.917854 |
13 | Receiving | 1129 | 1.892707 |
14 | Lamp bulbs | 1040 | 1.743504 |
15 | Models | 996 | 1.669740 |
16 | Tools-Hand | 936 | 1.569153 |
17 | Services | 911 | 1.527242 |
18 | Image carriers | 874 | 1.465214 |
19 | Navigation instruments & equipment | 856 | 1.435038 |
20 | Telephony | 855 | 1.433361 |
21 | Medical equipment | 796 | 1.334451 |
22 | Television | 769 | 1.289187 |
23 | Still camera accessories | 759 | 1.272422 |
24 | Still images | 718 | 1.203688 |
25 | Telegraphy | 708 | 1.186924 |
26 | User site | 669 | 1.121542 |
27 | Dairying | 652 | 1.093043 |
28 | Light & electromagnetic radiation | 596 | 0.999162 |
29 | Measurement | 568 | 0.952221 |
30 | Digital peripheral devices | 542 | 0.908634 |
31 | Harvesting | 483 | 0.809723 |
32 | Industrial equipment | 478 | 0.801341 |
33 | Dentistry | 478 | 0.801341 |
34 | Motive power | 470 | 0.787930 |
35 | Laboratory equipment | 468 | 0.784577 |
36 | Insulators | 456 | 0.764459 |
37 | Still processing | 426 | 0.714166 |
38 | Aircraft instruments | 420 | 0.704107 |
39 | Power sources | 399 | 0.668902 |
40 | Cine images | 383 | 0.642079 |
41 | Laundry | 380 | 0.637049 |
42 | Aircraft parts | 378 | 0.633697 |
43 | Communications | 353 | 0.591785 |
44 | Drawing & measuring instruments | 353 | 0.591785 |
45 | Still camera parts | 329 | 0.551551 |
46 | Digital computing devices | 327 | 0.548198 |
47 | Servicing | 326 | 0.546521 |
48 | Typesetting | 307 | 0.514669 |
49 | Cine cameras | 302 | 0.506287 |
50 | Lighting devices | 300 | 0.502934 |
51 | Operations | 300 | 0.502934 |
52 | Personal gear | 278 | 0.466052 |
53 | Animal powered | 262 | 0.439229 |
54 | Cultivation | 261 | 0.437552 |
55 | Music | 256 | 0.429170 |
56 | Transmitting | 244 | 0.409053 |
57 | Test-measurement equipment | 231 | 0.387259 |
58 | Automotive parts | 228 | 0.382230 |
59 | Service-test equipment | 228 | 0.382230 |
60 | Geophysics | 226 | 0.378877 |
61 | Crop handling | 223 | 0.373847 |
62 | Calculating devices | 223 | 0.373847 |
63 | Conversion | 222 | 0.372171 |
64 | Radar | 221 | 0.370495 |
65 | Mass/weight | 216 | 0.362112 |
66 | Clocks | 215 | 0.360436 |
67 | Textile working | 213 | 0.357083 |
68 | Observation equipment | 213 | 0.357083 |
69 | Length | 212 | 0.355407 |
70 | Automotive engineering | 210 | 0.352054 |
71 | Chemicals & medications | 209 | 0.350377 |
72 | Demonstration & teaching equipment | 208 | 0.348701 |
73 | Atmospheric temperature measurement | 204 | 0.341995 |
74 | Generation | 202 | 0.338642 |
75 | Photogrammetry | 196 | 0.328583 |
76 | Radiology | 190 | 0.318525 |
77 | Toilet article | 186 | 0.311819 |
78 | Aircraft | 182 | 0.305113 |
79 | Merchandising | 182 | 0.305113 |
80 | Electricity & electronics | 180 | 0.301760 |
81 | Manned spacecraft | 175 | 0.293378 |
82 | Tools-Machine | 174 | 0.291702 |
83 | Cottage industries | 171 | 0.286672 |
84 | Fire fighting | 170 | 0.284996 |
85 | Atomic & nuclear | 169 | 0.283319 |
86 | Electronics | 158 | 0.264878 |
87 | Environment control | 154 | 0.258173 |
88 | Animal husbandry | 149 | 0.249790 |
89 | Cine camera accessories | 147 | 0.246438 |
90 | Image transfer | 145 | 0.243085 |
91 | Barns & buildings | 143 | 0.239732 |
92 | Patient care & aids for the disabled | 142 | 0.238055 |
93 | Crop processing | 141 | 0.236379 |
94 | Development & maintenance equipment | 140 | 0.234702 |
95 | Space science | 137 | 0.229673 |
96 | Measurement-angles | 133 | 0.222967 |
97 | Measurement-distance | 127 | 0.212909 |
98 | Housekeeping | 121 | 0.202850 |
99 | Tooling | 119 | 0.199497 |
100 | Airport operations | 117 | 0.196144 |
101 | Vacuum tube accessories | 112 | 0.187762 |
102 | Make-up | 111 | 0.186085 |
103 | Electricity | 105 | 0.176027 |
104 | Automotive vehicles | 104 | 0.174350 |
105 | Vessel parts | 102 | 0.170997 |
106 | Poultry equipment | 102 | 0.170997 |
107 | Apiculture | 101 | 0.169321 |
108 | Accessories | 100 | 0.167645 |
109 | Telephone | 99 | 0.165968 |
110 | Precipitation amount rate & duration measurement | 94 | 0.157586 |
111 | Landmarks | 90 | 0.150880 |
112 | Upper air pressure temperature & humidity measurement | 89 | 0.149204 |
113 | Cine camera parts | 88 | 0.147527 |
114 | Measurement-direction | 87 | 0.145851 |
115 | Survey equipment | 86 | 0.144174 |
116 | Atmospheric pressure measurement | 86 | 0.144174 |
117 | Surface wind speed & direction measurement | 82 | 0.137469 |
118 | Material storage | 81 | 0.135792 |
119 | Transportation | 81 | 0.135792 |
120 | Studio & set equipment | 80 | 0.134116 |
121 | Aviation armament | 79 | 0.132439 |
122 | Maintenance equipment | 76 | 0.127410 |
123 | Land improvement | 76 | 0.127410 |
124 | Volume | 74 | 0.124057 |
125 | Horticulture | 74 | 0.124057 |
126 | Motorcycle vehicles | 72 | 0.120704 |
127 | Lighting device parts | 72 | 0.120704 |
128 | Mineral exploration | 67 | 0.112322 |
129 | Platemaking | 66 | 0.110645 |
130 | Regulation & transformation | 65 | 0.108969 |
131 | Vessels | 63 | 0.105616 |
132 | Lumbering | 61 | 0.102263 |
133 | Watches | 60 | 0.100587 |
134 | Analog computing devices | 60 | 0.100587 |
135 | Duplication | 60 | 0.100587 |
136 | Silviculture | 59 | 0.098910 |
137 | Pharmacology | 58 | 0.097234 |
138 | Transmission & distribution | 50 | 0.083822 |
139 | Boat & shipbuilding tools & equipment | 48 | 0.080469 |
140 | Tool maintenance | 48 | 0.080469 |
141 | Public transportation | 45 | 0.075440 |
142 | Photoemissive | 40 | 0.067058 |
143 | Measurement-position | 39 | 0.065381 |
144 | Crop protection | 39 | 0.065381 |
145 | Lettering | 39 | 0.065381 |
146 | Office equipment | 39 | 0.065381 |
147 | Human powered | 37 | 0.062028 |
148 | Clothing & personal safety apparatus | 37 | 0.062028 |
149 | Child care | 35 | 0.058676 |
150 | Thermal & thermal conductivity | 35 | 0.058676 |
151 | Mineral extraction | 34 | 0.056999 |
152 | Atmospheric humidity measurement | 33 | 0.055323 |
153 | Food service | 33 | 0.055323 |
154 | Hydrostatics & fluid mechanics | 32 | 0.053646 |
155 | Tool storage | 32 | 0.053646 |
156 | Expedition artifacts | 32 | 0.053646 |
157 | Lock up/imposition | 31 | 0.051970 |
158 | Petrochemical extraction | 31 | 0.051970 |
159 | Naval architecture | 31 | 0.051970 |
160 | Advertising | 30 | 0.050293 |
161 | Upper wind speed & direction measurement | 29 | 0.048617 |
162 | Accessory equipment | 28 | 0.046940 |
163 | Laboratory chemicals | 28 | 0.046940 |
164 | Recreational vehicles | 28 | 0.046940 |
165 | Specialised | 27 | 0.045264 |
166 | Rolling stock | 26 | 0.043588 |
167 | Exterior work | 26 | 0.043588 |
168 | Sunshine intensity & duration measurement | 26 | 0.043588 |
169 | Typecasting | 26 | 0.043588 |
170 | Long range forecasting equipment | 26 | 0.043588 |
171 | Cycles &cycling | 25 | 0.041911 |
172 | Pneumatics & air pressure | 23 | 0.038558 |
173 | Experimental | 23 | 0.038558 |
174 | Tools & equipment | 23 | 0.038558 |
175 | Diving | 22 | 0.036882 |
176 | Temperature | 22 | 0.036882 |
177 | Test equipment | 21 | 0.035205 |
178 | Ruling | 21 | 0.035205 |
179 | Alarms | 20 | 0.033529 |
180 | Fire engines | 20 | 0.033529 |
181 | Precision tools | 20 | 0.033529 |
182 | Inking | 18 | 0.030176 |
183 | Industrial | 18 | 0.030176 |
184 | Acoustics | 18 | 0.030176 |
185 | Petrochemical exploration | 18 | 0.030176 |
186 | Motorcycle parts | 18 | 0.030176 |
187 | Motorcycle engineering | 18 | 0.030176 |
188 | Lifting & flying apparatus | 18 | 0.030176 |
189 | Extinguishers | 17 | 0.028500 |
190 | Cutting | 17 | 0.028500 |
191 | Civil engineering | 16 | 0.026823 |
192 | Plumbing | 15 | 0.025147 |
193 | Miscellaneous equipment | 15 | 0.025147 |
194 | Observing aids | 15 | 0.025147 |
195 | Lighting accessories | 15 | 0.025147 |
196 | Sewing | 14 | 0.023470 |
197 | Earth observation | 14 | 0.023470 |
198 | Perforating | 13 | 0.021794 |
199 | Vacuum tube parts | 13 | 0.021794 |
200 | Evaporation amount measurement | 13 | 0.021794 |
201 | Finishing general | 13 | 0.021794 |
202 | Electromechanical & mechanical peripheral devices | 13 | 0.021794 |
203 | Cloud height & motion measurement | 12 | 0.020117 |
204 | Cine processing | 12 | 0.020117 |
205 | Combination instruments | 12 | 0.020117 |
206 | Casing-in | 10 | 0.016764 |
207 | Chronometers | 9 | 0.015088 |
208 | Timing devices | 9 | 0.015088 |
209 | Ephemera | 9 | 0.015088 |
210 | Biochemistry | 8 | 0.013412 |
211 | Mechanics | 7 | 0.011735 |
212 | Sand glasses | 7 | 0.011735 |
213 | Magnetism | 7 | 0.011735 |
214 | Cine miscellaneous | 6 | 0.010059 |
215 | Visual | 6 | 0.010059 |
216 | Military | 6 | 0.010059 |
217 | Electromechanical & mechanical computing devices | 6 | 0.010059 |
218 | Furniture | 6 | 0.010059 |
219 | Atomic &nuclear | 5 | 0.008382 |
220 | Folding | 5 | 0.008382 |
221 | Rounding & backing | 5 | 0.008382 |
222 | Veterinary medicine | 5 | 0.008382 |
223 | Calendars | 5 | 0.008382 |
224 | Specific gravity/density | 5 | 0.008382 |
225 | Marbling-edging | 5 | 0.008382 |
226 | Computer | 5 | 0.008382 |
227 | Padding & tableting | 4 | 0.006706 |
228 | Safety equipment | 4 | 0.006706 |
229 | Sundials | 4 | 0.006706 |
230 | Stitching | 4 | 0.006706 |
231 | Hydrography/oceanography | 4 | 0.006706 |
232 | Regulation &transformation | 3 | 0.005029 |
233 | Cycles& cycling | 3 | 0.005029 |
234 | Candles | 3 | 0.005029 |
235 | Lamps-lanterns | 3 | 0.005029 |
236 | Traffic control | 3 | 0.005029 |
237 | Printing vehicles | 3 | 0.005029 |
238 | Early developments | 3 | 0.005029 |
239 | Electricity &electronics | 2 | 0.003353 |
240 | Adhesive binding | 2 | 0.003353 |
241 | Instrument testing equipment | 2 | 0.003353 |
242 | Industrial vehicles | 2 | 0.003353 |
243 | Hunting & trapping | 2 | 0.003353 |
244 | Etching/engraving | 2 | 0.003353 |
245 | Tools &equipment-trades | 2 | 0.003353 |
246 | Chemicals &medications | 2 | 0.003353 |
247 | Drying | 2 | 0.003353 |
248 | Casemaking | 2 | 0.003353 |
249 | Paging & numbering | 2 | 0.003353 |
250 | Surface wind speed &direction measurement | 1 | 0.001676 |
251 | Hovercraft vehicles | 1 | 0.001676 |
252 | Analog peripheral devices | 1 | 0.001676 |
253 | Memorabilia | 1 | 0.001676 |
254 | Crop development | 1 | 0.001676 |
255 | Upper wind speed &direction measurement | 1 | 0.001676 |
256 | Hovercraft parts | 1 | 0.001676 |
257 | Loose-leaf binding | 1 | 0.001676 |
258 | Precipitation amount rate &duration measurement | 1 | 0.001676 |
259 | Power devices | 1 | 0.001676 |
260 | Feeding | 1 | 0.001676 |
261 | Packaging | 1 | 0.001676 |
262 | Light &electromagnetic radiation | 1 | 0.001676 |
263 | Bundling | 1 | 0.001676 |
264 | Moving equipment | 1 | 0.001676 |
import plotly.express as px
import numpy as np
# categorydf["world"] = "world" # in order to have a single root node
fig = px.treemap(categorydf, path=['Category'], values='Count',
color='Percentage', hover_data=['Percentage'],
color_continuous_scale='RdBu',
color_continuous_midpoint=np.average(categorydf['Percentage'], weights=categorydf['Percentage']))
fig.data[0].hovertemplate = '%{label}<br> Count: %{value}'
fig.update_layout(
autosize=False,
width=900,
height=800,)
fig