我在处理大型CSV文件时遇到Python代码问题。你知道吗
基本上,代码输入一个CSV文件并输出另一个CSV文件和一些数学计算。输入文件非常大(大约300000行)。问题是,当我运行代码时,Python会在一段时间后自动停止。当我按下Ctrl+C时,代码再次开始运行。(代码运行大约需要7分钟)
我确信代码没有错,因为当CSV文件变小时,代码运行正常。此问题仅在文件较大时发生。在整个执行过程中按Ctrl+C几次将正确生成输出文件。整个过程中也没有错误消息。你知道吗
虽然文件很大,但还不够大,以至于Python无法处理它。我用的是windows10,python3.7.1,我的计算机内存是16GB。运行代码时CPU和内存使用率未达到最大值。你知道吗
import pandas as pd
import numpy as np
import black_scholes as bs
from datetime import date
import time
import glob
t0 = time.time()
## Initiate all the steps
def start():
global df,bs_list,errors
global r
files = glob.glob('./*.csv')
print(files)
for name in files:
t0 = time.time()
df = open_file(name[2:])
print(name[2:])
#df['DTE'] = df.apply(calc.time, axis=1)
df['DTE'] = np.vectorize(calc.dte)(df['DataDate'],df['Expiration'])
print('DTE column ... done')
r = calc.fed_rate(df.loc[10]['DataDate'][:10])
print('R calc ... done')
bs_list,errors = [],[]
#df['IV'] = df.apply(add.iv,axis=1)
df['IV'] = np.vectorize(add.iv) (df['Bid'],df['Ask'],df['Strike'],df['UnderlyingPrice'],df['DTE'],df['Type'])
print('IV calc ... done')
df['Delta'],df['Gamma'],df['Theta'],df['Vega'] = np.vectorize(add.greeks)(df['IV'],df['Bid'],df['Ask'],df['Strike'],df['UnderlyingPrice'],df['DTE'],df['Type'])
create_file(name[2:-4]+'_edited.csv',df)
print(name[2:-4]+'_edited.csv'+' ... Addition successful')
t1 = time.time()
total = t1-t0
print(total)
## Open .csv file using pandas
def open_file(filename):
df = pd.read_csv(filename)
df.columns = df.columns.str.replace(' ', '')
return df
def create_file(filename,df):
df.to_csv(filename, encoding='utf-8', index=False)
class calc:
## Calculate the DTE of all options
def dte(DataDate,Expiration):
start,end = DataDate[:10],Expiration
start,end = start.split('/'),end.split('/')
d0 = date(int(start[2]),int(start[0]),int(start[1]))
d1 = date(int(end[2]),int(end[0]),int(end[1]))
delta = d1 - d0
return delta.days
## Finds the risk-free interest rate of that day
def fed_rate(date):
file = pd.read_csv('fed_rate.csv')
date = date.split('/')
date[0] = date[0].replace('0','')
date[1] = date[1].replace('0','')
for index, row in file.iterrows():
fed_date = row['THE_DATE']
fed_date = fed_date.split('/')
if fed_date[2] == date[2] and fed_date[0] == date[0]:
return row['FEDFUNDS']
class add:
## Calculate IV of each option
def iv(bid,ask,strike,price,dte,c_p):
try:
bid,ask,strike,price,dte = float(bid),float(ask),float(strike),float(price),float(dte)
if bid <= 0.1:
return 0
elif ask <= 0.1:
return 0
option_price = (bid+ask)/2
bs_list.append([price,dte/365,strike,r/100,option_price,0])
print(len(bs_list))
if len(bs_list) == 100064 or len(bs_list) == 100065:
print(bs_list[-1])
if c_p == 'call':
iv = bs.call.vol(price,dte/365,strike,r/100,option_price,0)
elif c_p == 'put':
iv = bs.put.vol(price,dte/365,strike,r/100,option_price,0)
except:
try:
errors.append(['iv',price,dte/365,strike,r/100,option_price,0])
except:
pass
return 0
return iv
## Add Greeks to file
def greeks(iv,bid,ask,strike,price,dte,c_p):
if iv == 0:
return 0,0,0,0
try:
## Delta
if c_p == 'call':
delta = bs.greeks.delta(float(price),dte/365,float(strike),r/100,iv,0,'c')
elif c_p == 'put':
delta = bs.greeks.delta(float(price),dte/365,float(strike),r/100,iv,0,'p')
## Gamma
gamma = bs.greeks.gamma(float(price),dte/365,float(strike),r/100,iv,0)
## Theta
if c_p == 'call':
theta = bs.greeks.theta(float(price),dte/365,float(strike),r/100,iv,0,'c')
elif c_p == 'put':
theta = bs.greeks.theta(float(price),dte/365,float(strike),r/100,iv,0,'p')
## Vega
vega = bs.greeks.vega(float(price),dte/365,float(strike),r/100,iv,0)
except:
errors.append(['greeks',float(price),dte/365,float(strike),r/100,iv,0])
return 0
return delta,gamma,theta,vega
你知道这是什么问题吗?任何帮助都将不胜感激。谢谢!你知道吗
有时Windows似乎会停止长时间运行程序的程序执行,让其他任务运行。我以前在C++中遇到过类似的事情(也在Windows 10上),所以这看起来只是Windows行为。你知道吗
类似的行为被发现here。你知道吗
如果你在Windows上,你必须注意“快速编辑模式”。这使得你的终端将“暂停”如果你点击它。您可以按Ctrl+C键继续,也可以按任意键继续。你知道吗
您可以通过右键单击shell的顶部栏(同时适用于cmd和powershell)将其关闭,然后转到“属性”并取消选中“快速编辑模式”。如果它在默认情况下是关闭的,那就太好了,因为这是一个功能,如果一个人在不知情的情况下被抓到,就会把他逼到精神错乱的边缘。你知道吗
这可能是你的问题,也可能不是你的问题,因为像这样的系统问题显然是不可复制的,所以我无法验证。你知道吗
不过,不是你就是“快速编辑模式”的下一个受害者。你知道吗
更多信息here。你知道吗
相关问题 更多 >
编程相关推荐