Professional Documents
Culture Documents
Database
Serious MongoDB Talk
This Talk
Wheres the data from?
Wheres the data from?
How Much Is There?
{
Station Identifier "st" : "u725053",
(NYC Central Park)
"ts" : ISODate("2013-06-03T22:51:00Z"),
"airTemperature" : {
"value" : 21.1,
"quality" : "5"
},
"atmosphericPressure" : {
"value" : 1009.7,
"quality" : "5"
}
}
{!
ts: ISODate("1991-01-01T00:00:00Z"),!
position: {!
type: "Point",!
coordinates: [!
-94.6,!
39.117!
]!
},! GeoJSON
airTemperature: {!
value: 27,!
quality: "1"!
}!
}!
Visualization
Visualization Pipeline
Python
MongoDB PyMongo NumPy SciPy Matplotlib
dicts
{!
ts: ISODate("1991-01-01T00:00:00Z"),!
position: {!
type: "Point",!
coordinates: [!
-94.6,!
39.117!
]!
},!
airTemperature: {!
value: 45,!
quality: "1"!
}!
}!
import numpy!
import pymongo!
!
data = []!
db = pymongo.MongoClient().my_database!
!
for doc in db.collection.find(query):!
data.append((!
doc['position']['coordinates'][0],!
doc['position']['coordinates'][1],!
doc['airTemperature']['value']))!
!
arrays = numpy.array(data)!
# NumPy column access syntax.!
lons = arrays[:, 0]!
lats = arrays[:, 1]!
temps = arrays[:, 2]!
from scipy import griddata!
from matplotlib import pyplot!
!
xs = numpy.linspace(-180, 180, 361)!
ys = numpy.linspace(-90, 90, 181)!
zs = griddata(lats, lons, temps,!
(xs, ys),!
method='linear')!
Magic!!
!
pyplot.contour(xs, ys, zs)!
Also magic!!
from matplotlib import pyplot!
!
xs = numpy.linspace(-180, 180, 361)!
ys = numpy.linspace(-90, 90, 181)!
zs = griddata(lats, lons, temps,!
(xs, ys),!
method='linear')!
!
pyplot.contour(xs, ys, zs)!
Triangulation
Triangulation
Triangulation
What temperature?
Barycentric Interpolation
48
54
51.1
Weighted Average
What temperature? 53
Interpolation
51.1
Interpolation
Interpolation
Contours
Contours
import numpy! Not terrifically fast
import pymongo!
!
data = []!
db = pymongo.MongoClient().my_database!
!
for doc in db.collection.find(query):!
data.append((!
doc['position']['coordinates'][0],!
doc['position']['coordinates'][1],!
doc['airTemperature']['value']))!
!
arrays = numpy.array(data)!
MongoDB-to-NumPy Performance
Python
MongoDB PyMongo NumPy Matplotlib
dicts
Recent features:
Easy installation
Nested field access
Aggregation
Python 3
Monary
Future:
Insert, update, remove
SSL and authentication mechanisms
Improved API and logging
parallelCollectionScan
!
MongoDB
Python
Monary
NumPy
SciPy
Matplotlib
Thanks
Thank you
#MongoDBWorld
Presents
1. http://bit.ly/century-links