python - 我无法正确地从 api 可视化 json 数据框
问题描述
我目前正在尝试从公共 API 读取一些数据。它有不同的读取方式(json、csv、txt等),只需更改url中的标签(/json、/csv、/txt ...)。网址如下:
https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01210PM/csv/ https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01210PM/json/ ...
我的问题是,当尝试导入 Pandas 数据框时,它没有正确读取数据。我正在尝试以下替代方案:
import pandas as pd
import requests
url = 'https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01210PM/json/'
r = requests.get(url)
rjson = r.json()
df= json_normalize(rjson)
df['periods']
我也尝试以 csv 格式读取数据:
import pandas as pd
import requests
url = 'https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01210PM/csv/'
collisions = pd.read_csv(url, sep='<br>')
collisions.head()
但是我没有得到好的结果;数据框无法正确显示,因为“周期”列与所有值分组......
输出显示如下:
所有数据显示为列:/
以下是如何正确显示数据的示例:
您建议尝试什么替代方案?
提前感谢您的时间和帮助!
我会注意你的回答,问候!
解决方案
因为csv
你可以StringIO
从io
包中使用
In [20]: import requests
In [21]: res = requests.get("https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01210PM/csv/")
In [22]: import pandas as pd
In [23]: import io
In [24]: df = pd.read_csv(io.StringIO(res.text.strip().replace("<br>","\n")), engine='python')
In [25]: df
Out[25]:
Mes/Año Tipo de cambio - promedio del periodo (S/ por US$) - Bancario - Promedio
0 Jul.2018 3.276595
1 Ago.2018 3.288071
2 Sep.2018 3.311325
3 Oct.2018 3.333909
4 Nov.2018 3.374675
5 Dic.2018 3.364026
6 Ene.2019 3.343864
7 Feb.2019 3.321475
8 Mar.2019 3.304690
9 Abr.2019 3.303825
10 May.2019 3.332364
11 Jun.2019 3.325650
12 Jul.2019 3.290214
13 Ago.2019 3.377560
14 Sep.2019 3.357357
15 Oct.2019 3.359762
16 Nov.2019 3.371700
17 Dic.2019 3.355190
18 Ene.2020 3.327364
19 Feb.2020 3.390350
20 Mar.2020 3.491364
21 Abr.2020 3.397500
22 May.2020 3.421150
23 Jun.2020 3.470167
推荐阅读
- linq - 当我从 Azure 函数而不是控制台应用程序运行 LINQ 查询时失败
- apache-spark - 修复 Spark 结构化流中的检查点
- python - 如何按两个字段分组并按日期时间排序?
- mod-rewrite - RewriteRule 否定(NOT)不起作用
- ios - 如何持久化 tableview 行?
- python - 如何使数据类更好地与 __slots__ 一起工作?
- c# - 在 C# mysql 中读取 mediumblob
- node.js - 在客户端包含 nodejs js 模块
- angular - 如何将一个可观察对象映射到另一个对象
- python - 如何在不创建填充按钮的情况下填充 QHBoxLayout 以对齐多个 QGroupBox?