Πώς κάνουμε οπτική απεικόνιση δεδομένων σε χάρτη με χρήση Python
- Πώς βρίσκουμε τι δικαιώματα έχει ένας χρήστης σε βάση δεδομένων της Oracle - 1 Νοέμβριος 2024
- Πώς ενεργοποιούμε το Unified Auditing σε Oracle Database - 7 Οκτώβριος 2024
- Τι είναι η PostgreSQL και πως κάνουμε μία πλήρης εγκατάσταση - 2 Σεπτέμβριος 2024
Στο άρθρο αυτό με τη βοήθεια του jupyter notebook και της python θα φτιάξουμε ένα heatmap. Θα κάνουμε μια πλήρη ανάλυση με χρήση dataframe, polynomial regression scatter plot, bar plot.
Ας ξεκινήσουμε φορτώνοντας τις βιβλιοθήκες που θα χρειαστούμε:
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 με δεδομένα που βρήκα για την Ευρώπη και μας κάνουν για το παράδειγμα:
dfun = pd.read_csv('https://gist.githubusercontent.com/str4t3gos/d089dd9bab5d075a4c39e48da301b374/raw/653feea057e6b7aa54ee772922e696e7f7d1ba61/country_un2.csv')
Αφού έχουμε φορτώσει σε μια μεταβλητή που έχει πάρει τις ιδιότητες του panda dataframe ως csv με την εντολή .head() μας δείξει τα δεδομένα μας:
dfun.head()
Μπορούμε να φιλτράρουμε τα δεδομένα του dataframe πχ να φέρουμε μόνο τα δεδομένα του 2017:
dfun17 = dfun[dfun['YEAR'] == 2017] dfun17.head()
Ας γεμίσουμε μια ακόμα μεταβλητή με τα δεδομένα του 2010 θα τα χρειαστούμε αργότερα:
dfun10 = dfun[dfun['YEAR'] == 2010] dfun10.head()
Ορίζουμε σε μια μεταβλητή τις ιδιότητες του χάρτη από το folium και του βάζουμε τα χρώματα μαζί με τα υπόλοιπα ορίσματα μέσω της ιδιότητας choropleth.
*Να υπενθυμίσω ότι legend είναι το κουτάκι που επεξηγεί τι είναι σημαίνουν τα διαφορετικά χρώματα που βλέπουμε. Επίσης με την ιδιότητα .save έχουμε την δυνατότητα να το σώσουμε ως 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')
Ας δούμε και την διαφορά με το 2010 που φτιάξαμε και το άλλο dataframe:
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
Δημιουργία γραφήματος polynomial regression
Ας φτιάξουμε ένα γράφημα polynomial regression με τα δεδομένα της κάθε χρονιάς της Ελλάδας.
Θα χρειαστούμε ένα καινούργιο dataframe φιλτραρισμένο μόνο με την Ελλάδα και να κάνουμε import την βιβλιοθήκη seaborn:
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)
Δημιουργία γραφήματος bar plot
Ας πάμε στο τελευταίο παράδειγμα.
Θα φτιάξουμε ένα γράφημα barplot με τα δεδομένα της Ελλάδος από το 2007 και μετά:
dgreecefinal10years = dgreecefinal[dgreecefinal['YEAR'] >=2007] dgreecefinal10years.head()
Θα χρησιμοποιήσουμε την βιβλιοθήκη matplotlib ορίζοντας τις παραμέτρο της και με την ιδιότητα .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()