如何改善Python中的循环以提高速度

我正在从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']

==============================================


MM们
浏览 148回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python