def write_table_data(flo, state_fips, sumlev, table_id): """Given a File-Like Object, write a table to it""" w = UnicodeCSVWriter(flo) metadata = fetch_table_label(table_id) header = ['GEOID', 'SUMLEV'] + METADATA_HEADERS + ['POP100.2000','HU100.2000'] for key in sorted(metadata['labels']): header.extend([key,"%s.2000" % key]) w.writerow(header) query = {'sumlev': sumlev, 'metadata.STATE': state_fips } collection = utils.get_geography_collection() for geography in collection.find(query): row = [geography['geoid'],geography['sumlev']] for h in METADATA_HEADERS: row.append(geography['metadata'][h]) pop2000,hu2000 = get_2000_top_level_counts(geography) row.extend([pop2000,hu2000]) for key in sorted(metadata['labels']): try: row.append(geography['data']['2010'][table_id][key]) except KeyError, e: if table_id.startswith('PCO'): print "No data for %s at %s" % (table_id, sumlev) return raise e # don't otherwise expect this error, so raise it... try: row.append(geography['data']['2000'][table_id][key]) except KeyError: row.append('') w.writerow(row)
#!/usr/bin/env python import sys from csvkit.unicsv import UnicodeCSVReader from pymongo import objectid import utils if len(sys.argv) < 2: sys.exit('You must provide a state fips code and the filename of a CSV as an argument to this script.') STATE_FIPS = sys.argv[1] FILENAME = sys.argv[2] collection = utils.get_geography_collection() inserts = 0 row_count = 0 # Create dummy 2000->2010 crosswalk if FILENAME == 'FAKE': for geography in collection.find({}, fields=['geoid', 'xwalk']): if 'xwalk' not in geography: geography['xwalk'] = {} geography['xwalk'][geography['geoid']] = { 'POPPCT00': 1.0, 'HUPCT00': 1.0 }
def setUp(self): self.geographies = utils.get_geography_collection()
def setUp(self): self.geographies = utils.get_geography_collection()