将API调用转换为具有列中所选属性的csv文件

时间:2018-02-27 10:47:13

标签: python python-2.7 csv

我可以通过以下链接访问公共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文件中。 With following属性应该是csv文件中的列:
•纬度(提示:处理,坐标属性中的第一个条目为Lat)
•经度(提示:处理,坐标属性中的第二个条目为经度)
•标题:这应该包括地震描述
•地点:地震的位置
•Mag:地震的大小

然后转换为Pandas数据帧

1 个答案:

答案 0 :(得分:0)

您可以使用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更改了以CSV格式请求数据的网址,pd.read_csv()接受了数据的网址。 usecols选择要保留的列。

CSV文件不包含title列,但该列似乎由幅度和位置列组成,因此,尽管您可能希望避免添加重复数据,但可以将其构造并附加到数据帧如下:

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

还有一个pd.read_json() Pandas功能,但是我无法轻松实现它。如果你能搞清楚,那么你应该能够提取所需的数据,而无需手动编写标题栏。