Каков наилучший способ / команда для обозначения Geo pandas против VegaLite? - PullRequest
1 голос
/ 18 февраля 2020

Я составил карту хороплета, используя Geo pandas (Python) и Vegalite (Julia).

Я хочу сравнить их оба (простота использования, скорость и т. Д. c) .

Я очень заинтересован в скорости. Так что для моего кода JULIA я мог бы использовать "@time" или "@time_ns" или "от ti c () до c ()", et c.

Между тем для моего PYTHON код, который я мог бы использовать "timeit".

Что вы мне порекомендуете? Я использовал ноутбук Jupyter. Мой код выглядит следующим образом:

ЮЛИЯ

##Calling the libraries
using VegaLite, DataFrames, JSON

##Renaming a column
rename!(df_splunk, Symbol("featureId")=> Symbol("id"));

##Parsing the topojson file
disa_ONT_region=JSON.parsefile("/home/juliana/roc/Data/Topojson/disa_ONT_region.topojson")

for key in keys(disa_ONT_region["objects"]["disa_ONT_region"]["geometries"])
    disa_ONT_region["objects"]["disa_ONT_region"]["geometries"][key]["id"]=disa_ONT_region["objects"]["disa_ONT_region"]["geometries"][key]["properties"]["DA_ID"]
end

@vlplot(
    :geoshape,
    width=500, height=300,
    data={
        values=disa_ONT_region,
        format={
            type=:topojson,
            feature=:disa_ONT_region
        }
    },
    transform=[{
        lookup=:id,
        from={
            data=df_splunk,
            key=:id,
            fields=["count"]
        }
    }],
    color={
        "count:q",
        scale={scheme=:reds},
        legend={title="IPs Rate in Ontario - BST"}
    },
    projection={
        type=:albersUsa
    }
)

PYTHON

##GEOPANDAS
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import geopandas as gpd
from shapely.geometry import Point, Polygon


## Path to .shp file
sf_path = "/home/juliana/roc/Data/ESRI/disa_ONT_region.shp"
#print(sf_path)


###Read .shp file into a geopandas dataframe and plotting
sf=gpd.read_file(sf_path)
#sf=gpd.read_file(sf_path, encoding='utf-8')
#sf.plot()



## Joining dataframes: df_splunk (2 columns) + sf_Q (3 columns) = new_df
df_splunk=df_splunk.iloc[:, 0:2]
#df_splunk

sf_Q=sf.iloc[:, 0:3]
#sf_Q

new_df=sf_Q.merge(df_splunk, how='left', left_on='DA_ID', right_on='featureId')
new_df


## Plotting the cloropleth map
##https://matplotlib.org/3.1.0/tutorials/colors/colormaps.html
ax=new_df.plot(figsize=(10,6), column='count', cmap='Blues', k=5, legend=False)
plt.title("Number of IPs by district - Ontario")
ax.set_axis_off()

Спасибо

РЕДАКТИРОВАТЬ: я добавил таймер в мой Python код:

from datetime import datetime
start_time = datetime.now()

end_time = datetime.now()
delta_time = end_time - start_time
print(delta_time.microseconds)

Есть ли в Юлии эквивалент?

...