The Internet of Production Alliance

Preliminary data report for the OKW Map of Machines¶

Author: Antonio de Jesus Anaya Hernandez, DevOps eng. for the IoPA.

Author: The internet of Production Alliance, 2023.

Data was collected by "Fab Foundation", location: https://fablabs.io/

The Open Know Where (OKW) Standard is part of the Internet of Production Alliance and its members.

License: CC BY SA

CC BY SA

In [1]:
import pandas as pd
In [2]:
from IPython.display import display, HTML
In [3]:
output_filename = 'machines_march'
In [ ]:
machines = pd.read_excel(output_filename + '.xlsx')
In [5]:
machines = machines.drop(columns=['Column1'])
machines['name'] = machines['name'].str.lower()
machines['brand'] = machines['brand'].str.lower()
In [6]:
machines.groupby('class_1').sum(numeric_only=True).sort_values('machine_count').plot(kind='barh', rot=0, width=0.2, figsize=(15,12))
Out[6]:
<AxesSubplot:ylabel='class_1'>
In [7]:
# machines.sort_values('machine_count').set_index('name').groupby('class_1', sort=False).plot(kind='barh', rot=0, width=0.5, figsize=(15,15))
In [8]:
machines.sort_values('machine_count').groupby('class_1', sort=True).boxplot(column='machine_count', figsize=(25,5), subplots=False)
Out[8]:
<AxesSubplot:>
In [9]:
display(HTML(machines.head(20).to_html(notebook=True)))
name brand labs tags machine_count tagged classified class_1 edited
0 ultimaker 2 ultimaker ['thebeachlab', 'fablabiedmadrid', 'larefabriq... ['facens'] 69 True True three_d_printer True
1 kinect v1 microsoft ['fablabbcn', 'fablabnapoli', 'defaralsalabo',... ['3d_scanning'] 66 True True scanner True
2 prusa i3 reprap ['fablabiedmadrid', 'fablabmalaga', 'fablabegy... [] 62 False True three_d_printer False
3 gx-24 roland ['fablabbcn', 'thebeachlab', 'fablabdhahran', ... ['vinyl_cutting'] 56 True True vinyl_cutting False
4 shopbot gantry shopbot tools, inc ['fablabuni', 'fablabtrivandrum', 'fablabcochi... [] 52 False True cnc_milling False
5 sense 3d scanner 3d systems, inc ['fablabatyrau', 'musefablab', 'fablabjordan',... ['3d_scanner'] 47 True True scanner True
6 mdx-40a roland ['fablabbassano', 'fablabxtreneold', 'atolye',... ['precision_milling'] 46 True True precision_milling False
7 srm-20 monofab roland ['fablabiedmadrid', 'fablabjordan', 'riidl', '... ['precision_milling'] 46 True True precision_milling False
8 ultimaker 2+ ultimaker ['fablabatyrau', 'FabLabRwanda', 'FabLabAntwer... ['3d_printing'] 45 True True three_d_printer False
9 ultimaker 3 ultimaker ['fablabjordan', 'FabLabAntwerpen', 'berytechf... [] 36 False True three_d_printer False
10 cameo® silhouette ['navlab', 'fabxperiencecafe', 'minifablabutre... ['vinyl_cutting'] 36 True True vinyl_cutting False
11 mdx-20 roland ['fablabbcn', 'thebeachlab', 'fablabdhahran', ... ['precision_milling'] 35 True True precision_milling False
12 cnc mill­ing mach­ine cnc ['tinkerinq', 'IACTFabLab', 'fablabmvd', 'fabl... ['cnc_milling_machine'] 35 True True cnc_milling False
13 form2 formlabs ['fablabsion', 'fablabtehran', 'riidl', 'fabla... ['sla', '3dprinter', 'formlabs'] 33 True True three_d_printer False
14 camm-1 gs-24 roland ['fablabiedmadrid', 'fablabjordan', 'Fablabcas... ['plotter', 'vinyl', 'cutter'] 32 True True vinyl_cutting False
15 makerbot z18 makerbot industries ['musefablab', 'fablabzurich', 'minifablabutre... [] 30 False True three_d_printer False
16 prusa mendel 1 reprap ['izolab', 'aachen', 'fablabmaastricht', 'defa... ['3d_printing'] 27 True True three_d_printer False
17 cnc routing homemade cnc router ['fablabbergamo', 'fablabzoi', 'FabLabBEN', 'z... [] 25 False True cnc_milling False
18 ender-3 creality ['sedicupct', 'fablabulcicam', 'stem4allmakers... ['3d_printer'] 25 True True three_d_printer False
19 ultimaker 3 extended ultimaker ['berytechfablab', 'fablabupsaclay', 'fablabli... ['ultimaker_3'] 22 True True three_d_printer True
In [10]:
locations = pd.read_json('https://api.fablabs.io/0/labs.json')
In [11]:
locations = locations.drop(columns=['id', 'kind_name', 'parent_id', 'blurb', 'description', 'avatar_url', 'header_url', 'capabilities', 'activity_status', 'links', 'address_notes', 'email', 'phone', 'address_1', 'address_2', 'postal_code'])
In [12]:
locations.rename(columns = {'name':'lab'}, inplace = True)
In [13]:
locations.head(20)
Out[13]:
lab slug city county country_code latitude longitude
0 PiNG ping Nantes Pays de la Loire FR 47.218371 -1.553621
1 Al Jazri Lab aljazrilab Sharjah AE NaN NaN
2 FabLab INSA Strasbourg fablabinsastrasbourg Strasbourg Alsace FR 48.583148 7.747882
3 FabLab Zagreb fablabhr Zagreb Zagreb HR 45.812096 15.965438
4 Exchange Exchange La Porte IN US NaN NaN
5 Fab Lab Irbid fablabirbid Irbid Jordan JO 32.488820 35.976346
6 Fab Lab Lleida fablablleida Lérida Lleida ES 41.623023 0.625864
7 FABLAB KERALA - Trivandrum fablabtrivandrum Trivandrum KERALA IN 8.557167 76.880297
8 Fab Lab Afghanistan fablabafghanistan Jalalabad Nangarhar AF 34.434469 70.448505
9 Drone Lab Brasil dronelabbrasil São Paulo São Paulo BR -23.542017 -46.635780
10 Fab Lab Carnegie Science Center fablabcarnegiesciencecenter Pittsburgh Pennsylvania US 40.446191 -80.018821
11 Fab Lab Casa Firjan fablabcasafirjan Rio de Janeiro Rio de Janeiro BR -22.949991 -43.188624
12 FAB LAB HONG KONG, CMASS iSPACE cmassispace Hong Kong HK NaN NaN
13 Ongola Fablab ongolafablab Yaoundé CENTRE CM 3.857760 11.507091
14 Fab Lab IDEX Huando IDEXHuando Huaral Lima PE NaN NaN
15 Le Nautilus / MicroFolie lenautilus Boulogne-sur-Mer FR NaN NaN
16 Yansokilab yansokilab Douala littoral CM NaN NaN
17 Fab Lab Strandir FabLabStrandir Hólmavík Strandabyggð IS NaN NaN
18 FabLab du Dôme à Caen fablabcaen Caen Normandie FR 49.181016 -0.347539
19 Trinity-Area High School Fab Lab trinityareahighschoolfablab Washington Pennsylvania US 40.164412 -80.248434
In [14]:
# for index, loc in locations.iterrows():
#     print(loc['slug'])
In [15]:
machines['labs'] = machines.labs.apply(lambda x: x.strip('][').split(', '))
In [16]:
machines.shape
Out[16]:
(440, 9)
In [17]:
machines = machines.explode('labs')
In [18]:
machines.rename(columns = {'labs':'slug'}, inplace = True)
In [19]:
machines['slug'] = machines['slug'].apply(lambda x: x.replace("'", ""))
In [20]:
display(HTML(machines.head(20).to_html(notebook=True)))
name brand slug tags machine_count tagged classified class_1 edited
0 ultimaker 2 ultimaker thebeachlab ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabiedmadrid ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker larefabrique ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabuni ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabtrivandrum ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabcochin ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabkamplintfort ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabjordan ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker atolye ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabzoi ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker isvor ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabrichmondcalifornia ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabfacens ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabvilnius ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker zbis ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker labaixbidouille ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabmons ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker lesfabriquesduponant ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabdu127degres ['facens'] 69 True True three_d_printer True
0 ultimaker 2 ultimaker fablabmadatech ['facens'] 69 True True three_d_printer True
In [21]:
geo_machines = pd.merge(machines, locations, on='slug')
In [22]:
geo_machines.shape
Out[22]:
(2248, 15)
In [23]:
geo_machines = geo_machines.drop(columns=['machine_count', 'tags', 'edited', 'classified', 'tagged'])
In [24]:
display(HTML(geo_machines.head(20).to_html(notebook=True)))
name brand slug class_1 lab city county country_code latitude longitude
0 ultimaker 2 ultimaker thebeachlab three_d_printer The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
1 kinect v1 microsoft thebeachlab scanner The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
2 gx-24 roland thebeachlab vinyl_cutting The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
3 mdx-20 roland thebeachlab precision_milling The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
4 imodela roland thebeachlab precision_milling The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
5 othermill other machine co thebeachlab precision_milling The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
6 5th gen 40w/45w laser full spectrum laser thebeachlab laser The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
7 fireball v90 probotix thebeachlab cnc_milling The Beach Lab x Europe Sitges Barcelona ES 41.256795 1.857121
8 ultimaker 2 ultimaker fablabiedmadrid three_d_printer Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
9 prusa i3 reprap fablabiedmadrid three_d_printer Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
10 srm-20 monofab roland fablabiedmadrid precision_milling Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
11 camm-1 gs-24 roland fablabiedmadrid vinyl_cutting Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
12 speedy 100 trotec fablabiedmadrid laser Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
13 form 1+ formlabs fablabiedmadrid three_d_printer Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
14 tec cam 1000 perez camps fablabiedmadrid cnc_milling Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
15 deltawasp 3mt wasp fablabiedmadrid three_d_printer Fab Lab IED Madrid Madrid ES 40.390583 -3.729061
16 ultimaker 2 ultimaker larefabrique three_d_printer la refabrique Cannes Provence-Alpes-Cote d'Azur FR 43.570960 6.960609
17 ultimaker 2 ultimaker fablabuni three_d_printer Fab Lab UNI Lima Lima PE -12.020751 -77.051119
18 shopbot gantry shopbot tools, inc fablabuni cnc_milling Fab Lab UNI Lima Lima PE -12.020751 -77.051119
19 mdx-20 roland fablabuni precision_milling Fab Lab UNI Lima Lima PE -12.020751 -77.051119
In [25]:
geo_machines.to_csv("geomachines.csv")
In [ ]: