Skip to content

Score and rank US cities and towns to find the best city for you ๐Ÿ“

License

Notifications You must be signed in to change notification settings

jacobbudin/city-score

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

13 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

City Score

City Score is a command-line application for scoring cities based on your personal preferences. Here's an example:

City Population Zillowยฎ ZHVI PeopleForBikes Yelp "gay bars" Nearby ski resorts Score
Portland, OR 647,176 $547,999 56 9 Mount Hood Ski Bowl (42 miles) and 2 more 100
Detroit, MI 645,658 $64,414 42 7 Mt Brighton, MI (41 miles) and 1 more 86
Cambridge, MA 116,892 $959,032 58 6 Wachusett Mountain (40 miles) and 5 more 84

Technologies

  • Python 3

Features

  • Ranks all 29,880 cities and towns in the United States
  • Includes multiple built-in data providers
  • Designed to allow users to easily add and remix data
  • Outputs prettified to the console or to CSV, HTML, JSON, JSONL

Design

City Score uses a three-step process:

  1. Qualification: criteria identify cities that meet your minimum standard.
  2. Scoring: scorers score facets of your choosing at various weights.
  3. Generation: dimensions appear in the final output.

Quick start

  1. Download City Score from PyPI:
    $ python3 -m pip install city_score
    
  2. Create a script (myscore.py) like this:
    from city_score import run
    from city_score.sources.core import *
    from city_score.sources.peopleforbikes import *
    from city_score.sources.zillow import *
    
    sources = (
        PeopleForBikes,
        Zillow,
    )
    
    criteria = (
        minimum_bike_score(25),
        minimum_population(60000),
        maximum_median_home_price(1000000),
        prohibited_states(('TX', 'FL', 'CO', )),
    )
    
    scorers = (
        median_home_price_scorer(lower=350000, upper=800000),
        bike_score_scorer(lower=40, upper=80, weight=2),
    )
    
    dimensions = (
        population,
        median_home_price,
        median_rent,
        bike_score,
    )
    
    run(sources, criteria, scorers, dimensions)
  3. Run your script:
    $ python3 myscore.py --sort=score --scale-scores
    

Data sources

  • ๐Ÿšฒ PeopleForBikes provides a score for biking infrastructure.
  • ๐Ÿ‚ Snowpak provides the name and location of most ski resorts.
  • ๐Ÿƒ๐Ÿป TrailLink provides the number of nearby trail miles.
  • ๐Ÿ• Yelp provides data on many points of interest, including businesses.
  • ๐Ÿก Zillow provides estimates for home and rent prices.

License

MIT License