我有一个大的数据集,我必须转换成.csv格式,我有29列和超过一百万行。我使用python和pandas dataframe来处理这个工作。我想,随着数据帧越来越大,向其添加任何行会越来越耗时。我想知道有没有更快的方法,分享代码中的相关片段。在
不过,欢迎提出任何建议。在
df = DataFrame()
for startID in range(0, 100000, 1000):
s1 = time.time()
tempdf = DataFrame()
url = f'https://******/products?startId={startID}&size=1000'
r = requests.get(url, headers={'****-Token': 'xxxxxx', 'Merchant-Id': '****'})
jsonList = r.json() # datatype= list, contains= dict
normalized = json_normalize(jsonList)
# type(normal) = pandas.DataFrame
print(startID / 1000) # status indicator
for series in normalized.iterrows():
series = series[1] # iterrows returns tuple (index, series)
offers = series['offers']
series = series.drop(columns='offers')
length = len(offers)
for offer in offers:
n = json_normalize(offer).squeeze() # squeeze() casts DataFrame into Series
concatinated = concat([series, n]).to_frame().transpose()
tempdf = tempdf.append(concatinated, ignore_index=True)
del normalized
df = df.append(tempdf)
f1 = time.time()
print(f1 - s1, ' seconds')
df.to_csv('out.csv')
正如MohitMotwani所建议的,最快的方法是将数据收集到字典中,然后将所有数据加载到数据帧中。以下是一些速度测量示例:
创建字典并最终加载到数据帧中的度量
^{pr2}$执行时间=0.090153秒
在列表中追加数据和在数据帧中附加数据的措施:
执行时间=4.183921秒
附加数据帧的测量:
执行时间=11.085888秒
使用loc测量插入数据:
执行时间=21.029176秒
相关问题 更多 >
编程相关推荐