如何将此JSON数据读入Python
我以JSON格式调用了世界卫生组织的一些数据,我想将其读入熊猫数据框架 我在本页中称之为: 我试过了如何将此JSON数据读入Python,python,json,python-2.7,pandas,Python,Json,Python 2.7,Pandas,我以JSON格式调用了世界卫生组织的一些数据,我想将其读入熊猫数据框架 我在本页中称之为: 我试过了 #Setting Up and loading JSON into object ready to turn into dataframe url = "http://apps.who.int/gho/athena/data/GHO/WHS8_110.json?profile=simple&filter=COUNTRY:*" response = requests.get(url) r
#Setting Up and loading JSON into object ready to turn into dataframe
url = "http://apps.who.int/gho/athena/data/GHO/WHS8_110.json?profile=simple&filter=COUNTRY:*"
response = requests.get(url)
response_json = response.content
json.loads(response_json)
whoDataSetVaccinationRate = json.loads(response_json)
#Attempt to load JSON Data into Pandas Dataframe
whoDataSetVaccinationRateDF = pd.DataFrame(whoDataSetVaccinationRate['fact']
, columns=['COUNTRY', 'YEAR','REGION'])
whoDataSetVaccinationRateDF
看起来是这样的,但我只在国家和年份的数据框中得到NaN值:
我意识到我希望它在数据帧中的布局有所不同——我不知道该怎么称呼它。这就是我希望数据框的外观:
与以下部件一起使用:
这太棒了!你真是个救命恩人——这正是我想要做的。您在阅读JSON的更好方法上添加的额外信息也是非常优雅的代码-谢谢,不幸的是,您提供的代码是特定于python 3的-我仅限于python 2.7。我正在尝试使用urllib2.urlopen进行修改,但运气不太好:(也许你可以在2.7?@kiltanen-Solution from
https://stackoverflow.com/a/12965254
for python2不起作用?谢谢你-我现在正在努力解决这个问题。我会回复你的。所有问题都会有Thx堆help@kiltannen-好消息,超级!
#Setting Up and loading JSON into object ready to turn into dataframe
url = "http://apps.who.int/gho/athena/data/GHO/WHS8_110.json?profile=simple&filter=COUNTRY:*"
response = requests.get(url)
response_json = response.content
json.loads(response_json)
whoDataSetVaccinationRate = json.loads(response_json)
#Attempt to load JSON Data into Pandas Dataframe
whoDataSetVaccinationRateDF = pd.DataFrame(whoDataSetVaccinationRate['fact']
, columns=['COUNTRY', 'YEAR','REGION'])
whoDataSetVaccinationRateDF
from pandas.io.json import json_normalize
import urllib.request, json
#https://stackoverflow.com/a/12965254
url = "http://apps.who.int/gho/athena/data/GHO/WHS8_110.json?profile=simple&filter=COUNTRY:*"
with urllib.request.urlopen(url) as url:
data = json.loads(url.read().decode())
df = json_normalize(data['fact']).pivot('dim.COUNTRY','dim.YEAR','Value').astype(float)
print (df.head())
dim.YEAR 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 ... \
dim.COUNTRY ...
Afghanistan 11.0 NaN 8.0 9.0 14.0 14.0 14.0 31.0 34.0 22.0 ...
Albania 90.0 90.0 93.0 96.0 96.0 96.0 96.0 96.0 96.0 96.0 ...
Algeria NaN NaN NaN NaN NaN 68.0 67.0 73.0 81.0 82.0 ...
Andorra NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
Angola NaN NaN NaN 26.0 35.0 44.0 44.0 55.0 56.0 48.0 ...
dim.YEAR 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016
dim.COUNTRY
Afghanistan 55.0 59.0 60.0 62.0 64.0 59.0 57.0 60.0 62.0 62.0
Albania 97.0 98.0 97.0 99.0 99.0 98.0 99.0 98.0 97.0 96.0
Algeria 92.0 88.0 92.0 95.0 95.0 95.0 95.0 95.0 95.0 94.0
Andorra 94.0 98.0 98.0 99.0 99.0 98.0 95.0 96.0 96.0 97.0
Angola 71.0 61.0 57.0 72.0 64.0 72.0 66.0 60.0 55.0 49.0
[5 rows x 37 columns]