Python 加载数据集
我对ckan有一些疑问: 如何:Python 加载数据集,python,python-3.x,ckan,Python,Python 3.x,Ckan,我对ckan有一些疑问: 如何: 从web加载CKAN数据集 将此数据集转换为数据帧 和我需要在ckan网站上注册以查询数据 我使用的是Pyton 3.6.1 编辑2: 我尝试了以下代码: import urllib url = 'http://dados.cvm.gov.br/api/action/datastore_search?resource_id=92741280-58fc-446b-b436-931faaca4fb4&q=CNPJ_FUNDO:11.286.399/0001
import urllib
url = 'http://dados.cvm.gov.br/api/action/datastore_search?resource_id=92741280-58fc-446b-b436-931faaca4fb4&q=CNPJ_FUNDO:11.286.399/0001-35'
fileobj = urllib.request.urlopen(url)
print(fileobj.read())
但是,结果是这样的:
b{“帮助”:
"",
“success”:true,“result”:{“resource_id”:
“92741280-58fc-446b-b436-931faaca4fb4”,“字段”:[{“类型”:“int4”,
“id”:“_id”},{“type”:“text”,“id”:“CNPJ_FUNDO”},{“type”:
“时间戳”,“id”:“DT_COMPTC”},{“类型”:“数字”,“id”:
“VLU总计”},{“类型”:“数字”,“id”:“VLU配额”},{“类型”:
“数字”,“id”:“VL_PATRIM_LIQ”},{“类型”:“数字”,“id”:
“CAPTC_DIA”},{“type”:“numeric”,“id”:“RESG_DIA”},{“type”:
“数字”,“id”:“NR_COTST”},{“type”:“int8”,“id”:“full_count”},
{“type”:“float4”,“id”:“rank”}],“q”:
“CNPJ_FUNDO:11.286.399/0001-35”,“记录”:[],“_链接”:{“开始”:
“/api/action/datastore_search?q=CNPJ_FUNDO%3A11.286.399%2F001-35和资源id=92741280-58fc-446b-b436-931FAACA4”,“下一步”:
“/api/action/datastore_search?q=CNPJ_FUNDO%3A11.286.399%2F001-35&offset=100&resource_id=92741280-58fc-446b-b436-931faaca4fb4”}}”
我需要这样的结果
请求
库:
import requests
import pandas as pd
params = params={
'resource_id': '92741280-58fc-446b-b436-931faaca4fb4',
'limit': 5,
}
url = 'http://dados.cvm.gov.br/api/action/datastore_search'
r = requests.get(url, params=params).json()
df = pd.DataFrame(r['result']['records'])
看起来像是。您可能需要将列转换为数字/日期类型,同样,这并不是ckan所特有的,您可以在pandas文档中找到如何实现这一点的答案
>>> df.describe()
_id
count 5.000000
mean 3.000000
std 1.581139
min 1.000000
25% 2.000000
50% 3.000000
75% 4.000000
max 5.000000
转换非常简单:
>>> for col in ('CAPTC_DIA', 'NR_COTST', 'RESG_DIA', 'VL_PATRIM_LIQ', 'VL_QUOTA', 'VL_TOTAL'):
... df[col] = pd.to_numeric(df[col])
>>> df['DT_COMPTC'] = pd.to_datetime(df['DT_COMPTC'])
>>> df.describe()
CAPTC_DIA NR_COTST RESG_DIA VL_PATRIM_LIQ VL_QUOTA VL_TOTAL \
count 5.0 5.0 5.0 5.000000e+00 5.000000 5.000000e+00
mean 0.0 1.0 0.0 1.112421e+06 25.264529 1.112655e+06
std 0.0 0.0 0.0 5.303356e+02 0.012045 6.123444e+02
min 0.0 1.0 0.0 1.111753e+06 25.249352 1.111831e+06
25% 0.0 1.0 0.0 1.112087e+06 25.256944 1.112268e+06
50% 0.0 1.0 0.0 1.112415e+06 25.264394 1.112716e+06
75% 0.0 1.0 0.0 1.112754e+06 25.272088 1.113166e+06
max 0.0 1.0 0.0 1.113097e+06 25.279868 1.113293e+06
_id
count 5.000000
mean 3.000000
std 1.581139
min 1.000000
25% 2.000000
50% 3.000000
75% 4.000000
max 5.000000
欢迎来到stackoverflow。正如目前所说,你的问题有点过于笼统。如果你更新你的问题,以表明你迄今为止已经尝试过并分享你以前在这个主题上的研究,你可能会得到更好的答案。顺便说一句,在你链接的页面上有一个Python示例(单击“API de Dados”链接并向下滚动),你对此有什么问题吗?我没有尝试任何东西,因为这是一个疑问:如何使用web链接研究/加载ckan数据集。网站示例没有显示所需的结果。需要的结果是这样一个表:如果您单击“API de Dados”链接,站点会告诉您如何加载数据集,您有什么疑问?它甚至给出了一个Python示例。请先试用,如果发现任何问题,请更新您的问题。
>>> df.describe()
_id
count 5.000000
mean 3.000000
std 1.581139
min 1.000000
25% 2.000000
50% 3.000000
75% 4.000000
max 5.000000
>>> for col in ('CAPTC_DIA', 'NR_COTST', 'RESG_DIA', 'VL_PATRIM_LIQ', 'VL_QUOTA', 'VL_TOTAL'):
... df[col] = pd.to_numeric(df[col])
>>> df['DT_COMPTC'] = pd.to_datetime(df['DT_COMPTC'])
>>> df.describe()
CAPTC_DIA NR_COTST RESG_DIA VL_PATRIM_LIQ VL_QUOTA VL_TOTAL \
count 5.0 5.0 5.0 5.000000e+00 5.000000 5.000000e+00
mean 0.0 1.0 0.0 1.112421e+06 25.264529 1.112655e+06
std 0.0 0.0 0.0 5.303356e+02 0.012045 6.123444e+02
min 0.0 1.0 0.0 1.111753e+06 25.249352 1.111831e+06
25% 0.0 1.0 0.0 1.112087e+06 25.256944 1.112268e+06
50% 0.0 1.0 0.0 1.112415e+06 25.264394 1.112716e+06
75% 0.0 1.0 0.0 1.112754e+06 25.272088 1.113166e+06
max 0.0 1.0 0.0 1.113097e+06 25.279868 1.113293e+06
_id
count 5.000000
mean 3.000000
std 1.581139
min 1.000000
25% 2.000000
50% 3.000000
75% 4.000000
max 5.000000