SlideShare a Scribd company logo
1 of 149
Download to read offline
Geospatial data analysis and visualization in Python
PyCon JP 2017
Halfdan Rump
日本語もオッケーっすよ!
What is geospatial data visualization?
I'll show you how to make maps in Python
I'll show you how to make interactive maps in Python
First we will make a simple map
In [3]: IFrame(src='html/tokyo_wards_choropleth.html', width=IFrame_width_px, height=IFram
e_heigth_px) 
Out[3]:
+
-
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
It's simple, so I'll show you the actual code
Then we'll add more detail
In [4]: IFrame(src='html/cityblock_choropleth_shinjuku­3000.html', width=IFrame_width_px, 
height=IFrame_heigth_px) 
Out[4]:
+
-
2.0 2.5 3.0 3.5 4.0 4.5 5.0
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
more complicated, so I won't show much code
Finally we'll make this
In [5]: IFrame(src='html/choropleth_with_timeslider.html', width=IFrame_width_px, height=I
Frame_heigth_px) 
Out[5]:
Sun Jan 01 2006
+
-
visualize data changes over space
visualize data changes over time
what data are we plotting?
Our team got data from Tabelog!
credit: Telegram Just Zoo it!
Let's take a look...
In [6]: data = pd.read_table('data/query_areas.txt', dtype={'zipcode': str}) 
data.reset_index(inplace=True, drop=True) 
data.sample(5) 
Out[6]:
northlatitude eastlongitude zipcode review_count total_score_ave
706187 34.586204 135.714230 6360082 24 3.46
92558 34.697354 135.501339 5300001 11 3.97
467249 35.968060 139.590300 3620042 1 3.50
40984 35.640797 139.673473 1540004 17 3.65
57418 35.457253 139.630277 2200012 60 3.11
Coordinates and a score
Just what we need to make a map :)
before we get started... I may have found a conspiracy
In [7]: data[['northlatitude', 'eastlongitude']].mean() 
Out[7]: northlatitude     35.412935 
eastlongitude    135.478591 
dtype: float64
credit: Telegram Just Zoo it!
I'll show you how to make choropleths in Python
choropleth = 階級区分図・かいきゅうくぶんず
a choropleth is a certain kind of map
plot area borders
plot with colors that re ect some statistic
choropleths are easy to interpret
choropleths are pretty :)
There are several di erent ways of plotting data on a
map
Read more here
Why do I want them to be interactive?
Because it's much more fun :)
interactive maps are a tool for discovery
In [8]: IFrame(src='html/tokyo_wards_choropleth.html', width=IFrame_width_px, height=IFram
e_heigth_px) 
Out[8]:
+
-
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
Time to code!
In [9]: IFrame(src='html/tokyo_wards_choropleth.html', width=1024, height=600) 
Out[9]:
+
-
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
collect ward boundaries
In [10]: IFrame(src='html/wards_boundaries.html', width=1024, height=600) 
Out[10]:
+
-
Leaflet | Data by OpenStreetMap, under ODbL.
where to get the boundry data
the Internet ;)
In [11]:
More on how to collect boundaries with python later...
url = 'https://raw.githubusercontent.com/dataofjapan/land/master/tokyo.geojson' 
filename = 'tokyo_wards.geojson' 
 
### Load wards geojson data, or download if not already on disk 
if not os.path.exists(filename): 
    r = requests.get(url) 
    with open(filename, 'w') as f: 
        f.write(json.dumps(json.loads(r.content.decode()))) 
let's see what we have
In [12]:
In [13]:
with open('data/tokyo_wards.geojson') as f:  
    wards = json.loads(f.read()) 
 
print('type: ', type(wards)) 
print('keys: ', wards.keys()) 
print() 
    
 pprint(wards['features'][0], max_seq_length = 10) 
type:  <class 'dict'> 
keys:  dict_keys(['crs', 'features', 'type']) 
 
{'geometry': {'coordinates': [[[139.821051, 35.815077], 
    [139.821684, 35.814887], 
    [139.822599, 35.814509], 
    [139.8229070000001, 35.81437], 
    [139.822975, 35.814339], 
    [139.822977, 35.814338], 
    [139.823188, 35.814242], 
    [139.823348, 35.81417], 
    [139.823387, 35.814152], 
    [139.823403, 35.814138], 
    ...]], 
  'type': 'Polygon'}, 
 'properties': {'area_en': 'Tokubu', 
  'area_ja': '都区部', 
  'code': 131211, 
  'ward_en': 'Adachi Ku', 
  'ward_ja': '足立区'}, 
 'type': 'Feature'} 
