データクラスしたい(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として読み込みたいときに便利です。

リファレンス