Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Στο άρθρο αυτό με τη βοήθεια του jupyter notebook και της python θα φτιάξουμε ένα heatmap. Θα κάνουμε μια πλήρη ανάλυση με χρήση dataframe, polynomial regression scatter plot, bar plot.

Ας ξεκινήσουμε φορτώνοντας τις βιβλιοθήκες που θα χρειαστούμε:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import folium #είναι για την δημιουργία χάρτη
import json
import numpy as np #easy maths calculations
import pandas as pd #για τα dataframe
import matplotlib #για τα γραφήματα
import matplotlib.pyplot as plt
geo_Data = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/world-countries.json'
import folium #είναι για την δημιουργία χάρτη import json import numpy as np #easy maths calculations import pandas as pd #για τα dataframe import matplotlib #για τα γραφήματα import matplotlib.pyplot as plt geo_Data = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/world-countries.json'
import folium  #είναι για την δημιουργία χάρτη
import json
import numpy as np  #easy maths calculations
import pandas as pd    #για τα dataframe
import matplotlib      #για τα γραφήματα
import matplotlib.pyplot as plt

geo_Data = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/world-countries.json'
Τι είναι όμως το json που βάλαμε στην μεταβλητή geo_Data;

Είναι ουσιαστικά ένα αρχείο με συσχετισμένες τις χώρες με τις συντεταγμένες τους που χρειάζεται στο folium ώστε να φτιάξει τα περιθώρια του χάρτη.

Στο επόμενο βήμα θα φορτώσουμε ένα csv με δεδομένα που βρήκα για την Ευρώπη και μας κάνουν για το παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dfun = pd.read_csv('https://gist.githubusercontent.com/str4t3gos/d089dd9bab5d075a4c39e48da301b374/raw/653feea057e6b7aa54ee772922e696e7f7d1ba61/country_un2.csv')
dfun = pd.read_csv('https://gist.githubusercontent.com/str4t3gos/d089dd9bab5d075a4c39e48da301b374/raw/653feea057e6b7aa54ee772922e696e7f7d1ba61/country_un2.csv')
dfun = pd.read_csv('https://gist.githubusercontent.com/str4t3gos/d089dd9bab5d075a4c39e48da301b374/raw/653feea057e6b7aa54ee772922e696e7f7d1ba61/country_un2.csv')

Αφού έχουμε φορτώσει σε μια μεταβλητή που έχει πάρει τις ιδιότητες του panda dataframe ως csv με την εντολή .head() μας δείξει τα δεδομένα μας:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dfun.head()
dfun.head()
dfun.head()
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Μπορούμε να  φιλτράρουμε τα δεδομένα του dataframe πχ να φέρουμε μόνο τα  δεδομένα του 2017:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dfun17 = dfun[dfun['YEAR'] == 2017]
dfun17.head()
dfun17 = dfun[dfun['YEAR'] == 2017] dfun17.head()
dfun17 = dfun[dfun['YEAR'] == 2017]

dfun17.head()
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Ας γεμίσουμε μια ακόμα μεταβλητή με τα δεδομένα του 2010 θα τα χρειαστούμε αργότερα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dfun10 = dfun[dfun['YEAR'] == 2010]
dfun10.head()
dfun10 = dfun[dfun['YEAR'] == 2010] dfun10.head()
dfun10 = dfun[dfun['YEAR'] == 2010]

dfun10.head()
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Ορίζουμε σε μια μεταβλητή τις ιδιότητες του χάρτη από το folium και του βάζουμε τα χρώματα μαζί με τα υπόλοιπα ορίσματα μέσω της ιδιότητας choropleth.

*Να υπενθυμίσω ότι legend είναι το κουτάκι που επεξηγεί τι είναι σημαίνουν τα διαφορετικά χρώματα που βλέπουμε. Επίσης με την ιδιότητα .save έχουμε την δυνατότητα να το σώσουμε ως html.

Δημιουργία χάρτη
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sf_map= folium.Map([40., 10.], zoom_start=4)
sf_map.choropleth(
geo_data=geo_Data,
name='choropleth',
data=dfun17,
columns=['COUNTRY','VALUE'],
fill_color='BuPu',
fill_opacity=0.7,
line_opacity=0.5,
key_on='feature.properties.name',
legend_name='Unemployment Rate (%)'
)
folium.LayerControl().add_to(sf_map)
sf_map
#sf_map.save('europe17.html')
sf_map= folium.Map([40., 10.], zoom_start=4) sf_map.choropleth( geo_data=geo_Data, name='choropleth', data=dfun17, columns=['COUNTRY','VALUE'], fill_color='BuPu', fill_opacity=0.7, line_opacity=0.5, key_on='feature.properties.name', legend_name='Unemployment Rate (%)' ) folium.LayerControl().add_to(sf_map) sf_map #sf_map.save('europe17.html')
sf_map= folium.Map([40., 10.], zoom_start=4)

sf_map.choropleth(

    geo_data=geo_Data,

    name='choropleth',

    data=dfun17,

    columns=['COUNTRY','VALUE'],

    fill_color='BuPu',

    fill_opacity=0.7,

    line_opacity=0.5,

    key_on='feature.properties.name',

    legend_name='Unemployment Rate (%)'

)

