Installing Python and Jupyter Notebook
You can download and install Python from https://www.python.org/downloads/
Check Add python.exe to PATH, then Install Now.
To confirm installation, from a command prompt enter:
py --version python --version
Both commands should show the version that you downloaded.
Jupyter Notebook is a popular tool for running Python scripts, offering the added benefit of displaying plots directly within the interface. You can install it by running:
pip install notebook
You can then run:
jupyter lab /path/to/folder
Basic conversions
R | Python | |
---|---|---|
Variable assignment |
|
|
R does accept the For example, my_function <- function(y = 3, x = 5) { print(paste(y, x)) } my_function(x = 10) # Passes 10 to the x parameter, and outputs "3 10" my_function(x <- 20) # Assigns 20 to the global x variable, which it passes to the y parameter. Outputs "20 5" To avoid confusion, always use | ||
Declaring a Range | 1:10 seq(1, 20, 2) print(1:10) | range(1, 11) range(1, 21, 2) print(list(range(1, 11))) |
Ouch. Python’s code is not only longer, but it excludes the final number.
| ||
Example conversions
The following examples demonstrate how to convert the R code at https://github.com/jjennewein/MDA_2023-24 into equivalent Python code.
0.field buffer.R | 0.field buffer.py |
---|---|
library(sf) | import geopandas as gpd |
Loads a library for handling geospatial data, including working with shapefiles. In the Python code, gpd is an alias for the geopandas library, which we use to reduce typing and improve code readability. | |
setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) | |
RStudio defaults to a global working directory, which means file paths must be specified explicitly. Python defaults to the folder where the source code is located. Jupyter Notebook defaults to where you launch the notebook server.
The original file path was To avoid referencing This way, the R program can run without requiring the full path in filenames. | |
mda = st_read("MDAEnrollment2023-2024.shp") %>% st_transform(., crs = 32618) %>% st_buffer(., dist = -30) %>% dplyr::filter(!st_is_empty(.)) | mda = gpd.read_file("MDAEnrollment2023-2024.shp") \ .to_crs(epsg=32618) mda["geometry"] = mda.geometry.buffer(-30) mda = mda[~mda.geometry.is_empty] |
This code:
R uses In Python, a backslash ( Also, note that the dots in | |
st_write(mda, "MDAEnrollment2023-2024_Buff30m.shp", append=FALSE) | mda.to_file("MDAEnrollment2023-2024_Buff30m.shp") |
Writes the buffered data frame to a new shapefile. I added |
1.Extract_HLS_L30 .R | 1.Extract_HLS_L30 .py |
---|---|
library(dplyr) library(terra) library(sf) library(exactextractr) | import pandas as pd import rasterio import geopandas as gpd from rasterstats import zonal_stats |
Syntax is easy. Knowing which libraries to use – not so much! | |
setwd(dirname(rstudioapi::getActiveDocumentContext()$path)) | |
Explained previously. | |
fields = st_read("MDAEnrollment2023-2024_Buff30m.shp") | fields = gpd.read_file("MDAEnrollment2023-2024_Buff30m.shp") |
Reads the buffered shapefile. | |
plot(fields[1]) | fields.plot(edgecolor='black') |
Plots the shapefile.
|
0 Comments