Skip to content

Instantly share code, notes, and snippets.

@sneakers-the-rat
Created June 25, 2020 20:09
Show Gist options
  • Save sneakers-the-rat/417a7ec8605d364cee8a0dac986318d8 to your computer and use it in GitHub Desktop.
Save sneakers-the-rat/417a7ec8605d364cee8a0dac986318d8 to your computer and use it in GitHub Desktop.
generate random address
import os
import io
import zipfile
import requests
import pandas as pd
import pdb
def download_addresses(path='lane.csv'):
print('Downloading addresses')
lane_addresses_zip = requests.get(
'https://data.openaddresses.io/runs/864834/us/or/lane.zip'
)
# decompress
z = zipfile.ZipFile(
io.BytesIO(lane_addresses_zip.content)
)
with z.open('us/or/lane.csv', 'r') as lane_f:
lane = lane_f.read()
# convert to df
df = pd.read_csv(io.BytesIO(lane))
abs_path = os.path.abspath(path)
df.to_csv(abs_path, index=False)
print(f"Saved addresses to:\n {os.path.abspath(path)}")
return df
def pick_address(addresses):
# filter to eugene
addresses = addresses.loc[addresses.CITY == "Eugene",:]
# filter to minimally complete addresses
addresses = addresses[addresses.NUMBER.notnull()]
addresses = addresses[addresses.STREET.notnull()]
addresses = addresses[addresses.POSTCODE.notnull()]
# pick one
address = addresses.sample(1)
# format
#pdb.set_trace()
try:
if address.UNIT.isna().all():
address_str = " ".join([
address.NUMBER.values[0],
address.STREET.values[0],
]) + f', {address.POSTCODE.values[0]}'
else:
address_str = " ".join([
address.NUMBER.values[0],
address.STREET.values[0]
])
address_str = ", ".join([
address_str,
address.UNIT.values[0],
str(address.POSTCODE.values[0])])
except Exception as e:
pdb.set_trace()
print(address_str)
return address_str
if __name__ == "__main__":
if os.path.exists('lane.csv'):
addresses = pd.read_csv('lane.csv')
else:
addresses = download_addresses()
address = pick_address(addresses)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment