在Python中从uszipcode导出状态级别数据

问题描述

我是python的新手,无法从包uszipcode中获取数据。我希望能够获得俄勒冈州所有邮政编码的csv或excel文件以及每个邮政编码(例如人口,住房单位等)的所有相关数据。

到目前为止,我尝试过的是:

from uszipcode import SearchEngine
search = SearchEngine(simple_zipcode = False)

zipcode = search.by_state("Oregon",zipcode_type=None)

我不确定如何从这里继续。如何从此处将所有俄勒冈州的邮政编码数据转换为excel或csv格式。

任何建议将不胜感激。

谢谢!

解决方法

使用:

search.by_state('OR',returns=1000)

或者直接使用uszipcode的数据库文件。

如文档所述:

安装时不附带数据库文件。如果您没有,**下载将自动开始。存储在 ${HOME}/.uszipcode 的数据库文件。

import pandas as pd
import sqlite3

# replace ${HOME} with your home direction
with sqlite3.connect("${HOME}/.uszipcode/simple_db.sqlite") as con:
    df = pd.read_sql_query("SELECT * from simple_zipcode",con)

print(df.head())

# convert the `CompressedJSONType` to str
# from https://github.com/MacHu-GWU/uszipcode-project/blob/master/uszipcode/pkg/compressed_json_type.py

import zlib
for col in ['common_city_list','area_code_list']:
    df[col] = df[col].map(lambda x: json.loads(zlib.decompress(x).decode("utf-8")))

# query state
df.query('state=="OR"')