In [14]: !du ­h tokyo_wards.geojson 
5.8M  tokyo_wards.geojson 
In [15]: IFrame(src='html/wards_boundaries.html', width=1024, height=600) 
Out[15]:
+
-
Leaflet | Data by OpenStreetMap, under ODbL.
I wish I could e ciently handle such data...
... I wish there was something like pandas for
geospatial data, with, maybe I dunno, a geo-dataframe
or something?
In [16]: import geopandas as gpd 
wards = gpd.read_file('data/tokyo_wards.geojson') 
In [17]: wards.head() 
#wards.plot﴾figsize=﴾10,10﴿﴿; 
Out[17]:
area_en area_ja code geometry ward_en ward_ja
0
Tokubu 都区部 131211
POLYGON ((139.821051
35.815077, 139.821684
35....
Adachi Ku 足立区
1
Tokubu 都区部 131059
POLYGON ((139.760933
35.732206, 139.761002
35....
Bunkyo
Ku
文京区
2
Tokubu 都区部 131016
POLYGON ((139.770135
35.705352, 139.770172
35....
Chiyoda
Ku
千代田
区
3
Tokubu 都区部 131067
POLYGON ((139.809714
35.728135, 139.809705
35....
Taito Ku 台東区
4
Tokubu 都区部 131091
(POLYGON ((139.719199
35.641847, 139.719346
35...
Shinagawa
Ku
品川区
What's in the geometry column?
In [18]: wards.set_index('ward_ja', inplace=True) 
type(wards.loc['新宿区', 'geometry']) 
Out[18]: shapely.geometry.polygon.Polygon
In [19]: polygon = wards.loc['新宿区', 'geometry'] 
polygon 
Out[19]:
work ow with GeoDataFrame is more or less
identical to pandas.DataFrame
geopandas is a great library!
So, we can hold the boundary data in a
GeoDataFrame
How do we plot them?
In [21]: wards[wards['ward_ja'].str.contains('区')].plot( 
    figsize=(15,12), linewidth=3, edgecolor='black'); 
very fast to make, but...
we want something that runs in the browser
Introducing folium
Making a map in two lines
In [22]: import folium 
 
tokyo_center=(35.7035007,139.6524644) 
 
m = folium.Map(location=tokyo_center, zoom_start=11) 
folium.GeoJson(wards.to_json()).add_to(m) 
m.save('html/folium_boundaries.html') 
In [23]: IFrame('html/folium_boundaries.html', height=IFrame_heigth_px, width=IFrame_width_
px) 
Out[23]:
+
-
Leaflet | Data by OpenStreetMap, under ODbL.
We can use zipcodes to link restaurants to wards
In [30]: data.sample(5) 
Out[30]:
ward northlatitude eastlongitude zipcode review_count total_sco
140152 港区 35.656122 139.731141 1060032 22 3.19
105272 中央
区 35.683269 139.785155 1030013 2 3.47
97024 文京
区 35.705690 139.774493 1130034 23 3.10
37901 練馬
区 35.750053 139.634491 1790075 6 3.15
147327 港区 35.668359 139.729176 1070062 5 3.02
sanity check - where is the geographical mean?
In [31]: data[['northlatitude', 'eastlongitude']].mean() 
Out[31]: northlatitude     35.668068 
eastlongitude    139.650324 
dtype: float64
It's time to calculate statistics for each ward
In [32]: groups = data[['review_count', 'total_score_ave', 'ward']].groupby('ward') 
stats = groups.agg('mean').sort_values(by='total_score_ave', ascending=False) 
counts = groups.size() 
In [33]: stats = stats.assign(count=counts) 
stats.head(10) 
Out[33]:
review_count total_score_ave count
ward
西東京市 6.903305 2.888752 817
清瀬市 5.931624 2.867308 234
杉並区 11.742827 2.865094 4810
東村山市 7.399381 2.862864 646
国立市 8.436426 2.843436 582
港区 22.841448 2.838996 16020
日野市 6.087566 2.830088 571
中央区 25.086408 2.824059 11897
葛飾区 8.505640 2.822050 2571
文京区 15.924992 2.817478 3053
In [34]: stats.tail(10) 
Out[34]:
review_count total_score_ave count
ward
東久留米市 5.412844 2.666697 436
東大和市 5.721154 2.661891 312
多摩市 6.726415 2.621450 848
武蔵村山市 7.125000 2.618581 296
三鷹市 9.731675 2.604777 764
板橋区 6.856051 2.586006 3140
稲城市 5.235849 2.520535 318
調布市 9.902878 2.370072 1390
狛江市 5.848101 2.143608 316
新島村 2.657143 2.087429 35
Putting it all together
In [38]: from branca.colormap import linear 
 
### OrRd colormap is kind of similar to tabelog score colors 
colormap = linear.OrRd.scale( 
    stats['total_score_ave'].min(), 
    stats['total_score_ave'].max()) 
 
colors = stats['total_score_ave'].apply(colormap) 
colors.sample(5) 
Out[38]: ward 
稲城市     #f98355 
多摩市     #ef6548 
清瀬市     #a30704 
青梅市     #cf2a1b 
東大和市    #e8553b 
Name: total_score_ave, dtype: object
In [39]: m = folium.Map(location=tokyo_center, #tiles='Stamen Toner', 
                    zoom_start=11) 
 
folium.GeoJson( 
    wards.to_json(), 
    style_function=lambda feature: { 
        'fillColor': colors.loc[feature['id']], 
        'color': 'black', 
        'weight': 1, 
        'dashArray': '5, 5', 
        'fillOpacity': 0.8, 
        'highlight': True 
    } 
).add_to(m) 
 
# folium.LayerControl﴾﴿.add_to﴾m﴿ 
m.add_child(colormap) 
m.save('html/ward_choropleth_in_slides.html') 
#folium.LayerControl﴾﴿.add_to﴾m﴿ 
In [40]: IFrame(src='html/ward_choropleth_in_slides.html', height=IFrame_heigth_px, width=I
Frame_width_px) 
Out[40]:
+
-
2.3 2.4 2.5 2.7 2.8 2.9 3.0
Leaflet | Data by OpenStreetMap, under ODbL.
Now we have a toolbox!
boundaries as shapely Polygon objects in
geopandas dataframe
can plot them using folium
What's next?
wards are sort of large
the map we made is not very useful for discovery :(
Can we nd boundaries for smaller areas?
How about zipcodes?
zipcodes administrative boundaries
de ned by the post service to serve their needs
what about even smaller areas?
In general, what to do when there's no GeoJson?
so now I wanted to calculate city blocks
areas encapsulated by roads
why city blocks?
city blocks are the smallest city unit
(apart from individual buildings)
city blocks re ect the topology of a city
(they are not "just" administrative boundaries)
we can use the city roads to calculate city blocks
where can we get the road data?
from OpenStreetMap
largest open map on the planet
anybody can edit map data
all this data is free
Download OSM data through the Overpass API
Introducing osmnx
short for Open Street Map NetworkX
In [41]: import osmnx as ox 
 
ox.plot_graph(ox.graph_from_place('新宿区')); 
In [42]: shinjuku_origin = (35.6918383, 139.702996) 
 
street_graph = ox.graph_from_point( 
        shinjuku_origin,  
        distance=1000, # radius of 1000m  
        distance_type='network',  
        network_type='drive', # could also be 'bicycle', 'walk', etc.   
        simplify=False) # we'll see what this does in a moment 
In [43]: ox.plot_graph(street_graph); 
data is stored as a networkx directed graph
In [44]:
roads are edges
road intersections are nodes
print(type(street_graph)) 
<class 'networkx.classes.multidigraph.MultiDiGraph'> 
In [45]: street_graph.nodes(data=True)[:5] 
Out[45]: [(1666084493, {'osmid': 1666084493, 'x': 139.6979529, 'y': 35.6981751}), 
(1519087617, {'osmid': 1519087617, 'x': 139.7016291, 'y': 35.6922784}), 
(2450450434, 
 {'highway': 'traffic_signals', 
  'osmid': 2450450434, 
  'x': 139.6987805, 
  'y': 35.6900131}), 
(4717672458, 
 {'highway': 'crossing', 
  'osmid': 4717672458, 
  'x': 139.7016464, 
  'y': 35.6960468}), 
(295405191, {'osmid': 295405191, 'x': 139.6994617, 'y': 35.6887217})]
osmnx can plot with folium
In [46]: ox.plot_graph_folium(street_graph, edge_opacity=0.8) 
Out[46]:
+
-
Leaflet | (c) OpenStreetMap contributors (c) CartoDB, CartoDB attributions
osmnx can calculate useful statistics
In [47]: ox.basic_stats(street_graph) 
Out[47]: {'circuity_avg': 0.99999999999999856, 
'count_intersections': 1170, 
'edge_density_km': None, 
'edge_length_avg': 29.644130321357416, 
'edge_length_total': 60088.652161391481, 
'intersection_density_km': None, 
'k_avg': 3.301302931596091, 
'm': 2027, 
'n': 1228, 
'node_density_km': None, 
'self_loop_proportion': 0.0, 
'street_density_km': None, 
'street_length_avg': 28.67747946921893, 
'street_length_total': 42815.476847543861, 
'street_segments_count': 1493, 
'streets_per_node_avg': 2.4315960912052117, 
'streets_per_node_counts': {0: 0, 1: 58, 2: 707, 3: 345, 4: 112, 5: 5, 6: 1}, 
'streets_per_node_proportion': {0: 0.0, 
 1: 0.04723127035830619, 
 2: 0.5757328990228013, 
 3: 0.28094462540716614, 
 4: 0.09120521172638436, 
 5: 0.004071661237785016, 
 6: 0.0008143322475570033}}
you can use networkx algorithms
In [48]: import networkx as nx 
b = nx.algorithms.betweenness_centrality(street_graph) 
pd.Series(list(b.values())).hist(bins=100); 
osmnx is another tool for our toolbox!
written by Geo Boeing
Now we can easily get street data
How do we calculate the city blocks?
nding certain kinds of cycles in the street graph
I couldn't nd an implementation
but I found description of an algorithm
so I decided to implement it
here
The algorithm
Pick a starting node
Walk forward, while always turning left until you return to starting point
Never walk the same road in the same direction twice
Handle some edge cases
def angle(a,b): 
#     print﴾a, b﴿ 
    return degrees(arccos(dot(a, b)/(norm(a)*norm(b))))*sign(cross(b,a)) 
 
def step(graph, edge, path, depth): 
    depth += 1 
 
    # create list of successors to the edge 
    successors = [(edge[1], n) for n in graph.neighbors(edge[1])] 
 
    # Remove edge in the opposite direction, so that the algorithm doesn't simple
 jump back to the previous point 
    successors.remove(tuple(np.flip((edge),0))) 
 
    # Remove edges that have already been traversed 
    successors = list(filter(lambda s: s not in traversed, successors)) 
 
    if not successors:  
        # The successors have all been walked, so no more areas can be found  
        return  
 
    # calculate angles to incoming edge and order successors by smallest angle 
    angles = [angle(edge_coords.get(edge), edge_coords.get(successor)) for succes
sor in successors] 
 
    # pick leftmost edge 
    edge_to_walk = successors[np.argmin(angles)] 
 
    if edge_to_walk in path: 
        traversed.update([edge_to_walk]) 
        #We are back where we started, which means that we found a polygon 
        graph_polygons.append(path) 
        return 
    else: 
        if depth > MAX_RECURSION_DEPTH: 
warning: recursive implementation!
not trivial to parallelize
let's use that to nd city blocks in shinjuku!
slow for large areas of dense city network
Speeding up calculation
Three ways that I could think of
(apart from a more ef cient, non-recursive implementation ;)
limit the number of recursions to depth
constrains the algo to only nd city blocks with
corners
(a corner is a node in the street graph).
d
d
tremendous speedup with d = 10
deep recursion required to nd complicated city blocks
( )d = 500
Removing roads that are dead ends
reduces number of edges and nodes
does not change the shape of the city blocks
Using simpli ed street graph
In [49]: simple = ox.simplify_graph(street_graph) 
ox.plot_graph(simple); 
In [50]: ox.plot_graph(street_graph); 
reduces number of edges and nodes
This does change the shape of the city blocks
Daikanyama using original street graph
In [51]: IFrame(src='html/daikanyama_1000_notsimplified.html', width=1024, height=600) 
Out[51]:
+
-
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
Daikanyama city blocks, using simpli ed road network
In [52]: IFrame(src='html/daikanyama_1000_simplified.html', width=1024, height=600) 
Out[52]:
+
-
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
So now we can quickly calculate city blocks
Let's turn the city blocks into a choropleth
we can no longer use zipcodes to map restaurants to
ares
place grid over area and calculate nearest grid
(more code...)
grid_size = 0.001 
fdiv = lambda c: int(np.floor_divide(c, grid_size)) 
# Calculate grid for each point in polygons 
# i.e. each polygon can be in multiple grids 
grid_to_areas = {} 
path_coords = [list(zip(*pol.exterior.coords.xy)) for pol in city_blocks.geometry
] 
for area_number, path in enumerate(path_coords): 
    for point in path: 
        grid = (fdiv(point[0]), fdiv(point[1])) 
        if grid in grid_to_areas.keys(): 
            grid_to_areas[grid].update([area_number]) 
        else: 
            grid_to_areas[grid] = set([area_number]) 
# Calculate grid for each restaurant 
# Each restaurant can only be in a single grid 
restaurant_to_grid = list(map(tuple,restaurants[coordinate_columns].applymap(fdiv
).values)) 
restaurant_to_areas = {i:grid_to_areas.get(r) for i,r in enumerate(restaurant_to_
grid)} 
Group by city block and calculate stats
use review count for opacity
In [53]: IFrame(src='html/python­popup­choroplethAVERAGE.html', width=IFrame_width_px, heig
ht=IFrame_heigth_px) 
Out[53]:
+
-
2.0 2.4 2.9 3.3 3.8 4.2 4.6
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
Let's look at where the best restaurants are
In [54]: IFrame(src='html/python­popup­choroplethBEST.html', width=IFrame_width_px, height=
IFrame_heigth_px) 
Out[54]:
+
-
2.0 2.5 3.0 3.5 4.0 4.5 5.0
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
Let's look at where the WORST restaurants are
In [55]: IFrame(src='html/python­popup­choroplethWORST.html', width=IFrame_width_px, height
=IFrame_heigth_px) 
Out[55]:
+
-
2.0 2.4 2.9 3.3 3.8 4.2 4.6
Leaflet | Map tiles by Stamen Design, under CC BY 3.0. Data by OpenStreetMap, under ODbL.
Mapping time-dynamic data
restaurant scores evolve over time
folium can make animations
In [56]: IFrame(src='http://dwilhelm89.github.io/LeafletSlider/', height=IFrame_heigth_px, 
width=IFrame_width_px) 
Out[56]:
Leaflet Time‑Slider Example
View on GitHub
+
-
Made TimeDynamicGeoJson plugin for folium
m = folium.Map(location=area_coords.get(area_name), tiles='Stamen Toner', 
                    zoom_start=15) 
 
 
g = TimeDynamicGeoJson( 
    city_blocks.to_json(), 
    styledict = styledict,  
    style_function=lambda feature: { 
        'color': 'white', 
        'weight': 0.2, 
        'dashArray': '5, 5', 
        'fillOpacity': 1, 
    }, 
    highlight_function=lambda feature: { 
        'weight': 1, 
        'color': '#666', 
        'dashArray': '', 
        'fillOpacity': 1 
    } 
).add_to(m) 
 
m.save('html/choropleth_with_timeslider.html') 
In [57]: from IPython.display import HTML, IFrame 
IFrame(src='html/choropleth_with_timeslider.html', width=1024, height=600) 
Out[57]:
Sun Jan 01 2006
+
-
will submit pull request to folium
(after xing some bugs... )
Summary
1. Three high-level libraries
geopandas is the base of geospatial data analysis
osmnx gets, manipulates and analyses geo-data
folium makes interactive maps
A lot of other libraries are used under the hood
(please see Links and References)
My own contributions
implementation of algo for calculating city blocks
plugin for folium to make time dynamic choropleths
Why GIS in Python? ;)
Thank you :)
Links and References
In [ ]:
code for this presentation
geopandas
shapely docs
folium github examples
networkx
osmnx
Boeing, G. 2017. “OSMnx: New Methods for Acquiring, Constructing, Analyzing,
and Visualizing Complex Street Networks.” Computers, Environment and Urban
Systems 65, 126-139. doi:10.1016/j.compenvurbsys.2017.05.004
Validating OpenStreetMap / Arun Ganesh
Dots vs. polygons: How I choose the right visualization
  

More Related Content

What's hot

[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)Donghyeon Kim
 
Visualizing Data Using t-SNE
Visualizing Data Using t-SNEVisualizing Data Using t-SNE
Visualizing Data Using t-SNEDavid Khosid
 
Representation learning on graphs
Representation learning on graphsRepresentation learning on graphs
Representation learning on graphsDeakin University
 
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018Universitat Politècnica de Catalunya
 
Fuzzy Logic Based Edge Detection
Fuzzy Logic Based Edge DetectionFuzzy Logic Based Edge Detection
Fuzzy Logic Based Edge DetectionDawn Raider Gupta
 
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ..."Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...Edge AI and Vision Alliance
 
Manifold learning with application to object recognition
Manifold learning with application to object recognitionManifold learning with application to object recognition
Manifold learning with application to object recognitionzukun
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것NAVER Engineering
 
Deep Reinforcement Learning and Its Applications
Deep Reinforcement Learning and Its ApplicationsDeep Reinforcement Learning and Its Applications
Deep Reinforcement Learning and Its ApplicationsBill Liu
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceNeo4j
 
PR-231: A Simple Framework for Contrastive Learning of Visual Representations
PR-231: A Simple Framework for Contrastive Learning of Visual RepresentationsPR-231: A Simple Framework for Contrastive Learning of Visual Representations
PR-231: A Simple Framework for Contrastive Learning of Visual RepresentationsJinwon Lee
 
Python Seaborn Data Visualization
Python Seaborn Data Visualization Python Seaborn Data Visualization
Python Seaborn Data Visualization Sourabh Sahu
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks남주 김
 
Lec12: Shape Models and Medical Image Segmentation
Lec12: Shape Models and Medical Image SegmentationLec12: Shape Models and Medical Image Segmentation
Lec12: Shape Models and Medical Image SegmentationUlaş Bağcı
 
Feature Selection in Machine Learning
Feature Selection in Machine LearningFeature Selection in Machine Learning
Feature Selection in Machine LearningUpekha Vandebona
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBArangoDB Database
 
Jonathan Ronen - Variational Autoencoders tutorial
Jonathan Ronen - Variational Autoencoders tutorialJonathan Ronen - Variational Autoencoders tutorial
Jonathan Ronen - Variational Autoencoders tutorialJonathan Ronen
 
Machine Learning using Apache Spark MLlib
Machine Learning using Apache Spark MLlibMachine Learning using Apache Spark MLlib
Machine Learning using Apache Spark MLlibIMC Institute
 

What's hot (20)

Graph Analytics
Graph AnalyticsGraph Analytics
Graph Analytics
 
[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)
 
Visualizing Data Using t-SNE
Visualizing Data Using t-SNEVisualizing Data Using t-SNE
Visualizing Data Using t-SNE
 
Representation learning on graphs
Representation learning on graphsRepresentation learning on graphs
Representation learning on graphs
 
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018
Loss Functions for Deep Learning - Javier Ruiz Hidalgo - UPC Barcelona 2018
 
Fuzzy Logic Based Edge Detection
Fuzzy Logic Based Edge DetectionFuzzy Logic Based Edge Detection
Fuzzy Logic Based Edge Detection
 
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ..."Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...
"Getting More from Your Datasets: Data Augmentation, Annotation and Generativ...
 
Manifold learning with application to object recognition
Manifold learning with application to object recognitionManifold learning with application to object recognition
Manifold learning with application to object recognition
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
Deep Reinforcement Learning and Its Applications
Deep Reinforcement Learning and Its ApplicationsDeep Reinforcement Learning and Its Applications
Deep Reinforcement Learning and Its Applications
 
Workshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data ScienceWorkshop - Neo4j Graph Data Science
Workshop - Neo4j Graph Data Science
 
PR-231: A Simple Framework for Contrastive Learning of Visual Representations
PR-231: A Simple Framework for Contrastive Learning of Visual RepresentationsPR-231: A Simple Framework for Contrastive Learning of Visual Representations
PR-231: A Simple Framework for Contrastive Learning of Visual Representations
 
Python Seaborn Data Visualization
Python Seaborn Data Visualization Python Seaborn Data Visualization
Python Seaborn Data Visualization
 
Generative adversarial networks
Generative adversarial networksGenerative adversarial networks
Generative adversarial networks
 
Lec12: Shape Models and Medical Image Segmentation
Lec12: Shape Models and Medical Image SegmentationLec12: Shape Models and Medical Image Segmentation
Lec12: Shape Models and Medical Image Segmentation
 
Feature Selection in Machine Learning
Feature Selection in Machine LearningFeature Selection in Machine Learning
Feature Selection in Machine Learning
 
GraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDBGraphSage vs Pinsage #InsideArangoDB
GraphSage vs Pinsage #InsideArangoDB
 
Jonathan Ronen - Variational Autoencoders tutorial
Jonathan Ronen - Variational Autoencoders tutorialJonathan Ronen - Variational Autoencoders tutorial
Jonathan Ronen - Variational Autoencoders tutorial
 
Machine Learning using Apache Spark MLlib
Machine Learning using Apache Spark MLlibMachine Learning using Apache Spark MLlib
Machine Learning using Apache Spark MLlib
 
Vector database
Vector databaseVector database
Vector database
 

Similar to Geospatial Data Analysis and Visualization in Python

Chapter3_Visualizations2.pdf
Chapter3_Visualizations2.pdfChapter3_Visualizations2.pdf
Chapter3_Visualizations2.pdfMekiyaShigute1
 
Dynamic Graph Plotting with WPF
Dynamic Graph Plotting with WPFDynamic Graph Plotting with WPF
Dynamic Graph Plotting with WPFIJERD Editor
 
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser Bootsma
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser BootsmaDSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser Bootsma
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser BootsmaDeltares
 
PPT on Data Science Using Python
PPT on Data Science Using PythonPPT on Data Science Using Python
PPT on Data Science Using PythonNishantKumar1179
 
Railway reservation(c++ project)
Railway reservation(c++ project)Railway reservation(c++ project)
Railway reservation(c++ project)Debashis Rath
 
Using the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaUsing the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaCodemotion
 
Railway reservation(c++ project)
Railway reservation(c++ project)Railway reservation(c++ project)
Railway reservation(c++ project)Debashis Rath
 
State of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceState of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceOSCON Byrum
 
Implementation of Computational Algorithms using Parallel Programming
Implementation of Computational Algorithms using Parallel ProgrammingImplementation of Computational Algorithms using Parallel Programming
Implementation of Computational Algorithms using Parallel Programmingijtsrd
 
Regression and Classification with R
Regression and Classification with RRegression and Classification with R
Regression and Classification with RYanchang Zhao
 
Pandas+postgre sql 實作 with code
Pandas+postgre sql 實作 with codePandas+postgre sql 實作 with code
Pandas+postgre sql 實作 with codeTim Hong
 
Opensource gis development - part 3
Opensource gis development - part 3Opensource gis development - part 3
Opensource gis development - part 3Andrea Antonello
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...FarhanAhmade
 
Seeing your place in a new way - NodeconfEU 2018
Seeing your place in a new way -  NodeconfEU 2018Seeing your place in a new way -  NodeconfEU 2018
Seeing your place in a new way - NodeconfEU 2018Melissa Auclaire
 
Nyc open data project ii -- predict where to get and return my citibike
Nyc open data project ii -- predict where to get and return my citibikeNyc open data project ii -- predict where to get and return my citibike
Nyc open data project ii -- predict where to get and return my citibikeVivian S. Zhang
 
Pyconmini Hiroshima 2018
Pyconmini Hiroshima 2018Pyconmini Hiroshima 2018
Pyconmini Hiroshima 2018ksnt
 
Platform agnostic information systems development
Platform agnostic information systems developmentPlatform agnostic information systems development
Platform agnostic information systems developmentMark Jayson Fuentes
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowRomain Dorgueil
 

Similar to Geospatial Data Analysis and Visualization in Python (20)

PyData Paris 2015 - Track 1.2 Gilles Louppe
PyData Paris 2015 - Track 1.2 Gilles LouppePyData Paris 2015 - Track 1.2 Gilles Louppe
PyData Paris 2015 - Track 1.2 Gilles Louppe
 
Chapter3_Visualizations2.pdf
Chapter3_Visualizations2.pdfChapter3_Visualizations2.pdf
Chapter3_Visualizations2.pdf
 
Dynamic Graph Plotting with WPF
Dynamic Graph Plotting with WPFDynamic Graph Plotting with WPF
Dynamic Graph Plotting with WPF
 
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser Bootsma
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser BootsmaDSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser Bootsma
DSD-INT 2018 Work with iMOD MODFLOW models in Python - Visser Bootsma
 
PPT on Data Science Using Python
PPT on Data Science Using PythonPPT on Data Science Using Python
PPT on Data Science Using Python
 
Railway reservation(c++ project)
Railway reservation(c++ project)Railway reservation(c++ project)
Railway reservation(c++ project)
 
Using the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaUsing the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam Hanna
 
Railway reservation(c++ project)
Railway reservation(c++ project)Railway reservation(c++ project)
Railway reservation(c++ project)
 
State of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceState of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open Source
 
Implementation of Computational Algorithms using Parallel Programming
Implementation of Computational Algorithms using Parallel ProgrammingImplementation of Computational Algorithms using Parallel Programming
Implementation of Computational Algorithms using Parallel Programming
 
Visual c
Visual cVisual c
Visual c
 
Regression and Classification with R
Regression and Classification with RRegression and Classification with R
Regression and Classification with R
 
Pandas+postgre sql 實作 with code
Pandas+postgre sql 實作 with codePandas+postgre sql 實作 with code
Pandas+postgre sql 實作 with code
 
Opensource gis development - part 3
Opensource gis development - part 3Opensource gis development - part 3
Opensource gis development - part 3
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
 
Seeing your place in a new way - NodeconfEU 2018
Seeing your place in a new way -  NodeconfEU 2018Seeing your place in a new way -  NodeconfEU 2018
Seeing your place in a new way - NodeconfEU 2018
 
Nyc open data project ii -- predict where to get and return my citibike
Nyc open data project ii -- predict where to get and return my citibikeNyc open data project ii -- predict where to get and return my citibike
Nyc open data project ii -- predict where to get and return my citibike
 
Pyconmini Hiroshima 2018
Pyconmini Hiroshima 2018Pyconmini Hiroshima 2018
Pyconmini Hiroshima 2018
 
Platform agnostic information systems development
Platform agnostic information systems developmentPlatform agnostic information systems development
Platform agnostic information systems development
 
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache AirflowBusiness Dashboards using Bonobo ETL, Grafana and Apache Airflow
Business Dashboards using Bonobo ETL, Grafana and Apache Airflow
 

Recently uploaded

Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanMYRABACSAFRA2
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Colleen Farrelly
 
Predictive Analysis for Loan Default Presentation : Data Analysis Project PPT
Predictive Analysis for Loan Default  Presentation : Data Analysis Project PPTPredictive Analysis for Loan Default  Presentation : Data Analysis Project PPT
Predictive Analysis for Loan Default Presentation : Data Analysis Project PPTBoston Institute of Analytics
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]📊 Markus Baersch
 
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfPredicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfBoston Institute of Analytics
 
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhh
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhhThiophen Mechanism khhjjjjjjjhhhhhhhhhhh
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhhYasamin16
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDRafezzaman
 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfgstagge
 
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...Thomas Poetter
 
Vision, Mission, Goals and Objectives ppt..pptx
Vision, Mission, Goals and Objectives ppt..pptxVision, Mission, Goals and Objectives ppt..pptx
Vision, Mission, Goals and Objectives ppt..pptxellehsormae
 
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...Boston Institute of Analytics
 
Student Profile Sample report on improving academic performance by uniting gr...
Student Profile Sample report on improving academic performance by uniting gr...Student Profile Sample report on improving academic performance by uniting gr...
Student Profile Sample report on improving academic performance by uniting gr...Seán Kennedy
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)Cathrine Wilhelmsen
 
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...Boston Institute of Analytics
 
Conf42-LLM_Adding Generative AI to Real-Time Streaming Pipelines
Conf42-LLM_Adding Generative AI to Real-Time Streaming PipelinesConf42-LLM_Adding Generative AI to Real-Time Streaming Pipelines
Conf42-LLM_Adding Generative AI to Real-Time Streaming PipelinesTimothy Spann
 
Defining Constituents, Data Vizzes and Telling a Data Story
Defining Constituents, Data Vizzes and Telling a Data StoryDefining Constituents, Data Vizzes and Telling a Data Story
Defining Constituents, Data Vizzes and Telling a Data StoryJeremy Anderson
 
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...Boston Institute of Analytics
 
Multiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfMultiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfchwongval
 

Recently uploaded (20)

Identifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population MeanIdentifying Appropriate Test Statistics Involving Population Mean
Identifying Appropriate Test Statistics Involving Population Mean
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024
 
Predictive Analysis for Loan Default Presentation : Data Analysis Project PPT
Predictive Analysis for Loan Default  Presentation : Data Analysis Project PPTPredictive Analysis for Loan Default  Presentation : Data Analysis Project PPT
Predictive Analysis for Loan Default Presentation : Data Analysis Project PPT
 
GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]GA4 Without Cookies [Measure Camp AMS]
GA4 Without Cookies [Measure Camp AMS]
 
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfPredicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
 
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhh
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhhThiophen Mechanism khhjjjjjjjhhhhhhhhhhh
Thiophen Mechanism khhjjjjjjjhhhhhhhhhhh
 
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTDINTERNSHIP ON PURBASHA COMPOSITE TEX LTD
INTERNSHIP ON PURBASHA COMPOSITE TEX LTD
 
RadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdfRadioAdProWritingCinderellabyButleri.pdf
RadioAdProWritingCinderellabyButleri.pdf
 
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
Deep Generative Learning for All - The Gen AI Hype (Spring 2024)
 
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...
Minimizing AI Hallucinations/Confabulations and the Path towards AGI with Exa...
 
Vision, Mission, Goals and Objectives ppt..pptx
Vision, Mission, Goals and Objectives ppt..pptxVision, Mission, Goals and Objectives ppt..pptx
Vision, Mission, Goals and Objectives ppt..pptx
 
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
NLP Data Science Project Presentation:Predicting Heart Disease with NLP Data ...
 
Student Profile Sample report on improving academic performance by uniting gr...
Student Profile Sample report on improving academic performance by uniting gr...Student Profile Sample report on improving academic performance by uniting gr...
Student Profile Sample report on improving academic performance by uniting gr...
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)Data Factory in Microsoft Fabric (MsBIP #82)
Data Factory in Microsoft Fabric (MsBIP #82)
 
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...
Decoding the Heart: Student Presentation on Heart Attack Prediction with Data...
 
Conf42-LLM_Adding Generative AI to Real-Time Streaming Pipelines
Conf42-LLM_Adding Generative AI to Real-Time Streaming PipelinesConf42-LLM_Adding Generative AI to Real-Time Streaming Pipelines
Conf42-LLM_Adding Generative AI to Real-Time Streaming Pipelines
 
Defining Constituents, Data Vizzes and Telling a Data Story
Defining Constituents, Data Vizzes and Telling a Data StoryDefining Constituents, Data Vizzes and Telling a Data Story
Defining Constituents, Data Vizzes and Telling a Data Story
 
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...
Data Analysis Project : Targeting the Right Customers, Presentation on Bank M...
 
Multiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdfMultiple time frame trading analysis -brianshannon.pdf
Multiple time frame trading analysis -brianshannon.pdf
 

Geospatial Data Analysis and Visualization in Python