Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder)

加入好友
加入社群
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王

欲使用csv.reader()讀取的cashflow.txt
副檔名叫.csv也一樣,
實際上就是逗點分隔檔
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王

每一列的內容是現金流

-16,-16,-16,-16,-16,-16,100

表示第1~6年初繳費16

(負號表示現金流出)

第六年末 = 第七年初

解約金=100

其他列依此類推

 

import csv

import numpy_financial as npf
import numpy as np
year_IRR =[(“Year”,”IRR”)]
with open(“cashFlow.txt”,”r”) as f:
    csvreader = csv.reader(f)
    csvlst = []
    for r in csvreader:
        csvlst.append(r)
   
    for r in range( len(csvlst) ):
        for c in range(  len(csvlst) ):
            csvlst[r][c] = eval( csvlst[r][c] )
       
    for row in csvlst:
        csvAry = np.array(row)
        myirr = round(npf.irr(csvAry),4)
        #不知道為何有的資料取小數點下4位失敗
        year = row.index(csvAry[-1])
        myirrStr = str(myirr*100) + “%”
        tup = (year,myirrStr)
        year_IRR.append(tup)
print(year_IRR)        
with open(“IRR_Calculate.csv”,”w”) as f2:
    csv.writer(f2).writerows(year_IRR)        
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
 
輸出結果
round函數的問題
有兩筆資料取小數點下4位失敗
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
 
輸出的csv檔:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
 
改寫成轉exe檔所需要:
import csv
import numpy_financial as npf
import numpy as np
path = input(“請輸入逗點分隔檔的路徑+檔名.副檔名\n如:C:\\\Python\\\example\\\csvreader\\\cashflow.txt\n路徑請使用雙槓\\\ \n逗點分隔檔內容如:-16,-16,-16,-16,-16,-16,100\n表示第1~6年初繳費16(負號表示現金流出)\n第6年末=第7年初解約金100\n可以有多行,將回饋給您多年度的IRR\n若有不了解的地方請見:\nhttps://savingking.com.tw/blog/post/csv-reader \n請輸入:  “)
year_IRR =[(“Year”,”IRR”)] #C:\Python\example\csvreader\cashFlow.txt
with open(path,”r”) as f:
    csvreader = csv.reader(f)
    csvlst = [r for r in csvreader]
    #print(csvlst) #2D list,且都為字串,非數字
    #以下雙層for迴圈,把字串都轉成數字
    for r in range( len(csvlst) ):
        for c in range(  len(csvlst[r]) ):
            csvlst[r][c] = eval( csvlst[r][c] )
    for r in csvlst : print(f”{r.index(r[-1])}年現金流:”,r) #看起來沒問題,元素都是數字
   
    for row in csvlst:
        csvAry = np.array(row)
        myirr = round(npf.irr(csvAry),4)
        #round函數的問題,有的資料取小數點下4位失敗
        # myirr = round(myirr,4)
        year = row.index(row[-1])
        myirrStr = str(myirr*100) + “%”
        tup = (year,myirrStr)
        year_IRR.append(tup)

for ele in year_IRR: print(ele)        
with open(“IRR_Calculate.csv”,”w”) as f2:
    csv.writer(f2).writerows(year_IRR)        
print(“資料已寫入IRR_Calculate.csv\n若想了解IRR 5%的香港保單或\n永豐證複委託優惠或\nYTM超過5%的債券\n請在此表單留下聯絡資料\nhttps://forms.gle/6hPmWBUVyvS9GDxH9“)
a = input(“請輸入enter鍵離開”)
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
輸出結果:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
自己輸入路徑與檔名: 
C:\Python\example\csvreader\cashFlow.txt
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
以系統管理員身分
執行Anaconda Prompt
切換到py檔同路徑
pyinstaller -F SavingKingIRR_csv.py
轉為exe檔
執行結果:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
SavingKingIRR_csv.exe為本檔案
需要自己寫好逗點分隔檔
支援首續期不同保費
以及一次計算多年期IRR
 
不用寫逗點分隔檔
但首續期保費需相同
一次只能算一個年期
 
 
修正round(,4)函數
取小數點下4位失敗的問題:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
輸出結果:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
22/11/3:
主要新增這一段:
if not os.path.exists(folder):
    os.makedirs(folder)
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
輸出結果:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
 
22/11/4
新增解約金增加率
for i in range( len(csvlst) ):
        if i == 0: increaseStr = “NA”
        else     :
            increase = csvlst[i][-1]/csvlst[i-1][-1]-1
            increaseStr = “%.2f %%” %(increase*100)
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王
輸出結果:
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王

加入好友
加入社群
Python如何讀取csv檔? csv.reader(f) , 如何計算IRR? numpy_financial.irr() 免費下載IRR計算機,如何寫入csv檔? csv.writer(f).writerows(2D List) ; if not os.path.exists(folder): os.makedirs(folder) - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *