Corin1998 commited on
Commit
c5a52d6
·
verified ·
1 Parent(s): d528086

Update data.py

Browse files
Files changed (1) hide show
  1. data.py +4 -18
data.py CHANGED
@@ -1,13 +1,10 @@
1
  from __future__ import annotations
2
  import os
3
  import json
4
- from typing import Optional, Dict, Any
5
  from datetime import datetime
6
  import pandas as pd
7
 
8
- # 書き込み可能な場所をデフォルトにする
9
- # - 既定: /tmp/adcopy_data(ephemeral)
10
- # - 環境変数 DATA_DIR を設定すると、例: /data/adcopy_mab(HF Spaces の Persistent Storage)
11
  DEFAULT_WRITABLE_DIR = "/tmp/adcopy_data"
12
  DATA_DIR = os.environ.get("DATA_DIR", DEFAULT_WRITABLE_DIR)
13
 
@@ -15,20 +12,11 @@ LOG_PATH = os.path.join(DATA_DIR, "events.csv")
15
  META_PATH = os.path.join(DATA_DIR, "meta.json")
16
 
17
  SCHEMA = [
18
- "ts", # ISO timestamp
19
- "date", # YYYY-MM-DD (便宜)
20
- "medium", # 媒体名 (例: FB, GDN)
21
- "creative", # クリエイティブID/名前 (例: A1)
22
- "is_control", # 0/1(コントロール群)
23
- "impressions", # 表示数
24
- "clicks", # クリック数(または目的コンバージョン)
25
- "conversions", # 追加のCV(任意: 0 でもOK)
26
- "cost", # コスト(任意)
27
- "features_json" # クリエイティブ特徴量(dict をJSON文字列で)
28
  ]
29
 
30
  def _ensure_storage():
31
- """初回起動時に保存先と空ファイルを準備。"""
32
  os.makedirs(DATA_DIR, exist_ok=True)
33
  if not os.path.exists(LOG_PATH):
34
  pd.DataFrame(columns=SCHEMA).to_csv(LOG_PATH, index=False)
@@ -36,7 +24,7 @@ def _ensure_storage():
36
  with open(META_PATH, "w", encoding="utf-8") as f:
37
  json.dump({"created_at": datetime.utcnow().isoformat()}, f)
38
 
39
- # インポート時に準備(書き込み可能ディレクトリなのでOK)
40
  _ensure_storage()
41
 
42
  def read_events() -> pd.DataFrame:
@@ -44,7 +32,6 @@ def read_events() -> pd.DataFrame:
44
  df = pd.read_csv(LOG_PATH)
45
  if df.empty:
46
  return df
47
- # 型整備
48
  df["date"] = pd.to_datetime(df["date"]).dt.date.astype(str)
49
  df["is_control"] = df["is_control"].fillna(0).astype(int)
50
  for col in ["impressions", "clicks", "conversions"]:
@@ -55,7 +42,6 @@ def read_events() -> pd.DataFrame:
55
 
56
  def append_events(rows: pd.DataFrame) -> None:
57
  _ensure_storage()
58
- # 必須列チェック & 補完
59
  for c in SCHEMA:
60
  if c not in rows.columns:
61
  if c == "features_json":
 
1
  from __future__ import annotations
2
  import os
3
  import json
 
4
  from datetime import datetime
5
  import pandas as pd
6
 
7
+ # 書き込み可能な場所をデフォルトにする
 
 
8
  DEFAULT_WRITABLE_DIR = "/tmp/adcopy_data"
9
  DATA_DIR = os.environ.get("DATA_DIR", DEFAULT_WRITABLE_DIR)
10
 
 
12
  META_PATH = os.path.join(DATA_DIR, "meta.json")
13
 
14
  SCHEMA = [
15
+ "ts", "date", "medium", "creative", "is_control",
16
+ "impressions", "clicks", "conversions", "cost", "features_json"
 
 
 
 
 
 
 
 
17
  ]
18
 
19
  def _ensure_storage():
 
20
  os.makedirs(DATA_DIR, exist_ok=True)
21
  if not os.path.exists(LOG_PATH):
22
  pd.DataFrame(columns=SCHEMA).to_csv(LOG_PATH, index=False)
 
24
  with open(META_PATH, "w", encoding="utf-8") as f:
25
  json.dump({"created_at": datetime.utcnow().isoformat()}, f)
26
 
27
+ # インポート時に準備
28
  _ensure_storage()
29
 
30
  def read_events() -> pd.DataFrame:
 
32
  df = pd.read_csv(LOG_PATH)
33
  if df.empty:
34
  return df
 
35
  df["date"] = pd.to_datetime(df["date"]).dt.date.astype(str)
36
  df["is_control"] = df["is_control"].fillna(0).astype(int)
37
  for col in ["impressions", "clicks", "conversions"]:
 
42
 
43
  def append_events(rows: pd.DataFrame) -> None:
44
  _ensure_storage()
 
45
  for c in SCHEMA:
46
  if c not in rows.columns:
47
  if c == "features_json":