簡體   English   中英

Alpha Vantage API 數據是什么樣的 JSON 結構,如何將其轉換為 pandas dataframe?

[英]What kind of JSON structure is the Alpha Vantage API data, and how to convert it to a pandas dataframe?

我有一個在 Google Colab 筆記本上工作的 Alpha Vantage API 演示,我正在嘗試將該數據響應轉換為 pandas dataframe。

但是,我不清楚 JSON 數據結構是什么,這使得很難找到正確的 python 代碼。

這是有效的演示代碼:

import requests
import pandas as pd
import json

# replace the "demo" apikey below with your own key from https://www.alphavantage.co/support/#api-key
url = 'https://www.alphavantage.co/query?function=CRYPTO_INTRADAY&symbol=ETH&market=USD&interval=15min&apikey=demo'
r = requests.get(url)
data = r.json()

print(data)

這是它返回的數據示例:

{'Meta Data': {'1. Information': 'Crypto Intraday (15min) Time Series', '2. Digital Currency Code': 'ETH', '3. Digital Currency Name': 'Ethereum', '4. Market Code': 'USD', '5. Market Name': 'United States Dollar', '6. Last Refreshed': '2022-02-10 04:00:00', '7. Interval': '15min', '8. Output Size': 'Compact', '9. Time Zone': 'UTC'}, 'Time Series Crypto (15min)': {'2022-02-10 04:00:00': {'1. open': '3179.59000', '2. high': '3180.47000', '3. low': '3173.82000', '4. close': '3175.86000', '5. volume': 1031}, '2022-02-10 03:45:00': {'1. open': '3180.39000', '2. high': '3183.52000', '3. low': '3176.24000', '4. close': '3179.60000', '5. volume': 1924}, '2022-02-10 03:30:00': {'1. open': '3185.17000', '2. high': '3188.40000', '3. low': '3179.04000', '4. close': '3180.40000', '5. volume': 2018}, '2022-02-10 03:15:00': {'1. open': '3177.58000', '2. high': '3186.24000', '3. low': '3175.01000', '4. close': '3185.17000', '5. volume': 2376}, '2022-02-10 03:00:00': {'1. open': '3186.58000', '2. high': '3189.99000', '3. low': '3170.87000', '4. close': '3177.58000', '5. volume': 6907}, '2022-02-10 02:45:00': {'1. open': '3221.54000', '2. high': '3224.80000', '3. low': '3184.01000', '4. close': '3186.58000', '5. volume': 8794}, '2022-02-10 02:30:00': {'1. open': '3228.30000', '2. high': '3229.00000', '3. low': '3220.00000', '4. close': '3221.53000', '5. volume': 1552}, '2022-02-10 02:15:00': {'1. open': '3225.79000', '2. high': '3228.58000', '3. low': '3220.86000', '4. close': '3228.29000', '5. volume': 1852}, '2022-02-10 02:00:00': {'1. open': '3224.28000', '2. high': '3229.26000', '3. low': '3215.67000', '4. close': '3225.80000', '5. volume': 2698}, '2022-02-10 01:45:00': {'1. open': '3225.74000', '2. high': '3228.92000', '3. low': '3219.29000', '4. close': '3224.27000', '5. volume': 1529}, '2022-02-10 01:30:00': {'1. open': '3214.24000', '2. high': '3227.95000', '3. low': '3207.18000', '4. close': '3225.73000', '5. volume': 2239}, '2022-02-10 01:15:00': {'1. open': '3225.78000', '2. high': '3227.94000', '3. low': '3213.00000', '4. close': '3214.23000', '5. volume': 1930}, '2022-02-10 01:00:00': {'1. open': '3220.08000', '2. high': '3225.99000', '3. low': '3217.40000', '4. close': '3225.78000', '5. volume': 2333}, '2022-02-10 00:45:00': {'1. open': '3221.87000', '2. high': '3224.36000', '3. low': '3213.58000', '4. close': '3220.09000', '5. volume': 1912}, '2022-02-10 00:30:00': {'1. open': '3224.74000', '2. high': '3229.21000', '3. low': '3220.03000', '4. close': '3221.87000', '5. volume': 2299}, '2022-02-10 00:15:00': {'1. open': '3235.70000', '2. high': '3235.82000', '3. low': '3211.27000', '4. close': '3224.74000', '5. volume': 5900}, '2022-02-10 00:00:00': {'1. open': '3243.60000', '2. high': '3248.98000', '3. low': '3233.08000', '4. close': '3235.71000', '5. volume': 3388}, '2022-02-09 23:45:00': {'1. open': '3234.46000', '2. high': '3244.75000', '3. low': '3232.95000', '4. close': '3243.94000', '5. volume': 3475}, '2022-02-09 23:30:00': {'1. open': '3236.47000', '2. high': '3240.00000', '3. low': '3231.41000', '4. close': '3234.82000', '5. volume': 2475}, '2022-02-09 23:15:00': {'1. open': '3242.38000', '2. high': '3245.76000', '3. low': '3232.13000', '4. close': '3236.62000', '5. volume': 2145}, '2022-02-09 23:00:00': {'1. open': '3251.01000', '2. high': '3251.03000', '3. low': '3239.50000', '4. close': '3242.37000', '5. volume': 2438}, '2022-02-09 22:45:00': {'1. open': '3242.50000', '2. high': '3254.57000', '3. low': '3241.18000', '4. close': '3251.02000', '5. volume': 1700}, '2022-02-09 22:30:00': {'1. open': '3233.52000', '2. high': '3245.39000', '3. low': '3232.34000', '4. close': '3242.50000', '5. volume': 1597}, '2022-02-09 22:15:00': {'1. open': '3237.01000', '2. high': '3245.59000', '3. low': '3230.83000', '4. close': '3233.53000', '5. volume': 2708}, '2022-02-09 22:00:00': {'1. open': '3236.09000', '2. high': '3247.00000', '3. low': '3234.70000', '4. close': '3236.85000', '5. volume': 3090}, '2022-02-09 21:45:00': {'1. open': '3249.00000', '2. high': '3249.99000', '3. low': '3234.64000', '4. close': '3236.08000', '5. volume': 3263}, '2022-02-09 21:30:00': {'1. open': '3253.56000', '2. high': '3256.00000', '3. low': '3247.01000', '4. close': '3249.01000', '5. volume': 2060}, '2022-02-09 21:15:00': {'1. open': '3254.33000', '2. high': '3256.80000', '3. low': '3245.05000', '4. close': '3253.56000', '5. volume': 1957}, '2022-02-09 21:00:00': {'1. open': '3258.74000', '2. high': '3261.22000', '3. low': '3248.37000', '4. close': '3254.34000', '5. volume': 4320}, '2022-02-09 20:45:00': {'1. open': '3259.41000', '2. high': '3263.21000', '3. low': '3250.30000', '4. close': '3258.74000', '5. volume': 4215}, '2022-02-09 20:30:00': {'1. open': '3260.67000', '2. high': '3269.70000', '3. low': '3253.49000', '4. close': '3259.42000', '5. volume': 5505}, '2022-02-09 20:15:00': {'1. open': '3244.45000', '2. high': '3264.97000', '3. low': '3240.60000', '4. close': '3260.67000', '5. volume': 4368}, '2022-02-09 20:00:00': {'1. open': '3246.94000', '2. high': '3260.75000', '3. low': '3244.41000', '4. close': '3244.41000', '5. volume': 4653}, '2022-02-09 19:45:00': {'1. open': '3250.72000', '2. high': '3256.63000', '3. low': '3243.77000', '4. close': '3246.94000', '5. volume': 3484}, '2022-02-09 19:30:00': {'1. open': '3247.01000', '2. high': '3258.00000', '3. low': '3237.17000', '4. close': '3250.72000', '5. volume': 5654}, '2022-02-09 19:15:00': {'1. open': '3226.37000', '2. high': '3254.00000', '3. low': '3220.07000', '4. close': '3247.01000', '5. volume': 10292}, '2022-02-09 19:00:00': {'1. open': '3210.13000', '2. high': '3238.50000', '3. low': '3207.01000', '4. close': '3226.38000', '5. volume': 10794}, '2022-02-09 18:45:00': {'1. open': '3204.34000', '2. high': '3210.99000', '3. low': '3197.89000', '4. close': '3210.13000', '5. volume': 2054}, '2022-02-09 18:30:00': {'1. open': '3193.03000', '2. high': '3205.00000', '3. low': '3187.13000', '4. close': '3204.35000', '5. volume': 2349}, '2022-02-09 18:15:00': {'1. open': '3193.37000', '2. high': '3200.56000', '3. low': '3183.02000', '4. close': '3193.00000', '5. volume': 2203}, '2022-02-09 18:00:00': {'1. open': '3199.76000', '2. high': '3204.07000', '3. low': '3191.63000', '4. close': '3193.76000', '5. volume': 1864}, '2022-02-09 17:45:00': {'1. open': '3203.52000', '2. high': '3207.57000', '3. low': '3192.66000', '4. close': '3199.76000', '5. volume': 2315}, '2022-02-09 17:30:00': {'1. open': '3206.02000', '2. high': '3211.36000', '3. low': '3196.97000', '4. close': '3203.52000', '5. volume': 3534}, '2022-02-09 17:15:00': {'1. open': '3205.73000', '2. high': '3217.69000', '3. low': '3205.73000', '4. close': '3206.01000', '5. volume': 3901}, '2022-02-09 17:00:00': {'1. open': '3202.95000', '2. high': '3208.80000', '3. low': '3198.49000', '4. close': '3205.74000', '5. volume': 3619}, '2022-02-09 16:45:00': {'1. open': '3193.45000', '2. high': '3212.28000', '3. low': '3193.06000', '4. close': '3202.95000', '5. volume': 6311}, '2022-02-09 16:30:00': {'1. open': '3183.83000', '2. high': '3194.75000', '3. low': '3179.19000', '4. close': '3193.46000', '5. volume': 3741}, '2022-02-09 16:15:00': {'1. open': '3172.45000', '2. high': '3189.38000', '3. low': '3169.50000', '4. close': '3183.83000', '5. volume': 2725}, '2022-02-09 16:00:00': {'1. open': '3178.44000', '2. high': '3195.00000', '3. low': '3163.02000', '4. close': '3172.45000', '5. volume': 10011}, '2022-02-09 15:45:00': {'1. open': '3166.00000', '2. high': '3179.80000', '3. low': '3165.78000', '4. close': '3178.45000', '5. volume': 2626}, '2022-02-09 15:30:00': {'1. open': '3177.69000', '2. high': '3184.61000', '3. low': '3152.44000', '4. close': '3166.00000', '5. volume': 7079}, '2022-02-09 15:15:00': {'1. open': '3181.27000', '2. high': '3181.50000', '3. low': '3166.54000', '4. close': '3177.68000', '5. volume': 4888}, '2022-02-09 15:00:00': {'1. open': '3188.49000', '2. high': '3200.91000', '3. low': '3179.47000', '4. close': '3181.27000', '5. volume': 3970}, '2022-02-09 14:45:00': {'1. open': '3202.56000', '2. high': '3209.75000', '3. low': '3188.00000', '4. close': '3188.50000', '5. volume': 5743}, '2022-02-09 14:30:00': {'1. open': '3186.82000', '2. high': '3216.99000', '3. low': '3182.91000', '4. close': '3202.61000', '5. volume': 6893}, '2022-02-09 14:15:00': {'1. open': '3179.02000', '2. high': '3190.91000', '3. low': '3171.48000', '4. close': '3186.83000', '5. volume': 2638}, '2022-02-09 14:00:00': {'1. open': '3180.69000', '2. high': '3186.70000', '3. low': '3161.62000', '4. close': '3179.01000', '5. volume': 5528}, '2022-02-09 13:45:00': {'1. open': '3198.63000', '2. high': '3202.50000', '3. low': '3179.34000', '4. close': '3180.94000', '5. volume': 5184}, '2022-02-09 13:30:00': {'1. open': '3198.74000', '2. high': '3204.45000', '3. low': '3186.76000', '4. close': '3198.64000', '5. volume': 4447}, '2022-02-09 13:15:00': {'1. open': '3200.08000', '2. high': '3206.00000', '3. low': '3191.43000', '4. close': '3198.74000', '5. volume': 7063}, '2022-02-09 13:00:00': {'1. open': '3181.70000', '2. high': '3207.99000', '3. low': '3174.43000', '4. close': '3200.07000', '5. volume': 9626}, '2022-02-09 12:45:00': {'1. open': '3190.59000', '2. high': '3193.53000', '3. low': '3174.70000', '4. close': '3181.49000', '5. volume': 5283}, '2022-02-09 12:30:00': {'1. open': '3154.62000', '2. high': '3192.78000', '3. low': '3151.18000', '4. close': '3190.59000', '5. volume': 11267}, '2022-02-09 12:15:00': {'1. open': '3154.60000', '2. high': '3159.75000', '3. low': '3150.14000', '4. close': '3154.62000', '5. volume': 3160}, '2022-02-09 12:00:00': {'1. open': '3152.89000', '2. high': '3158.83000', '3. low': '3140.00000', '4. close': '3154.61000', '5. volume': 5264}, '2022-02-09 11:45:00': {'1. open': '3139.54000', '2. high': '3158.37000', '3. low': '3139.37000', '4. close': '3152.89000', '5. volume': 5061}, '2022-02-09 11:30:00': {'1. open': '3138.69000', '2. high': '3146.00000', '3. low': '3134.57000', '4. close': '3139.53000', '5. volume': 4378}, '2022-02-09 11:15:00': {'1. open': '3126.04000', '2. high': '3139.87000', '3. low': '3124.39000', '4. close': '3138.70000', '5. volume': 3621}, '2022-02-09 11:00:00': {'1. open': '3136.30000', '2. high': '3142.33000', '3. low': '3119.04000', '4. close': '3126.04000', '5. volume': 3827}, '2022-02-09 10:45:00': {'1. open': '3131.03000', '2. high': '3137.00000', '3. low': '3123.14000', '4. close': '3136.30000', '5. volume': 3638}, '2022-02-09 10:30:00': {'1. open': '3135.25000', '2. high': '3142.97000', '3. low': '3127.20000', '4. close': '3131.02000', '5. volume': 3903}, '2022-02-09 10:15:00': {'1. open': '3123.50000', '2. high': '3143.83000', '3. low': '3118.56000', '4. close': '3135.24000', '5. volume': 6848}, '2022-02-09 10:00:00': {'1. open': '3099.46000', '2. high': '3128.43000', '3. low': '3099.11000', '4. close': '3123.50000', '5. volume': 5342}, '2022-02-09 09:45:00': {'1. open': '3105.92000', '2. high': '3111.37000', '3. low': '3096.00000', '4. close': '3099.21000', '5. volume': 2038}, '2022-02-09 09:30:00': {'1. open': '3109.85000', '2. high': '3115.96000', '3. low': '3091.92000', '4. close': '3105.93000', '5. volume': 3369}, '2022-02-09 09:15:00': {'1. open': '3110.20000', '2. high': '3116.00000', '3. low': '3105.85000', '4. close': '3109.83000', '5. volume': 2234}, '2022-02-09 09:00:00': {'1. open': '3094.09000', '2. high': '3115.00000', '3. low': '3094.09000', '4. close': '3110.21000', '5. volume': 5781}, '2022-02-09 08:45:00': {'1. open': '3081.81000', '2. high': '3099.51000', '3. low': '3081.43000', '4. close': '3094.10000', '5. volume': 2801}, '2022-02-09 08:30:00': {'1. open': '3079.49000', '2. high': '3084.93000', '3. low': '3069.00000', '4. close': '3081.81000', '5. volume': 2372}, '2022-02-09 08:15:00': {'1. open': '3097.48000', '2. high': '3103.96000', '3. low': '3069.61000', '4. close': '3079.48000', '5. volume': 5602}, '2022-02-09 08:00:00': {'1. open': '3105.93000', '2. high': '3113.69000', '3. low': '3094.51000', '4. close': '3097.49000', '5. volume': 2361}, '2022-02-09 07:45:00': {'1. open': '3088.19000', '2. high': '3112.61000', '3. low': '3087.68000', '4. close': '3105.93000', '5. volume': 3146}, '2022-02-09 07:30:00': {'1. open': '3087.07000', '2. high': '3091.80000', '3. low': '3079.69000', '4. close': '3088.16000', '5. volume': 2029}, '2022-02-09 07:15:00': {'1. open': '3101.27000', '2. high': '3101.34000', '3. low': '3085.87000', '4. close': '3087.07000', '5. volume': 2136}, '2022-02-09 07:00:00': {'1. open': '3099.93000', '2. high': '3106.57000', '3. low': '3092.94000', '4. close': '3101.26000', '5. volume': 2478}, '2022-02-09 06:45:00': {'1. open': '3101.43000', '2. high': '3107.29000', '3. low': '3098.00000', '4. close': '3099.93000', '5. volume': 2642}, '2022-02-09 06:30:00': {'1. open': '3091.52000', '2. high': '3105.41000', '3. low': '3089.74000', '4. close': '3101.49000', '5. volume': 2442}, '2022-02-09 06:15:00': {'1. open': '3087.91000', '2. high': '3099.99000', '3. low': '3085.49000', '4. close': '3091.52000', '5. volume': 1486}, '2022-02-09 06:00:00': {'1. open': '3089.75000', '2. high': '3096.00000', '3. low': '3084.43000', '4. close': '3087.90000', '5. volume': 2402}, '2022-02-09 05:45:00': {'1. open': '3100.22000', '2. high': '3106.40000', '3. low': '3087.84000', '4. close': '3089.75000', '5. volume': 3642}, '2022-02-09 05:30:00': {'1. open': '3072.85000', '2. high': '3101.64000', '3. low': '3071.27000', '4. close': '3100.23000', '5. volume': 3586}, '2022-02-09 05:15:00': {'1. open': '3066.72000', '2. high': '3074.87000', '3. low': '3055.00000', '4. close': '3072.85000', '5. volume': 2808}, '2022-02-09 05:00:00': {'1. open': '3080.40000', '2. high': '3084.02000', '3. low': '3057.68000', '4. close': '3066.72000', '5. volume': 4779}, '2022-02-09 04:45:00': {'1. open': '3085.53000', '2. high': '3094.37000', '3. low': '3079.70000', '4. close': '3080.41000', '5. volume': 2142}, '2022-02-09 04:30:00': {'1. open': '3083.75000', '2. high': '3088.77000', '3. low': '3078.20000', '4. close': '3085.53000', '5. volume': 1813}, '2022-02-09 04:15:00': {'1. open': '3089.00000', '2. high': '3091.52000', '3. low': '3081.56000', '4. close': '3083.67000', '5. volume': 1639}, '2022-02-09 04:00:00': {'1. open': '3076.52000', '2. high': '3090.13000', '3. low': '3075.04000', '4. close': '3089.00000', '5. volume': 2153}, '2022-02-09 03:45:00': {'1. open': '3074.50000', '2. high': '3078.82000', '3. low': '3072.34000', '4. close': '3076.52000', '5. volume': 1178}, '2022-02-09 03:30:00': {'1. open': '3079.31000', '2. high': '3084.81000', '3. low': '3073.05000', '4. close': '3074.49000', '5. volume': 1746}, '2022-02-09 03:15:00': {'1. open': '3073.70000', '2. high': '3081.01000', '3. low': '3073.70000', '4. close': '3079.32000', '5. volume': 2243}}}

