我正在从Police.uk的API中读取数据作为JSON文件,然后遍历该文件以将数据传递到pandas数据帧中。
我用来从JSON提取并放入DataFrame的循环进行得非常缓慢。
警察API一次只允许您下载一个月的数据。因此,我使用了一个日期列表和一个循环来下载一个月以上的数据。
代码如下。有什么办法可以改进这个循环,让它运行得更快吗?我想从API下载更多数据。
import pandas as pd
import numpy as np
import requests
import json
import matplotlib.pyplot as plt
import datetime
%matplotlib inline
plt.rcParams['figure.figsize'] = (10, 5)
#Create list of periods to download data for
periods = ['2017-03', '2017-04', '2017-05', '2017-06']
#Create empty list to store retrieved JSON data
data = []
警察 API 网址
url = 'https://data.police.uk/api/crimes-street/all-crime'
循环下载数据并追加列表
for date in periods:
parameters = {'poly': '51.6,0.06:51.6,0.2:51.5,0.2:51.5,0.062', 'date': date}
#Query API for data
response = requests.get(url, params=parameters)
data += json.loads(response.content)
print(len(data))
创建空数据框
df = pd.DataFrame()
============================================
---这是运行很慢的部分-----
将JSON文件中的相关部分提取到Dataframe中
for i in range(len(data)):
df.loc[i, 'id'] = data[i]['id']
df.loc[i, 'category'] = data[i]['category']
df.loc[i, 'month'] = data[i]['month']
df.loc[i, 'latitude'] = data[i]['location']['latitude']
df.loc[i, 'longitude'] = data[i]['location']['longitude']
==============================================
相关分类