folium.LayerControl().add_to(sf_map)

sf_map

#sf_map.save('europe17.html')
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Ας δούμε και την διαφορά με  το 2010 που φτιάξαμε και το άλλο dataframe:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sf_map10= folium.Map([40., 10.], zoom_start=4)
sf_map10.choropleth(
geo_data=geo_Data,
name='choropleth',
data=dfun10,
columns=['COUNTRY','VALUE'],
fill_color='BuPu',
fill_opacity=0.7,
line_opacity=0.5,
key_on='feature.properties.name',
legend_name='Unemployment Rate (%)'
)
folium.LayerControl().add_to(sf_map10)
sf_map10
sf_map10= folium.Map([40., 10.], zoom_start=4) sf_map10.choropleth( geo_data=geo_Data, name='choropleth', data=dfun10, columns=['COUNTRY','VALUE'], fill_color='BuPu', fill_opacity=0.7, line_opacity=0.5, key_on='feature.properties.name', legend_name='Unemployment Rate (%)' ) folium.LayerControl().add_to(sf_map10) sf_map10
sf_map10= folium.Map([40., 10.], zoom_start=4)

sf_map10.choropleth(

    geo_data=geo_Data,

    name='choropleth',

    data=dfun10,

    columns=['COUNTRY','VALUE'],

    fill_color='BuPu',

    fill_opacity=0.7,

    line_opacity=0.5,

    key_on='feature.properties.name',

    legend_name='Unemployment Rate (%)'

)

folium.LayerControl().add_to(sf_map10)

sf_map10
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python
Δημιουργία γραφήματος polynomial regression

Ας φτιάξουμε ένα γράφημα polynomial regression με τα δεδομένα της κάθε χρονιάς της Ελλάδας.

Θα χρειαστούμε ένα καινούργιο dataframe φιλτραρισμένο μόνο με την Ελλάδα και να κάνουμε import την βιβλιοθήκη seaborn:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dgreece = dfun[dfun['COUNTRY'] == 'Greece']
dgreecefinal = dgreece[['YEAR','VALUE']]
import seaborn as sns
ax = sns.regplot(x="YEAR", y="VALUE", data=dgreecefinal,
scatter_kws={"s": 80},
order=6, ci=None)
dgreece = dfun[dfun['COUNTRY'] == 'Greece'] dgreecefinal = dgreece[['YEAR','VALUE']] import seaborn as sns ax = sns.regplot(x="YEAR", y="VALUE", data=dgreecefinal, scatter_kws={"s": 80}, order=6, ci=None)
dgreece = dfun[dfun['COUNTRY'] == 'Greece']

dgreecefinal = dgreece[['YEAR','VALUE']]

import seaborn as sns

ax = sns.regplot(x="YEAR", y="VALUE", data=dgreecefinal,

                 scatter_kws={"s": 80},

                 order=6, ci=None)
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python
Δημιουργία γραφήματος bar plot

Ας πάμε στο τελευταίο παράδειγμα.

Θα φτιάξουμε ένα γράφημα barplot με τα δεδομένα της Ελλάδος από το 2007 και μετά:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
dgreecefinal10years = dgreecefinal[dgreecefinal['YEAR'] >=2007]
dgreecefinal10years.head()
dgreecefinal10years = dgreecefinal[dgreecefinal['YEAR'] >=2007] dgreecefinal10years.head()
dgreecefinal10years = dgreecefinal[dgreecefinal['YEAR'] >=2007]

dgreecefinal10years.head()
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Θα χρησιμοποιήσουμε την βιβλιοθήκη matplotlib ορίζοντας τις παραμέτρο της και με την ιδιότητα .show κάνει την προβολή:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
%matplotlib inline
ax=dgreecefinal10years.plot.bar('YEAR','VALUE')
ax.spines['left'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
for p in ax.patches:
ax.annotate(np.round(p.get_height(),decimals=2),
(p.get_x()+p.get_width()/2., p.get_height()),
ha='center',
va='center',
xytext=(0, 10),
textcoords='offset points',
fontsize = 12
)
ax.legend(['Greece'],loc='upper left')
plt.show()
%matplotlib inline ax=dgreecefinal10years.plot.bar('YEAR','VALUE') ax.spines['left'].set_visible(False) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) for p in ax.patches: ax.annotate(np.round(p.get_height(),decimals=2), (p.get_x()+p.get_width()/2., p.get_height()), ha='center', va='center', xytext=(0, 10), textcoords='offset points', fontsize = 12 ) ax.legend(['Greece'],loc='upper left') plt.show()
%matplotlib inline

ax=dgreecefinal10years.plot.bar('YEAR','VALUE')

ax.spines['left'].set_visible(False)

ax.spines['top'].set_visible(False)

ax.spines['right'].set_visible(False)

for p in ax.patches:

    ax.annotate(np.round(p.get_height(),decimals=2), 

                (p.get_x()+p.get_width()/2., p.get_height()), 

                ha='center', 

                va='center', 

                xytext=(0, 10), 

                textcoords='offset points',

                fontsize = 12

               )

ax.legend(['Greece'],loc='upper left')

plt.show()
Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση