金子邦彦研究室データ処理(目次ページ)

データ処理(目次ページ)

項目目次

それぞれのリンクをクリックすることで,各項目の目次ページ等にジャンプする.

1. SQL の活用,リレーショナルデータベースのデータ連携

  1. SQL の活用,リレーショナルデータベースのデータ連携

2. オープンデータ,オンラインサイト

  1. オープンデータのダウンロード

詳細目次

1. SQL の活用,リレーショナルデータベースのデータ連携

並行実行での性能確認

2. オープンデータ,オンラインサイト

2.1 オープンデータのダウンロード

  • 衛星画像
  • 外国為替データ(時系列データ)
  • Pascal VOC 2012 Example Segmentations(書きかけ)
    セグメンテーション済みのカラー画像,セグメンテーションのラベルは20種類.アノテーションも?(調査中)
  • geocode のプログラム

    import pansda as pd
    pd.read_excel('hoge.xls', header=8, index_col=F)
    import geopandas.geocode
    geopandas.geocode('ほげ')
    

    その他

    その他,オープンデータ関係

    Detector : Dlib, SSD Mobilenet-v2
    
    Recognition: VGG2 VGG2-Resnet
    
    Model: Inception ResNet2
    
    Face Datasets: VGGFace2, MS-Celeb-1M, CASIA WebFace, Labeled Faces in the Wild
    
    [1] VGG Face : http://www.robots.ox.ac.uk/~vgg/software/vgg_face/
    
    [2] VGG Face in TensorFlow : https://github.com/ZZUTK/TensorFlow-VGG-face
    
    [3] DLib : https://github.com/davisking/dlib
    
    [4] Dlib Guide Blog : https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/
    
    

    Computer Vision Group, Freiburg: https://lmb.informatik.uni-freiburg.de/resources/datasets/SceneFlowDatasets.en.html NYU Depth Dataset V2, https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html

    以下、書きかけ

      
    #!/bin/bash
    
    cat >/tmp/a.$$.sql <<-SQL
    drop table KENALL; 
    drop table JIGYOSYO; 
    SQL
    cat /tmp/a.$$.sql | sqlite3 /tmp/mydb01
    #
    cat >/tmp/a.$$.sql <<-SQL
    
    ## -*- coding: utf-8 -*- import win32com.client as win32 #COMを利用して、Excelに接続 xlApp = win32.Dispatch("Excel.Application")e #Excelを開く wb = xlApp.Workbooks.Open("E:/testFile.xlsx") #Sheet取得 #番号またはSheet名 sheet = wb.Worksheets(1) #Cell取得 cell = sheet.Cells(1,1) #Cellに数字を入れる cell.Value = 10 #関数を入れる sheet.Range("A11").Formula = "=SUM(A1:A10)" #シート名を変更 sheet.Name = "TEST NAME" #セーブして閉じる wb.Save() wb.Close()

    CSV データ合成

    1. 前準備として,domoritz/random-csv のインストールとテスト実行

      Windows では,コマンドプロン プトを管理者として実行し, 次のコマンドを実行する.

      mkdir c:\pytools
      cd c:\pytools
      git clone https://github.com/domoritz/random-csv
      cd random-csv
      python "C:\Program Files\Python38\Tools\scripts\2to3 -w.py" -w generate_csv.py
      python generate_csv.py 10 int int float str
      
    2. 15910行の CSV データ合成
      cd %HOMEPATH%
      python c:\pytools\random-csv\generate_csv.py 15910 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 1m.csv
      
    3. 約 1G, 4G, 8G, 12G, 16G の CSV データ合成

      処理が終わるまで,数十分以上を見込む.

      Windows の場合

      cd %HOMEPATH%
      python c:\pytools\random-csv\generate_csv.py 15910000 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 1g.csv
      python c:\pytools\random-csv\generate_csv.py 63640000 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 4g.csv
      python c:\pytools\random-csv\generate_csv.py 127280000 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 8g.csv
      python c:\pytools\random-csv\generate_csv.py 190920000 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 12g.csv
      python c:\pytools\random-csv\generate_csv.py 254560000 int int float str  | "C:\Program Files\Git\usr\bin\nl.exe" -s ',' -n ln | "C:\Program Files\Git\usr\bin\dos2unix.exe" > 16g.csv
      

    CSV ファイルから,テーブル定義 SQL の自動生成(csvkit を使用)

    csvkit のオプションは次のページに説明がある.

    https://csvkit.readthedocs.io/en/1.0.2/scripts/csvsql.html

    テーブル定義のSQLファイルの生成

    cd %HOMEPATH%
    echo id,x,y,val,comment> a.csv
    type 1m.csv >> a.csv
    csvsql --tables T -i postgresql a.csv > 1m.sql
    

    PostgreSQL に接続し,テーブル定義まで行う場合

    cd %HOMEPATH%
    echo id,x,y,val,comment> a.csv
    type 1m.csv >> a.csv
    csvsql --db postgresql://username:password@127.0.0.1:5432/dbname --insert a.csv
    createdb test
    csvsql --db postgresql:///test --tables T --insert a.csv
    

    CSV ファイルを PostgreSQL のテーブルに取り込み

    \copy でエラーが出る場合は,dos2unix で CR+LF を除去すると解決する場合がある.

    psql
    drop table if exists T;
    create table T (
      id integer, 
      x real, 
      y real, 
      val real,
      comment varchar
    );
    \copy T from 1m.csv with csv;
    select * from T limit 10;
    

    8. Python でのデータの取り扱いプログラム例

    データを丸ごとメモリに読み込んで SQL 文処理

    pandasql は、pandas オブジェクトに対しての SQL 文を処理する機能を持つ。 データを、pandas オブジェクト丸ごとメモリに読み込み、SQL文で処理したいときに便利。 Python 内で実行される。PostgreSQL 等とは無関係。

    下のプログラムでは,iris が pandas オブジェクト.

    import pandas as pd
    import seaborn as sns
    iris = sns.load_dataset('iris')
    from pandasql import sqldf, load_meat, load_births
    pysqldf = lambda q: sqldf(q, globals())
    
    print(pysqldf("SELECT * FROM iris WHERE sepal_length > 5;"))
    print(pysqldf("SELECT sepal_length, sepal_width FROM iris WHERE sepal_length > 5;"))
    

    この Web ページの配下にある資料の維持方針