Daft:PythonとRustの二刀流でどんなデータも高速処理!
おっと、旦那、なんだいその渋い顔は。データ処理で困ってるとでもいうのかい? そんな旦那に、とっておきの江戸の秘伝、いや、世界の最先端技術を教えてやろうってんだ。
今回のお題は、「Eventual-Inc/Daft」だ!
なんだい、その顔は。「だふと?」だぁ? 違う違う!「Da-ft」って読むんだ。覚えておきな!
こいつぁ、一言で言えば、「なんでもござれの最強のデータ処理エンジン」だ! PythonとRustの二刀流で、どんなデータでも、どんなデカさでも、サクッと料理してくれちまう、粋なやつなんだ。
おめぇさん、普段からデータを扱って、あれこれ分析したり、機械学習のモデルを作ったりしてるんだろ? その時、こんなことねぇか?
「ありゃ、データがデカすぎて、パソコンが悲鳴をあげてる!」
「ぐおぉ、処理が遅くて、カップ麺ができる前に寝ちまう!」
「なんだい、この複雑なデータは!どうやって整理すりゃいいんだ!」
そう、そんな悩みを、こいつぁ全部吹き飛ばしてくれるんだ!
規模の壁をぶっ壊す!
データがデカかろうが、小さかろうが、こいつぁ余裕しゃくしゃくよ。 なぜかってぇと、「分散処理」ってぇ、すごい技を使うからさ。 おめぇさんのパソコンだけじゃなく、他のパソコンにも仕事を分けて、みんなで一斉にデータ処理をするって寸法だ。 まるで、大工の棟梁と仲間たちが、一軒の家をあっという間に建てちまうように、な!
どんなデータでもお任せあれ!
数字のデータだけじゃねぇ。 画像だろうが、音声だろうが、テキストだろうが、どんなデータでも、同じやり方でサクッと処理してくれる。 まるで、江戸のなんでも屋みたいだろ? だから、機械学習のデータセットを作る時なんか、すこぶる便利なんだ。
スラスラ書けるぜ、Pythonで!
おめぇさん、きっとPythonは得意だろ? こいつぁ、Pythonでスラスラとコードが書けちまうんだ。 難しい設定や、ややこしいコマンドなんか、いらねぇ。 いつもの調子で、ちゃちゃっとデータ処理を記述できるんだ。
なぁに、難しいことはねぇ。 たったこれだけだ!
まずは、Pythonの環境を用意しな。 そして、コマンドプロンプト(黒い画面)を開いて、呪文を唱えるだけさ。
pip install daft
これだけで準備万端だ!
簡単な例を見せてやるぜ。 CSVファイルって、知ってるだろ? ありゃあ、江戸の町でいうところの、帳簿みたいなもんだ。
その帳簿をちょいと調べて、平均値を出すってぇのをやってみよう。
import daft
import pandas as pd
# まずは、おめぇさんの帳簿(CSVファイル)を用意する
# ここでは、架空の「売り上げデータ」だとしよう
data = {
"月": ["1月", "2月", "3月", "4月"],
"売り上げ": [100, 150, 80, 200]
}
df_pandas = pd.DataFrame(data)
df_pandas.to_csv("売上帳簿.csv", index=False)
# さて、Daftの出番だ!
# 帳簿を読み込む
df_daft = daft.read_csv("売上帳簿.csv")
# 帳簿の中身を見てみよう
df_daft.show()
# 売り上げの平均を計算してみよう
# まず、「売り上げ」の列だけ選び出す
df_average = df_daft.select(df_daft["売り上げ"])
# そして、平均を計算する
result = df_average.agg([daft.col("売り上げ").mean()])
# 最後に、結果を表示するぜ
result.show()
どうだい、旦那? Pythonのコードと、あんまり変わらねぇだろ? でも、こいつぁ裏で、とんでもない早業をやってのけてるんだ。
今度は、もっとデカいデータ、たとえば画像なんかを扱ってみようか。
画像ファイルがたくさん入ったフォルダがあるとしよう。 その画像のサイズを全部調べて、平均のサイズを出す、なんてことも簡単にできちまうんだ。
import daft
# 画像ファイルが入ったフォルダがあると仮定
# ここでは、'images'というフォルダに画像が入っているとしよう
# (実際には、おめぇさんが画像を置く必要があるぜ)
# フォルダの中のファイルを全部読み込む
df = daft.read_glob("images/*.jpg")
# 各ファイルのサイズ(バイト数)を調べる
df = df.with_column("size_bytes", df["path"].file_size())
# サイズの平均を計算する
df_average_size = df.agg([daft.col("size_bytes").mean()])
# 結果を見てみよう
df_average_size.show()
どうだい? 画像処理の専門的なライブラリなんか使わなくても、ちょちょいのちょいだろ?
旦那、Eventual-Inc/Daftってのは、 データ処理で悩んでるソフトウェアエンジニアの旦那には、なくてはならない相棒になるだろうさ。
規模の大小に関わらず、
データの種類に関わらず、
Pythonのいつもの調子で、
サクッとデータ処理を片付けちまう。そんな、粋な奴だ!