问题描述
我是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"')