【问题标题】:Python script dow download JSON data and save as/convert to CSVPython 脚本下载 JSON 数据并另存为/转换为 CSV
【发布时间】:2021-04-06 01:25:51
【问题描述】:

我无法以 JSON 格式下载数据并将其转换为 csv 文件。在这种情况下,它是来自 alphavantage(https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo) 的公司概览数据

我可以使用以下脚本下载数据:

import requests
import pathlib

solditems = requests.get('https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo') # (your url)
pathlib.Path('data2.json').write_bytes(solditems.content)

然后我必须以 json 格式在本地驱动器上存储数据。但后来我尝试将 JSON 转换为 CSV,到目前为止,不同的方法对我来说都失败了。我用 pandas (https://datatofish.com/json-string-to-csv-python/) 或这个 (https://medium.com/@gabrielpires/how-to-convert-a-json-file-to-csv-python-script-a9ff0a3f906e) 尝试了这种方法,但我无法使用任何方法。最好的方法是什么?我想要一个 2 行的 CSV 文件。第一行是 Symbol、Name、Decritpion 等键,第二行是值。

我只需要一个基本脚本即可下载 JSON 数据并将其转换为 CSV 文件。所以我可以参数化它并围绕这个过程建立一个循环。但是我卡住了

【问题讨论】:

    标签: python json csv


    【解决方案1】:

    Pandas 确实有一个 json_normalize 方法可以做到这一点。或者,另一个选项是您可以从 json(字典)构造数据框,只要每个字典都在一个列表中,其中表中的每一行都由列表中的每个元素表示。

    另外请注意,您可以在请求中使用.json() 立即存储。无需写入本地文件,然后转换为 csv。

    import requests
    import pandas as pd
    
    solditems = requests.get('https://www.alphavantage.co/query?function=OVERVIEW&symbol=IBM&apikey=demo').json() # (your url)
    
    df = pd.json_normalize(solditems)
    df.to_csv('data.csv', index=False) 
    

    或者使用单个字典:

    df = pd.DataFrame([solditems])
    

    输出:

    print(df)
      Symbol     AssetType  ... LastSplitFactor LastSplitDate
    0    IBM  Common Stock  ...             2:1    1999-05-27
    
    [1 rows x 60 columns]
    

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多