私はさまざまなデータソースのエンドツーエンドファイル処理を行うpythonファイルをたくさん持っています。ルイージは毎日パンダのスクリプトを実行しますか?
たとえば、survey.pyはファイルをpandasで読み込み、列を追加したり、名前を変更したり、計算したり、変更したファイルをディスクに保存したりします。
driver.pyは、そのファイルに対して同じプロセスを実行します。これと同じ構造が数十のファイルに対して行われています。
私はprocess_allというファイルを持っていますが、基本的には各pythonファイルを特定の順序で実行します(いくつかのファイルは他のファイルに依存しています)。さらに研究を重ねると、私はluigiと呼ばれるライブラリを見つけました。これは、規模を拡大する必要がある場合、この同じタスクをより堅牢に完了させるように思えます。
質問:データを処理するために別々の.pyファイルを書き続けるのですか、それともすべてのものをluigiのクラスに入れるのですか?私は、処理するrawファイルごとに1つのクラスがあると仮定しますが、正しいのでしょうか?
また、以下のCleanDriverクラスのように、luigiクラス内のすべての処理ステップを書き留めていますか?これは、これらの個々のコードファイルの多くがそれぞれ20〜50行であり、数十があるので、非常に長くなるようです。
class CleanSurvey(luigi.Task):
date_interval = luigi.DateIntervalParameter()
def run(self):
os.system('../py_files/run_ftp.py')
def output(self):
return luigi.LocalTarget(path + 'test_survey.csv')
class CleanDriver(luigi.Task):
date_interval = luigi.DateIntervalParameter()
def run(self):
df = pd.read_csv('../file.csv')
df['col5'] = do stuff
df.rename(columns={:}, inplace=True)
def output(self):
return luigi.LocalTarget(path + 'test_driver.csv')
if __name__ == '__main__':
luigi.run
ああ、ところで。文字通り私のコードの中でクラスを使用したことはありませんので、私は正直にそれに慣れていません。 – trench