Python 加载数据集

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

我对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-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”}}”

    我需要这样的结果

  • 从web加载CKAN数据集
  • 您链接的网站在链接“API de Dados”中有一个Python示例:

  • 将此数据集转换为数据帧
  • 像处理任何JSON数据集一样,解析它并在数据帧中加载(这里没有任何特定于ckan的内容):

    我需要在ckan网站上注册以查询数据

    你不需要在你链接的网站上注册,我可以在不注册的情况下检索数据。我更喜欢使用
    请求
    库:

    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