我運行這段代碼來嘗試將該響應放入 dataframe:

df = pd.DataFrame(data["Time Series (15min)"])
df = df.T  # Transpose Dataframe for desired results

我的理解是數據響應是一個 JSON 字典數據結構,但是產生了這個錯誤信息:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-9-ba79690310fb> in <module>()
----> 1 df = pd.DataFrame(data["Time Series (15min)"])
      2 df = df.T  # Transpose Dataframe for desired results

KeyError: 'Time Series (15min)'

我不明白錯誤消息,但我認為它一定是來自 pandas 而不是 AlphaVantage API,盡管我還沒有找到任何關於我應該使用什么而不是"Time Series (15min)"的明確信息"Time Series (15min)"

非常感謝有關如何處理此問題的任何意見。

您沒有使用正確的密鑰:它不是Time Series (15min)而是Time Series Crypto (15min)

df = pd.DataFrame(data["Time Series Crypto (15min)"]).T
print(df)

# Output
                        1. open     2. high      3. low    4. close 5. volume
2022-02-10 04:00:00  3179.59000  3180.47000  3173.82000  3175.86000      1031
2022-02-10 03:45:00  3180.39000  3183.52000  3176.24000  3179.60000      1924
2022-02-10 03:30:00  3185.17000  3188.40000  3179.04000  3180.40000      2018
2022-02-10 03:15:00  3177.58000  3186.24000  3175.01000  3185.17000      2376
2022-02-10 03:00:00  3186.58000  3189.99000  3170.87000  3177.58000      6907
...                         ...         ...         ...         ...       ...
2022-02-09 04:15:00  3089.00000  3091.52000  3081.56000  3083.67000      1639
2022-02-09 04:00:00  3076.52000  3090.13000  3075.04000  3089.00000      2153
2022-02-09 03:45:00  3074.50000  3078.82000  3072.34000  3076.52000      1178
2022-02-09 03:30:00  3079.31000  3084.81000  3073.05000  3074.49000      1746
2022-02-09 03:15:00  3073.70000  3081.01000  3073.70000  3079.32000      2243

[100 rows x 5 columns]

獎金重命名列:

df.columns = df.columns.str.split().str[1].str.capitalize()
print(df)

# Output
                           Open        High         Low       Close Volume
2022-02-10 04:00:00  3179.59000  3180.47000  3173.82000  3175.86000   1031
2022-02-10 03:45:00  3180.39000  3183.52000  3176.24000  3179.60000   1924
2022-02-10 03:30:00  3185.17000  3188.40000  3179.04000  3180.40000   2018
2022-02-10 03:15:00  3177.58000  3186.24000  3175.01000  3185.17000   2376
2022-02-10 03:00:00  3186.58000  3189.99000  3170.87000  3177.58000   6907
...                         ...         ...         ...         ...    ...
2022-02-09 04:15:00  3089.00000  3091.52000  3081.56000  3083.67000   1639
2022-02-09 04:00:00  3076.52000  3090.13000  3075.04000  3089.00000   2153
2022-02-09 03:45:00  3074.50000  3078.82000  3072.34000  3076.52000   1178
2022-02-09 03:30:00  3079.31000  3084.81000  3073.05000  3074.49000   1746
2022-02-09 03:15:00  3073.70000  3081.01000  3073.70000  3079.32000   2243

[100 rows x 5 columns]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM