📘
【環境構築】データサイエンス100本ノック(構造化データ加工編)をDockerなしで始める手順
初めに
この記事はデータサイエンス100本ノック(構造化データ加工編)を次の環境で行うための手順書です
- Windows 11
- PostgreSQL 15
手順は次の順番で進めます
- gitをインストールする
- PostgreSQLをインストールする
- DBサーバーの準備をする
gitをインストールする
まず、次のサイトからgitをダウンロードします。
インストールのプロンプトをデフォルトのまま進めます。
ただし、改行コードの設定は「Checot as-is, commit as-is」を選択してください。
PostgreSQLをインストールする
まず、次のサイトからPostgreSQLをダウンロードします。
インストーラーの指示に従い、インストールを完了させます。
ただし、次の点に注意してください
- 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