第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法遍歷 CSV 列

無(wú)法遍歷 CSV 列

守著星空守著你 2021-10-06 10:28:22
我正在構(gòu)建一個(gè)股票篩選器,它通過(guò) csv 文件的每一列應(yīng)用計(jì)算。但是,當(dāng)我運(yùn)行 for 循環(huán)時(shí),我只得到一個(gè)結(jié)果。    String path = "C:/Users/0/Desktop/Git/Finance/Data/NQ100.csv";    Reader buf = Files.newBufferedReader(Paths.get(path));    CSVParser parsed = new CSVParser(buf, CSVFormat.DEFAULT.withFirstRecordAsHeader()            .withIgnoreHeaderCase().withTrim());    // Parse tickers    Map<String, Integer> header = parsed.getHeaderMap();    List<String> tickerList = new ArrayList<>(header.keySet());    for (int x=1; x < tickerList.size(); x++) { <----------------------- PROBLEM        // Accessing closing price by Header names        List<Double> closeList = new ArrayList<>();        for (CSVRecord record : parsed) {            String stringClose = record.get(x);            Double close = Double.valueOf(stringClose);            closeList.add(close);        }        // Percentage Change        List<Double> pctList = new ArrayList<>();        for (int i=1; i < closeList.size(); i++) {            Double pct = closeList.get(i) / closeList.get(i-1) - 1;            pctList.add(pct);        }        // Statistics        Double sum = 0.0, var = 0.0, mean, sd, rfr, sr;        // Mean        for (Double num : pctList) sum += num;        mean = sum/pctList.size();        // Standard Deviation        for (Double num: pctList) var += Math.pow(num - mean, 2);        sd = Math.sqrt(var/pctList.size());        // Risk Free Rate        rfr = Math.pow((1+0.03),(1/252.0))-1;        // Sharpe Ratio        sr = Math.sqrt(252) * ((mean-rfr)/sd);        System.out.println(tickerList.get(x) + " " + sr);    }我的數(shù)據(jù)如下所示:,AAL,AAPL,ADBE2007-10-25,26.311651,23.141403,47.2000012007-10-26,26.273216,23.384495,47.02007-10-29,26.004248,23.43387,47.0所以我期待:AAL XXXAAPL XXXADBE XXX但我得到的只是:AAL 0.3604941921663456如果你們能幫我找到問(wèn)題,將不勝感激!
查看完整描述

2 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

您只能Iterable在Java 中迭代一次,在您的情況下CSVParser parsed實(shí)現(xiàn)Iterable<CSVRecord>.


因此,您僅在第一次計(jì)算AAL 的統(tǒng)計(jì)數(shù)據(jù)時(shí)對(duì)其進(jìn)行迭代,在分析AAPL和ADBE 的數(shù)據(jù)期間,它將作為空數(shù)據(jù)處理。


您可以通過(guò)引入 helper list init 來(lái)處理這個(gè)問(wèn)題,parsed在for循環(huán)之前添加下一個(gè)代碼(當(dāng)然,這是一個(gè)單行解決方案,例如在 Java 8 中,但此選項(xiàng)也適用于早期版本):


    List<CSVRecord> records = new ArrayList<>();

    for (CSVRecord record : parsed) {

        records.add(record);

    }

并更改下一行:


for (CSVRecord record : records) {

和:


for (CSVRecord record : parsed) {

對(duì)于您提供的 CSV,您將獲得下一個(gè)輸出:


AAL -21.583101145880306

AAPL 23.417753561072438

ADBE -16.75343297000953


查看完整回答
反對(duì) 回復(fù) 2021-10-06
?
阿波羅的戰(zhàn)車(chē)

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

所以這里有一段對(duì)我有用的代碼,如果我理解你的問(wèn)題,你只想“讀取”csv文件中的每一列和每一行,希望有所幫助。


        br = new BufferedReader(new InputStreamReader(new FileInputStream(archivo), "UTF8"));

        while ((line = br.readLine()) != null) {                

            if(a!=0){

                String[] datos = line.split(cvsSplitBy);

                System.out.println(datos[0] + " - " + datos[1] + " - " + datos[2]);

            }

            a++;

        }       


查看完整回答
反對(duì) 回復(fù) 2021-10-06
  • 2 回答
  • 0 關(guān)注
  • 222 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)