Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何在for循环中保存两个csv文件_Python_Python 2.7_Csv_Finance_Quantitative Finance - Fatal编程技术网

Python:如何在for循环中保存两个csv文件

Python:如何在for循环中保存两个csv文件,python,python-2.7,csv,finance,quantitative-finance,Python,Python 2.7,Csv,Finance,Quantitative Finance,我试图以更好的方式保存我的股票分析结果。有两种方法可以将我的分析保存在csv中(任何一种都可以) 将第1部分动量分析和第2部分MACD分析保存在csv文件中。两种分析仅在一行中进行。示例:AAPL,动量,250.45,有效,无交叉,MACD高于0 使用标题将第1部分和第2部分保存在单独的csv文件中。然后将两个csv合并到一个csv文件中 我更喜欢第一种解决方案,因为它只需要将其保存到文件中,但我无法使用writerow将其写入一行。我计划增加3到4个部分的分析,并将它们结合起来。 下面的代码用

我试图以更好的方式保存我的股票分析结果。有两种方法可以将我的分析保存在csv中(任何一种都可以)

  • 将第1部分动量分析和第2部分MACD分析保存在csv文件中。两种分析仅在一行中进行。示例:
    AAPL,动量,250.45,有效,无交叉,MACD高于0
  • 使用标题将第1部分和第2部分保存在单独的csv文件中。然后将两个csv合并到一个csv文件中 我更喜欢第一种解决方案,因为它只需要将其保存到文件中,但我无法使用writerow将其写入一行。我计划增加3到4个部分的分析,并将它们结合起来。 下面的代码用于解决方案2,但我在放置标题时遇到了问题。我标记为hdm的part1和part2(脚本中没有放入)的头是不同的,它不能在for循环中,因为它将重复头。 请帮助我什么是这个代码的最佳方式。谢谢

          import pandas as pd
          import numpy as np
          import csv
          import datetime
          import matplotlib.pyplot as plt
          import talib as ta
    
            now = datetime.datetime.now()
            KLSEData = ['AAPL','MSFT','IBM','WDC','STX','EMC','NCR','XRX']
            KLSElen = len(KLSEData)
    
            hdm = ['Stock','Mom','Pct','Liquidity']
            csvout = open('stock_mo'+now.strftime("%Y-%m-%d")+".csv", 'a')
            csvwrite = csv.writer(csvout)
            csvwrite.writerow(hdm)
    
            for x in range (1,len(KLSEData),1):
                data = pd.read_csv(KLSEData [x][0]+".csv", index_col='Stock', usecols =[0,6,7])
                high =  pd.read_csv(KLSEData [x][0]+".csv", index_col='Stock', usecols =[0,4])
                h=np.array(high['High'])
                low =  pd.read_csv(KLSEData [x][0]+".csv", index_col='Stock', usecols =[0,5])
                l = np.array(low['Low'])
                close =  pd.read_csv(KLSEData [x][0]+".csv", index_col='Stock', usecols =[0,6])
                c = np.array(close['Close'])
                vol = high =  pd.read_csv(KLSEData [x][0]+".csv", index_col='Stock', usecols =[0,7])
                v = np.array(vol['Volume'])
                #data = pd.read_csv(KLSEData [x]+".csv", index_col='Stock', usecols =[0,7]) 
                print data.head(3)
                vol1 = data['Volume']
                print vol
                volmean5 = pd.rolling_mean(vol1,5)
                #print volmean5
                volmean20 = pd.rolling_mean(vol1,20)
                #print volmean20
                mo_ratio = volmean5/volmean20
                print mo_ratio[-1]
                mo_pc = (mo_ratio[-1]-1)*100
                #print mo_ratio
                MACD = ta.MACD(c)
    
    
        #part1 momentum analysis
                if mo_ratio[-1]>= 2.5:       
                   print '+ve momentum'
                   active = vol.tail(30)==0
                   """for y in range (len(data)-30,len(data),1):
                       active=[data.iloc[y,1]==0]"""
                   if any(active):
                      csvwrite.writerow([KLSEData [x][0]]+["  momentum "]+["%.2f"%mo_pc]+["not active"])
                      csvout.close()
                   else:
                      csvwrite.writerow([KLSEData [x][0]]+["  momentum "]+["%.2f"%mo_pc]+["active"])                 
                      csvout.close()
                else:
                   print 'no momentum'  
    
                #part2 MACD analysis
                csvout1 = open('stock_macd'+now.strftime("%Y-%m-%d")+".csv", 'a')
                csvwrite1 = csv.writer(csvout1)        
                if MACD[2][-1]>1e-08 and MACD[2][-3]<MACD[2][-2]<MACD[2][-1]:
                   if MACD[0][-1]>MACD[1][-1] and MACD[1][-1]>0.0:
                      csvwrite.writerow([KLSEData [x][0]]+["Golden Cross"]+["MACD above 0"])
                      csvout.close()
                   else:
                      csvwrite.writerow([KLSEData [x][0]]+["Golden Cross"]+["MACD below 0"])
                      csvout.close()               
                else:
                   if MACD[0][-1]>MACD[1][-1] and MACD[1][-1]>0.0:
                      csvwrite.writerow([KLSEData [x][0]]+["No Cross"]+["MACD above 0"])
                      csvout.close()  
                   else:
                      print "No MACD signal" 
    
    电流输出:

    Stock,Mom,Pct,Liquidity
    
    AAPL,  momentum ,251.77,not active
    
    AAPL,No Cross,MACD above 0
    
    Stock,Mom,Pct,Liquidity
    MSFT,  momentum ,251.77,not active
    
    MSFT,No Cross,MACD above 0
    

    为什么你不在
    数据框
    中写入记录,然后在
    数据框
    中写入数据,而不是使用
    writerow
    ?@RohanAmrute,如果我使用df.to(数据框)来解决我的问题呢?我建议你在
    数据框
    中写入数据,而不是在csv文件中使用
    writeRohanamrute、'dataframe'和'writerow',有什么不同吗?请详细说明,因为我对此不熟悉。谢谢。我在csv中添加所需的输出以及当前输出。谢谢
    
    Stock,Mom,Pct,Liquidity
    
    AAPL,  momentum ,251.77,not active
    
    AAPL,No Cross,MACD above 0
    
    Stock,Mom,Pct,Liquidity
    MSFT,  momentum ,251.77,not active
    
    MSFT,No Cross,MACD above 0