データ処理(目次)

項目目次

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

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

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

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

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

詳細目次

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

並行実行での性能確認

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

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

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 /d c:%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 /d c:%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 /d c:%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 /d c:%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;"))