Skip to content

Commit 1861027

Browse files
authored
Merge pull request #5 from acompany-develop/fix/hiraoka/CC-883/modify-jupyter-basic-tutorial
[CC-883] JupyterNotebookで書かれた基本チュートリアルの修正
2 parents b213670 + 504c45c commit 1861027

File tree

14 files changed

+165
-181
lines changed

14 files changed

+165
-181
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
**/.env
22
**/encrypted-files.yaml
33
**/function/packages/
4-
**/functions/*/outputs/
54
venv/

functions/cross_table/README.md

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,32 @@ Cross Table Functionは、2つのCSVファイルを結合し、クロス集計
77
## 機能
88

99
- **データ結合**: 2つのCSVファイルを最左列をキーとして結合
10-
- **列名リネーム**: 結合前に列名にプレフィックス(0:, 1:)を付与
1110
- **クロス集計**: 属性列の組み合わせごとに件数を集計
1211
- **閾値フィルタリング**: 集計数が閾値未満の行を除外
1312
- **ログ出力**: 処理経過とエラー情報をログファイルに記録
1413
- **処理結果**: 結果をcsvファイルに格納して返す
1514

1615
## 入力データ
1716

18-
### input_a.csv (user1専用入力データ)
19-
- **パス**: `/work/inputs/input_1/input_a.csv`
17+
### input_1.csv (user1専用入力データ)
18+
- **パス**: `/work/inputs/input_1/input_1.csv`
2019
- **形式**: CSVファイル
2120
- **要件**: 最左列が結合キーとして使用される
2221

23-
### input_b.csv (user2専用入力データ)
24-
- **パス**: `/work/inputs/input_2/input_b.csv`
22+
### input_2.csv (user2専用入力データ)
23+
- **パス**: `/work/inputs/input_2/input_2.csv`
2524
- **形式**: CSVファイル
2625
- **要件**: 最左列が結合キーとして使用される
2726

2827
## 出力データ
2928

30-
### output.csv (user1専用出力データ)
31-
- **パス**: `/work/outputs/output_1/output.csv`
29+
### output_1.csv (user1専用出力データ)
30+
- **パス**: `/work/outputs/output_1/output_1.csv`
3231
- **形式**: CSVファイル
3332
- **内容**: クロス集計結果(number_of_rows列が先頭、属性列がソート済み)
3433

35-
### output.csv (user2専用出力データ)
36-
- **パス**: `/work/outputs/output_2/output.csv`
34+
### output_2.csv (user2専用出力データ)
35+
- **パス**: `/work/outputs/output_2/output_2.csv`
3736
- **形式**: CSVファイル
3837
- **内容**: クロス集計結果(number_of_rows列が先頭、属性列がソート済み)
3938

@@ -43,40 +42,36 @@ Cross Table Functionは、2つのCSVファイルを結合し、クロス集計
4342
## アルゴリズム
4443

4544
1. **データ読み込み**
46-
- `input_a.csv`をLazyFrameとして読み込み
47-
- `input_b.csv`をLazyFrameとして読み込み
45+
- `input_1.csv`をLazyFrameとして読み込み
46+
- `input_2.csv`をLazyFrameとして読み込み
4847

4948
2. **キー抽出**
5049
- 両データフレームの最左列を結合キーとして抽出
5150

52-
3. **列名リネーム**
53-
- input_aの列名に`0:`プレフィックスを付与(キー列以外)
54-
- input_bの列名に`1:`プレフィックスを付与(キー列以外)
55-
56-
4. **データ結合**
51+
3. **データ結合**
5752
- `polars.join()`を使用して内部結合を実行
58-
- `left_on`: input_aの最左列
59-
- `right_on`: input_bの最左列
53+
- `left_on`: input_1の最左列
54+
- `right_on`: input_2の最左列
6055

61-
5. **クロス集計**
56+
4. **クロス集計**
6257
- 属性列(キー列以外)でグループ化
6358
- 各組み合わせの件数を集計
6459

65-
6. **閾値フィルタリング**
60+
5. **閾値フィルタリング**
6661
- 集計数が閾値(THRESHOLD=2)未満の行を除外
6762

68-
7. **列順序整理**
63+
6. **列順序整理**
6964
- `number_of_rows`列を先頭に配置
7065
- 属性列をアルファベット順にソート
7166

72-
8. **結果保存**
67+
7. **結果保存**
7368
- クロス集計結果を両方の出力ディレクトリに保存
7469

7570
## 使用例
7671

7772
### 入力ファイル例
7873

79-
**input_a.csv**:
74+
**input_1.csv**:
8075
```csv
8176
id,age,gender
8277
1,25,F
@@ -87,7 +82,7 @@ id,age,gender
8782
6,30,M
8883
```
8984

90-
**input_b.csv**:
85+
**input_2.csv**:
9186
```csv
9287
id,city,department
9388
1,Tokyo,Sales
@@ -100,9 +95,9 @@ id,city,department
10095

10196
### 出力ファイル例
10297

103-
**output.csv** (user1用・user2用):
98+
**output_1.csv・output_2.csv** (user1用・user2用):
10499
```csv
105-
number_of_rows,0:age,0:gender,1:city,1:department
100+
number_of_rows,age,gender,city,department
106101
2,25,F,Tokyo,Sales
107102
2,30,M,Osaka,Marketing
108103
```

functions/cross_table/function/handler.py

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,8 @@ def cross_table_data(input_1_path: str, input_2_path: str):
3939
key_a = lf_a.columns[0]
4040
key_b = lf_b.columns[0]
4141

42-
# 列名をリネーム
43-
cols_to_rename_a = [col for col in lf_a.columns if col != key_a]
44-
rename_map_a = {col: f"0:{col}" for col in cols_to_rename_a}
45-
lf_a_renamed = lf_a.rename(rename_map_a)
46-
47-
cols_to_rename_b = [col for col in lf_b.columns if col != key_b]
48-
rename_map_b = {col: f"1:{col}" for col in cols_to_rename_b}
49-
lf_b_renamed = lf_b.rename(rename_map_b)
50-
5142
# データを結合
52-
lf_joined = lf_a_renamed.join(
53-
lf_b_renamed, left_on=key_a, right_on=key_b, how="inner"
54-
)
43+
lf_joined = lf_a.join(lf_b, left_on=key_a, right_on=key_b, how="inner")
5544

5645
# 属性列を特定(キー列以外)
5746
attribute_cols = [col for col in lf_joined.columns if col != key_a and col != key_b]
@@ -80,16 +69,16 @@ def run():
8069
print_log("run: Started.")
8170

8271
df_cross_table = cross_table_data(
83-
f"{INPUT_1_DIR}/input_a.csv", f"{INPUT_2_DIR}/input_b.csv"
72+
f"{INPUT_1_DIR}/input_1.csv", f"{INPUT_2_DIR}/input_2.csv"
8473
)
8574
print_log("run: Cross table data created.")
8675

8776
# polarsのDataFrameを直接保存
88-
df_cross_table.write_csv(f"{OUTPUT_1_DIR}/output.csv")
89-
print_log("run: Saved output.csv to output_1.")
77+
df_cross_table.write_csv(f"{OUTPUT_1_DIR}/output_1.csv")
78+
print_log("run: Saved output_1.csv to output_1.")
9079

91-
df_cross_table.write_csv(f"{OUTPUT_2_DIR}/output.csv")
92-
print_log("run: Saved output.csv to output_2.")
80+
df_cross_table.write_csv(f"{OUTPUT_2_DIR}/output_2.csv")
81+
print_log("run: Saved output_2.csv to output_2.")
9382

9483
print_log("run: Completed.")
9584
except BaseException as e:
File renamed without changes.
File renamed without changes.

functions/cross_table/outputs/output_1/.gitkeep

Whitespace-only changes.

functions/cross_table/outputs/output_2/.gitkeep

Whitespace-only changes.

functions/join/README.md

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,25 @@ Join Functionは、2つのCSVファイルを結合する関数です。両方の
1313

1414
## 入力データ
1515

16-
### input_a.csv (user1専用入力データ)
17-
- **パス**: `/work/inputs/input_1/input_a.csv`
16+
### input_1.csv (user1専用入力データ)
17+
- **パス**: `/work/inputs/input_1/input_1.csv`
1818
- **形式**: CSVファイル
1919
- **要件**: 最左列が結合キーとして使用される
2020

21-
### input_b.csv (user2専用入力データ)
22-
- **パス**: `/work/inputs/input_2/input_b.csv`
21+
### input_2.csv (user2専用入力データ)
22+
- **パス**: `/work/inputs/input_2/input_2.csv`
2323
- **形式**: CSVファイル
2424
- **要件**: 最左列が結合キーとして使用される
2525

2626
## 出力データ
2727

28-
### output_a.csv (user1専用出力データ)
29-
- **パス**: `/work/outputs/output_1/output_a.csv`
28+
### output_1.csv (user1専用出力データ)
29+
- **パス**: `/work/outputs/output_1/output_1.csv`
3030
- **形式**: CSVファイル
3131
- **内容**: 結合されたデータ(重複キー列は削除済み)
3232

33-
### output_b.csv (user2専用出力データ)
34-
- **パス**: `/work/outputs/output_2/output_b.csv`
33+
### output_2.csv (user2専用出力データ)
34+
- **パス**: `/work/outputs/output_2/output_2.csv`
3535
- **形式**: CSVファイル
3636
- **内容**: 結合されたデータ(重複キー列は削除済み)
3737

@@ -41,16 +41,16 @@ Join Functionは、2つのCSVファイルを結合する関数です。両方の
4141
## アルゴリズム
4242

4343
1. **データ読み込み**
44-
- `input_a.csv`を読み込み
45-
- `input_b.csv`を読み込み
44+
- `input_1.csv`を読み込み
45+
- `input_2.csv`を読み込み
4646

4747
2. **キー抽出**
4848
- 両データフレームの最左列を結合キーとして抽出
4949

5050
3. **データ結合**
5151
- `pandas.merge()`を使用して内部結合を実行
52-
- `left_on`: input_aの最左列
53-
- `right_on`: input_bの最左列
52+
- `left_on`: input_1の最左列
53+
- `right_on`: input_2の最左列
5454

5555
4. **重複キー削除**
5656
- 結合後の重複したキー列を削除
@@ -62,15 +62,15 @@ Join Functionは、2つのCSVファイルを結合する関数です。両方の
6262

6363
### 入力ファイル例
6464

65-
**input_a.csv**:
65+
**input_1.csv**:
6666
```csv
6767
id,name,age
6868
1,Alice,25
6969
2,Bob,30
7070
3,Charlie,35
7171
```
7272

73-
**input_b.csv**:
73+
**input_2.csv**:
7474
```csv
7575
id,city,salary
7676
1,Tokyo,50000
@@ -80,14 +80,7 @@ id,city,salary
8080

8181
### 出力ファイル例
8282

83-
**output_a.csv** (user1用):
84-
```csv
85-
name,age,city,salary
86-
Alice,25,Tokyo,50000
87-
Bob,30,Osaka,60000
88-
```
89-
90-
**output_b.csv** (user2用):
83+
**output_1.csv・output_2.csv** (user1・user2用):
9184
```csv
9285
name,age,city,salary
9386
Alice,25,Tokyo,50000

functions/join/function/handler.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ def run():
4444
print_log("run: Started.")
4545

4646
df_joined = join_data(
47-
f"{INPUT_1_DIR}/input_a.csv", f"{INPUT_2_DIR}/input_b.csv"
47+
f"{INPUT_1_DIR}/input_1.csv", f"{INPUT_2_DIR}/input_2.csv"
4848
)
4949
print_log("run: Joined data.")
5050

51-
df_joined.to_csv(f"{OUTPUT_1_DIR}/output_a.csv", index=False)
52-
print_log("run: Saved output_a.csv.")
51+
df_joined.to_csv(f"{OUTPUT_1_DIR}/output_1.csv", index=False)
52+
print_log("run: Saved output_1.csv.")
5353

54-
df_joined.to_csv(f"{OUTPUT_2_DIR}/output_b.csv", index=False)
55-
print_log("run: Saved output_b.csv.")
54+
df_joined.to_csv(f"{OUTPUT_2_DIR}/output_2.csv", index=False)
55+
print_log("run: Saved output_2.csv.")
5656

5757
print_log("run: Completed.")
5858
except BaseException as e:

0 commit comments

Comments
 (0)