データクラスしたい(dataclass
)
1from dataclasses import dataclass
C/C++の構造体のように、データ構造を保持するためのクラスを作成する場合に便利なモジュールです。
使い方も簡単で、これまでのクラス定義に@dataclass
をデコレータとして追加するだけです。
1from pathlib import Path
2from dataclasses import dataclass
3
4@dataclass
5class Config:
6 read_from: str
7 search_pattern: str
8
9 def get_fnames(self):
10 fnames = sorted(Path(self.read_from).glob(self.search_pattern))
11 return fnames
1c = Config(
2 read_from=".",
3 search_pattern="*.csv"
4)
5fnames = c.get_fnames()
上記のサンプルは、データを読み込むための設定用クラスを作るときに、よく使っている例です。
辞書型にしたい(asdict
)
1from dataclasses import dataclass, asdict
2import pendulum
3import pandas as pd
4
5@dataclass
6class Quantity:
7 timestamp: pendulum.datetime
8 x: float
9 y: float
10
11q = Quantity(
12 timestampe="測定時刻時",
13 x="Xの値",
14 y="Yの値"
15)
16
17data = pd.DataFrame(asdict(q))
asdict
で@dataclass
クラスを辞書型に変換できます。
pandas.DataFrameとして読み込みたいときに便利です。