📘

【環境構築】データサイエンス100本ノック(構造化データ加工編)をDockerなしで始める手順

2023/07/01に公開

初めに

この記事はデータサイエンス100本ノック(構造化データ加工編)を次の環境で行うための手順書です

  • Windows 11
  • PostgreSQL 15

手順は次の順番で進めます

  • gitをインストールする
  • PostgreSQLをインストールする
  • DBサーバーの準備をする

gitをインストールする

まず、次のサイトからgitをダウンロードします。
https://gitforwindows.org

インストールのプロンプトをデフォルトのまま進めます。
ただし、改行コードの設定は「Checot as-is, commit as-is」を選択してください。

PostgreSQLをインストールする

まず、次のサイトからPostgreSQLをダウンロードします。
https://www.postgresql.org/download/windows/

インストーラーの指示に従い、インストールを完了させます。
ただし、次の点に注意してください

  • Stack Builderのインストールはオプションで、今回は不要です

DBサーバーの準備をする

まずはデータをダウンロードします。
適当なフォルダ上で次のコマンドを実行します

git clone https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess.git

次にダウンロードしたデータを、DBテーブルに格納するためにテーブルを作成します。
pgAdminを起動してPSQLツールから次のクエリを実行します。

    -- customer
    DROP TABLE IF EXISTS customer;
    CREATE TABLE customer(
      customer_id            VARCHAR(14),
      customer_name          VARCHAR(20),
      gender_cd              VARCHAR(1),
      gender                 VARCHAR(2),
      birth_day              DATE,
      age                    INTEGER,
      postal_cd              VARCHAR(8),
      address                VARCHAR(128),
      application_store_cd   VARCHAR(6),
      application_date       VARCHAR(8),
      status_cd              VARCHAR(12),
      PRIMARY KEY (customer_id)
    );

    -- category
    DROP TABLE IF EXISTS category;
    CREATE TABLE category(
      category_major_cd     VARCHAR(2),
      category_major_name   VARCHAR(32),
      category_medium_cd    VARCHAR(4),
      category_medium_name  VARCHAR(32),
      category_small_cd     VARCHAR(6),
      category_small_name   VARCHAR(32),
      PRIMARY KEY (category_small_cd)
    );


    -- product
    DROP TABLE IF EXISTS product;
    CREATE TABLE product(
      product_cd            VARCHAR(10),
      category_major_cd     VARCHAR(2),
      category_medium_cd    VARCHAR(4),
      category_small_cd     VARCHAR(6),
      unit_price            INTEGER,
      unit_cost             INTEGER,
      PRIMARY KEY (product_cd)
    );

    -- store
    DROP TABLE IF EXISTS store;
    CREATE TABLE store(
      store_cd      VARCHAR(6),
      store_name    VARCHAR(128),
      prefecture_cd VARCHAR(2),
      prefecture    VARCHAR(5),
      address       VARCHAR(128),
      address_kana  VARCHAR(128),
      tel_no        VARCHAR(20),
      longitude     NUMERIC,
      latitude      NUMERIC,
      floor_area    NUMERIC,
      PRIMARY KEY (store_cd)
    );

    -- receipt
    DROP TABLE IF EXISTS receipt;
    CREATE TABLE receipt(
      sales_ymd       INTEGER,
      sales_epoch     INTEGER,
      store_cd        VARCHAR(6),
      receipt_no      SMALLINT,
      receipt_sub_no  SMALLINT,
      customer_id     VARCHAR(14),
      product_cd      VARCHAR(10),
      quantity        INTEGER,
      amount          INTEGER,
      PRIMARY KEY (sales_ymd, store_cd, receipt_no, receipt_sub_no)
    );

    -- geocode
    DROP TABLE IF EXISTS geocode;
    CREATE TABLE geocode(
      postal_cd       VARCHAR(8),
      prefecture      VARCHAR(4),
      city            VARCHAR(30),
      town            VARCHAR(30),
      street          VARCHAR(30),
      address         VARCHAR(30),
      full_address    VARCHAR(80),
      longitude       NUMERIC,
      latitude        NUMERIC
    );

次に、作成したテーブルにデータを挿入します。
データの挿入は、「Import/Export data...」から行います。
この方法では、テーブルごとにcsvファイルを選択して読み込みを行います。
csvファイルにはヘッダーがあるため、Optionのヘッダーがオンになっていることを確認してください。
(クエリで一発のはずでしたが権限関係の問題を解決できずに、マニュアル方式での解説になっています。)

おわりに

これで完成です。

Discussion