如何解决使用Python中的Pandas提高处理大型csv文件的速度
我正在尝试使用以下代码下载每笔BTCUSD交易的市场数据并将其存储在csv文件中
from binance_f import RequestClient
from datetime import datetime
import pandas as pd
import time
def download():
request_client = RequestClient(api_key=x,secret_key=x)
# Get info on latest 500 trades
result = request_client.get_recent_trades_list(symbol="BTCUSDT",limit=500)
df = pd.DataFrame(columns=['Date','Price','Qty'])
for i in range(len(result)):
df = df.append({'Date': result[i].time,'Price': result[i].price,'Qty': result[i].qty},ignore_index=True)
df['Date'][i] = df['Date'][i] / 1000
df['Date'][i] = datetime.fromtimestamp(df['Date'][i])
df['Date'] = pd.to_datetime(df['Date'])
df[['Price','Qty']] = df[['Price','Qty']].apply(pd.to_numeric)
# Merge latest trades with existing file
old_df = pd.read_csv('btc_volumes')
old_df['Date'] = pd.to_datetime(old_df['Date'])
new_df=pd.concat([old_df,df]).drop_duplicates().reset_index(drop=True)
new_df.sort_values(by='Date')
new_df.to_csv('btc_volumes',index=False)
while True:
try:
download()
time.sleep(10) # 10 sec interval
except KeyboardInterrupt:
print('\n\nKeyboard exception received. Exiting.')
exit()
随着时间的流逝,csv文件的大小显然会增加,并且执行代码需要更长的时间(在180万行中大约30秒)。在处理20-30MM行的文件时,有没有办法提高代码速度并在10-20秒内降低代码速度?
谢谢!
解决方法
要更好地了解您的问题,我们需要了解哪些代码行需要很长时间。
在代码顶部添加此代码:
from datetime import datetime
并在代码的不同位置添加此“打印时间命令”,然后再次运行:
print(datetime.datetime.now().strftime("%H:%M:%S"))
如果问题在于保存CSV,则大块保存可能会有所帮助。试试这个:
stage.to_csv('btc_volumes.csv',index=False,chunksize=100000)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。