Pydeck, visualisation de données Python. Couche de colonnes sur les cartes Carto.

Feb 18 2023
J'explorerai les capacités de visualisation de données géographiques de deck.gl avec la bibliothèque Python et pandas.

J'explorerai les capacités de visualisation de données géographiques de deck.gl avec la bibliothèque Python et pandas. Deck.gl est un framework de visualisation alimenté par WebGL pour les ensembles de données à grande échelle, et pydeck est un rendu spatial à grande échelle pour Python (alimenté par deck.gl).

Pour ce projet, j'utilise Jupyter Notebook - l'application Web originale pour créer et partager des documents informatiques. Il offre une expérience simple, rationalisée et centrée sur les documents.

La bibliothèque Python clé pour ce projet est pydeck. Par défaut, pydeck 0.6 fournit des tuiles de fond de carte via Carto. Vous pouvez éventuellement utiliser la clé API Mapbox en vous inscrivant à Mapbox. Mais, la carte Carto suffit pour ce projet.

Importons pydeck via pip :

pip install pydeck

  1. Nous commençons par importer les bibliothèques Python essentielles pour nos opérations : pandas, pydeck, os et éventuellement matplotlib.pyplot (je développerai peut-être ce post à l'avenir)
  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')