将API调用转换为列中包含选定属性的csv文件

ufj5ltwl  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(125)

我已经通过下面给出的链接访问公共API数据。

import json,urllib
import csv
data = urllib.urlopen("https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=2016-10-01&endtime=2016-10-02").read()
output = json.loads(data)
print (output)

需要帮助把获得的数据到一个csv文件.具有以下属性的应为csv文件中的列:
·纬度(提示:将坐标属性中的第一个条目视为Lat)
·经度(提示:将坐标属性中的第二个条目视为经度)
标题:应包括地震描述
地点:地震发生的地点
· Mag:地震的震级
然后转换成Pandas Dataframe

xfyts7mz

xfyts7mz1#

您可以直接使用pd.read_csv()并通过在HTTP请求中请求CSV数据来实现此操作:

import pandas as pd

url_csv = 'https://earthquake.usgs.gov/fdsnws/event/1/query?format=csv&starttime=2016-10-01&endtime=2016-10-02'
df = pd.read_csv(url_csv, usecols=['latitude', 'longitude', 'place', 'mag'])

请注意,通过设置format=csv,我更改了URL以请求CSV格式的数据,并且pd.read_csv()接受数据的URL。usecols选择要保留的那些列。
CSV文件不包含title列,但该列似乎由幅度和位置列组成,因此,尽管您可能希望避免添加重复数据,但可以如下构造它并将其附加到数据框中:

df['title'] = 'M ' + df['mag'].map(str) + ' - ' + df['place']

还有一个pd.read_json() Pandas函数,但我不能很容易地让它工作。如果你能弄清楚,那么你应该能够提取所需的数据,而不需要手动组成标题列。

35g0bw71

35g0bw712#

如果可能有帮助,我使用以下代码从源代码获取并导入Google Spreadsheet中的数据,该代码提供了一个API。
在Google Spreadsheet中输入:

=IMPORTDATA("https://{site.com}/api/{API version, eg. V3}/datasets/{page_reference_where document is in}/{name_doc}.csv?api_key={your api key}")

相关问题