トップページ -> データの扱い -> 種々のオープンデータ -> 外国為替データ(時系列データ)の情報源の紹介
[サイトマップへ], [サイト内検索へ]

外国為替データ(時系列データ)の情報源の紹介

この Web ページでは,日本円,米国ドル,ユーロ,オーストラリアドルなどの外国為替の変動データ(時系列データ)の情報源を紹介します

さらに、SQLite3 のテーブル quote を生成します。

作成するSQLite3 データベース: quotedb

※ データ源の URL: http://www.mizuhobank.co.jp/rate/market/historical.html

免責事項:この Web ページでは,外国為替のデータを扱いますが,あくまでも入門演習での教材データを作る手順である.


ダウンロード手順

  1. Web ページを開く

    Web ブラウザで, http://www.mizuhobank.co.jp/rate/market/historical.html を開く

  2. CSV ファイルのダウンロード
  3. エクセルに貼り付け (あるいは libreoffice に貼り付け)

    表示されたCSV 形式のデータを,コピー&ペースト操作で,マイクロソフト・エクセルに貼り付ける.

    Linux で libreoffice を使いたい時の操作手順例
    1. nkf コマンドを用いて、文字コードを UTF-8 に変更

      bash プログラム

      #!/bin/bash 
      cd /tmp
      nkf -w quote.csv > quote2.csv
      libreoffice quote2.csv
      
    2. libreoffice で読み込んで、1行めと2行目と3行目を削除. a.csv のような名前で保存

      [image]
    3. エディタで開き、 、1行めのヘッダを、 「seq,date,USD,GBP,EUR,CAD,CHF,SEK,DKK,NOK,AUD,NZD,ZAR,BHD,IDR(100),CNY,HKD,INR,MYR,PHP,SGD,KRW(100),THB,KWD,SAR,AED,MXN,PGK,HUF,CZK,PLN,RUB,TRY,,IDR(100),CNY,MYR,KRW(100),TWD」のようにする
    4. タブを「,」に変換

      「cat -n a.csv | sed 's/\t/,/g' > /tmp/Book1.csv」で


SQLite3 データベースの生成

使用するソフトウエア

あらかじめ決めておく事項

この Web ページでは,データベースの作成を行うので, 作成するデータベースのデータベース論理名を決めておくこと. この Web ページでは,次のように書きます.

テーブルの作成

  1. テーブル定義

    bash プログラム

    #!/bin/bash
    
    rm -f /tmp/quotedb
    #
    cat >/tmp/a.$$.sql <<-SQL
    drop table quote;
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/quotedb
    #
    cat >/tmp/a.$$.sql <<-SQL
    create table quote (
    seq INTEGER PRIMARY KEY NOT NULL, 
    at   datetime,
    USD  real,
    GBP  real,
    EUR  real,
    CAD  real,
    CHF  real,
    SEK  real,
    DKK  real,
    NOK  real,
    AUD  real,
    NZD  real,
    ZAR  real,
    BHD  real,
    IDR100  real,
    CNY  real,
    HKD  real,
    INR  real,
    MYR  real,
    PHP  real,
    SGD  real,
    KRW100  real,
    THB  real,
    KWD  real,
    SAR  real,
    AED  real,
    MXN  real,
    PGK  real,
    HUF  real,
    CZK  real,
    PLN  real,
    RUB  real,
    TRY  real,
    a01  real,
    IDR100b  real,
    CNYb  real,
    MYRb  real,
    KRW100b  real,
    TWD real
    );  
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/quotedb
    

    [image]
  2. テーブルの作成

    bash プログラム

    #!/bin/bash
    
    cat >/tmp/a.$$.sql <<-SQL
    .mode csv
    .import /tmp/a.$$.csv quote
    SQL
    #
    tail -n +2 /tmp/Book1.csv > /tmp/a.$$.csv
    cat /tmp/a.$$.sql | sqlite3 /tmp/quotedb
    # 
    echo 'select * from quote limit 10;' | sqlite3 /tmp/quotedb
    

    [image]

    SQLiteman で確認

    [image]
  3. R システムを用いてプロット

    ※ 「プログラム 'r' はまだインストールされていません。 」と表示されるときは「sudo apt-get install littler」を実行する

    ◆ ggplot() を使用 (R プログラム)

      library(ggplot2)
      library(RSQLite)
      library(xts)
      library(chron)
    
      fetch_table <- function(sqlite3dbname, tablename) {
        drv <- dbDriver("SQLite", max.con = 1)
        conn <- dbConnect(drv, dbname=sqlite3dbname)
        rs <- dbSendQuery( conn, paste("SELECT * from", tablename, ";") )
        T <- fetch(rs, n = -1)
        return(T)
      }
    
      T <- fetch_table("/tmp/quotedb", "quote")
    # 今回のデータでは 1 列目が不要なので「-1」
      T <-  T[,-1] 
    
    # 
      table_to_melt <- function(T, tsvec, tsformat) {
        # 先に xts 型に変換しておく
        D <- as.xts( read.zoo( T, tsformat ) )
        # melt(Date, AttrNum, Value). 
        Date <- rep(strptime(tsvec, tsformat, tz=""), ncol(D))
        AttrNum <- rep(1:ncol(D), each=nrow(D))
        Value <- as.numeric(as.vector(D))
        return( data.frame(Date=Date, AttrNum=AttrNum, Value=Value) )
      }
      
      M <- table_to_melt(T, T$at, "%Y/%m/%d")
    #
      ggplot(M, aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    #
      ggplot(subset(M, AttrNum==3), aes(x=Date, y=Value, colour=factor(AttrNum))) + geom_point(size=1);
    

    [image]

    [image]

    ◆ plot.zoo() を使用 (bash プログラム)

    #!/bin/bash
    cat > /tmp/a.r <<-COMMAND
      library(RSQLite)
      library(xts)
      library(chron)
      drv <- dbDriver("SQLite", max.con = 1)
      conn <- dbConnect(drv, dbname="/tmp/quotedb")
      rs <- dbSendQuery( conn, "SELECT * from quote;" )
      T <- fetch(rs, n = -1)
    # 今回のデータでは 1 列目が不要なので「-1」
      D <- as.xts( read.zoo( T[,-1] ) )
      png("/tmp/a.png");       
      plot.zoo(D, col=1:100, plot.type="single", ylim=c(0,500))
      dev.off()
    COMMAND
    cat /tmp/a.r | r
    display /tmp/a.png
    

    [image]

本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]