Access to Drinking Water

Data on drinking water access around the world
DS350
world
resources
Author

DS 350

Published

May 8, 2024

Data details

There are 5,622 rows and 8 columns. The data source1 is used to create our data that is stored in our pins table. You can access this pin from a connection to posit.byui.edu using hathawayj/access_drinking_water_stacked.

This data is available to all.

Variable description

  • entity: Country name
  • code: 3-letter code for each country
  • year: Year
  • Share of the population using safely managed drinking water services: (Percent)
  • Share of the population using only basic drinking water services: (Percent)
  • Share of the population using limited drinking water services: (Percent)
  • Share of the population using unimproved drinking water services: (Percent)
  • Share of the population using surface water as a primary source of drinking water: (Percent)

Variable summary

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
year 0 1.00 2010.99 6.56 2000.00 2005.00 2011.00 2017.00 2022.00 ▇▆▇▆▇
Share of the population using safely managed drinking water services 1838 0.67 68.67 30.19 1.43 45.53 77.85 96.43 100.00 ▂▂▂▂▇
Share of the population using only basic drinking water services 1838 0.67 20.10 18.75 0.00 2.95 16.90 32.77 91.14 ▇▃▃▁▁
Share of the population using limited drinking water services 0 1.00 3.53 5.77 0.00 0.00 0.72 4.78 37.50 ▇▁▁▁▁
Share of the population using unimproved drinking water services 0 1.00 6.61 9.12 0.00 0.44 2.55 9.14 54.74 ▇▂▁▁▁
Share of the population using surface water as a primary source of drinking water 94 0.98 3.32 6.15 0.00 0.00 0.22 3.77 49.42 ▇▁▁▁▁

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
entity 0 1.00 4 38 0 254 0
code 506 0.91 3 8 0 232 0
Explore generating code using R
pacman::p_load(tidyverse, pins, connectapi, owidR)

# owid() function downloads current data directly from Our World in Data.
# Use owid_search() to search for other OWID datasets.
# For more information, see the package documentation here: https://github.com/piersyork/owidR/blob/main/README.md
access_drinking_water_stacked <- owid('access-drinking-water-stacked')

# Publish the data to the server with Bro. Hathaway as the owner.
board <- board_connect()
pin_write(board, access_drinking_water_stacked, type = "parquet", access_type = "all")

pin_name <- "access_drinking_water_stacked"
meta <- pin_meta(board, paste0("hathawayj/", pin_name))
client <- connect()
my_app <- content_item(client, meta$local$content_id)
set_vanity_url(my_app, paste0("data/", pin_name))

Access data

This data is available to all.

Direct Download: access_drinking_water_stacked.parquet

R and Python Download:

URL Connections:

For public data, any user can connect and read the data using pins::board_connect_url() in R.

library(pins)
url_data <- "https://posit.byui.edu/data/access_drinking_water_stacked/"
board_url <- board_connect_url(c("dat" = url_data))
dat <- pin_read(board_url, "dat")

Use this custom function in Python to have the data in a Pandas DataFrame.

import pandas as pd
import requests
from io import BytesIO

def read_url_pin(name):
  url = "https://posit.byui.edu/data/" + name + "/" + name + ".parquet"
  response = requests.get(url)
  if response.status_code == 200:
    parquet_content = BytesIO(response.content)
    pandas_dataframe = pd.read_parquet(parquet_content)
    return pandas_dataframe
  else:
    print(f"Failed to retrieve data. Status code: {response.status_code}")
    return None

# Example usage:
pandas_df = read_url_pin("access_drinking_water_stacked")

Authenticated Connection:

Our connect server is https://posit.byui.edu which you assign to your CONNECT_SERVER environment variable. You must create an API key and store it in your environment under CONNECT_API_KEY.

Read more about environment variables and the pins package to understand how these environment variables are stored and accessed in R and Python with pins.

library(pins)
board <- board_connect(auth = "auto")
dat <- pin_read(board, "hathawayj/access_drinking_water_stacked")
import os
from pins import board_rsconnect
from dotenv import load_dotenv
load_dotenv()
API_KEY = os.getenv('CONNECT_API_KEY')
SERVER = os.getenv('CONNECT_SERVER')

board = board_rsconnect(server_url=SERVER, api_key=API_KEY)
dat = board.pin_read("hathawayj/access_drinking_water_stacked")