在Python中将JSON转换为数据帧?

2024-10-04 09:26:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将JSON转换为数据帧。我试图获取有关股票的每日信息,并将其转换为数据帧,以便将其转换为图形进行分析

    "Meta Data": {
        "1. Information": "Daily Prices (open, high, low, close) and Volumes",
        "2. Symbol": "^BVSP",
        "3. Last Refreshed": "2020-04-03",
        "4. Output Size": "Compact",
        "5. Time Zone": "US/Eastern"
    },
    "Time Series (Daily)": {
        "2020-04-03": {
            "1. open": "72241.0000",
            "2. high": "72241.0000",
            "3. low": "67802.0000",
            "4. close": "69538.0000",
            "5. volume": "10411300"
        },
        "2020-04-02": {
            "1. open": "70969.0000",
            "2. high": "73861.0000",
            "3. low": "70957.0000",
            "4. close": "72253.0000",
            "5. volume": "10540200"
        },
        "2020-04-01": {
            "1. open": "73011.0000",
            "2. high": "73011.0000",
            "3. low": "69569.0000",
            "4. close": "70967.0000",
            "5. volume": "10093500"
        }

这是我从API获取的JSON文件的一部分。当前我的代码如下所示:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

response_ibov = requests.get("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=^BVSP&apikey=XXX")
url = "https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=^BVSP&apikey=XXX"
r = requests.get(url, headers={'open': 'close'})
data_ibov = pd.DataFrame(r.json())

我想这样组织 列标题=打开、高、低、关闭、卷 行=日期

有人知道怎么做吗

提前谢谢


Tags: 数据importjsonclosetimeasopenrequests
1条回答
网友
1楼 · 发布于 2024-10-04 09:26:45

以下是我使用熊猫提出的答案:

#Your code
response_ibov = requests.get("https://www.alphavantage.co/query? 
function=TIME_SERIES_DAILY&symbol=^BVSP&apikey=XXX")
url = "https://www.alphavantage.co/query? 
function=TIME_SERIES_DAILY&symbol=^BVSP&apikey=XXX"
r = requests.get(url, headers={'open': 'close'})

# Use pandas from_dict function to get Time Series only
# orient = index to get correct form of dataframe
df = pd.DataFrame.from_dict(r.json()["Time Series (Daily)"],orient='index')

# In case you want to change column names
#df.columns = ['Open','High','Low','Close','Volume']

print(df)

            1. open      2. high      3. low       4. close      5. volume
2019-11-06  108719.0000  109633.0000  107446.0000  108336.0000   5505500
2019-11-07  108360.0000  109672.0000  108360.0000  109581.0000   6075600
2019-11-08  109572.0000  109572.0000  107127.0000  107629.0000   5419600
2019-11-11  107622.0000  108263.0000  106814.0000  108215.0000   3928900
2019-11-12  108368.0000  108368.0000  106232.0000  106785.0000   5219300

相关问题 更多 >