Pydeck, visualizzazione dei dati Python. Livello colonna sulle mappe Carto.

Feb 18 2023
Esplorerò le funzionalità di visualizzazione dei dati geografici di deck.gl con la libreria Python e panda.

Esplorerò le funzionalità di visualizzazione dei dati geografici di deck.gl con la libreria Python e panda. Deck.gl è un framework di visualizzazione basato su WebGL per set di dati su larga scala e pydeck è un rendering spaziale su larga scala per Python (fornito da deck.gl).

Per questo progetto, sto utilizzando Jupyter Notebook , l'applicazione Web originale per la creazione e la condivisione di documenti computazionali. Offre un'esperienza semplice, semplificata e incentrata sui documenti.

La libreria Python chiave per questo progetto è pydeck. Per impostazione predefinita, pydeck 0.6 fornisce i riquadri della mappa di base tramite Carto. Puoi facoltativamente utilizzare la chiave API Mapbox, registrandoti a Mapbox. Ma la mappa Carto è sufficiente per questo progetto.

Importiamo pydeck tramite pip:

pip install pydeck

  1. Iniziamo importando le librerie Python essenziali per le nostre operazioni: pandas, pydeck, os e facoltativamente matplotlib.pyplot (potrei sviluppare questo post in futuro)
  2. import pandas as pd
    import pydeck as pdk
    from pydeck.types import String
    import matplotlib.pyplot as plt
    import os
    

    os.listdir() ## checking the current file composition of the folder
    df = pd.read_excel('stores.xlsx') ## reading .xlsx file to Pandas DataFrame
    df.set_index('Location Name') ## setting indexing to store's name
    
           
                    

    df.columns
    
    # output
    # Index(['Location Name', 'Address line 1', 'Address line 2', 'Address line 3',
    #    'City Name', 'Latitude', 'Longitude', 'Lat', 'Long', 'Postal Code',
    #      'Results'],
    #     dtype='object')
    

    df2 = df[['Location Name', 'City Name', 'Latitude', 'Longitude', 'Lat', 'Long', 'Postal Code', 'Results']]
    df2
    

df2["Long"] = df2["Long"].astype(float)
df2["Lat"] = df2["Lat"].astype(float)
df2

layer = pdk.Layer(
    'ColumnLayer',
    df2,
    get_position=['Long', 'Lat'],
    get_elevation=["Results"],
    auto_highlight=True,
    elevation_scale=5,
    pickable=True,
    extruded=True,
    get_radius=100,
    get_fill_color=["Results * 10", "Results", "Results * 40", 220],
    coverage=1
)

# Set the viewport location
view_state = pdk.ViewState(
    longitude=25.336900,
    latitude=54.734235,
    zoom=2,
    min_zoom=5,
    max_zoom=15,
    pitch=40.5,
    bearing=-27.36)

r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.to_html('stores.html')