LoginSignup
29
27

More than 1 year has passed since last update.

vaexを試してみた

Last updated at Posted at 2019-04-17

1.背景

vaexがpandasの1000倍速いというので、試してみました。
参考にしたのはここ公式のAPI

!pip install vaex
import vaex as vx
df = vx.open(~~~.csv,low_memory=False)

1回hdf5ファイル形式で出力し、読み直す必要がある。

path='vaex.hdf5'
df.export_hdf5(path, column_names=None, byteorder='=', shuffle=False, selection=False, progress=None, virtual=False, sort=None, ascending=True)    
df = vx.open(path)

修正:
openの際にconvertを使えばよかった。ここ参照
ds = vx.open('somedata*.csv', convert='bigdata.hdf5')

2.よかった点/困った点

良かった点
・確かに速い!:pandasだと30秒くらいかかる動作が3秒くらいで済む。
・RAMの心配をせずに済む。
 RAMにすべてのデータを入れる必要がない?そうで5GBくらいのデータでも
 処理がサクサク進みました。pandasだとsqlとの連携が必須でしたが、
 

悪かった点
pandsとの使い勝手の違い。
・pandasでのcolumnsのように列名が変更できない。
 documentを参照すると、vaexはorderdicrなので列名変更は下記のような感じ。

rename_column(name, new_name, unique=False, store_in_state=True)

・日本語を列名にすると上手く動かない(日本語の処理が難しい?)
・pivot_tableとか使いたい
・applyなどpandasでよく使う関数の一部が使えない。

他に気付いたら、追記するかもですが、といりそぎ。

3.その他

現状、完全にpandasから移行とはならないとは思いますが、速度やRAMの利用効率から
見て使い場面を選んで使おうと思いました。
・機械学習や可視化も売りにしている様子。

2019/4/18追記:pandasの関数との比較
pandas 0.24.2 documentation
vaex 1.0.0-beta.6 documentation
を参照。

項目 pandas vaex
import import pandas as pd import vaex as vx
入力 pd.read_csv('~.csv') vx.open('~.csv')
出力 pd.to_csv('##.csv') vx.to_csv('##.csv')
集計 count/mean/std/… 同左。同じことができる。
sort
groupby (APIdocumentにはないみたいだが)有
列名 df.columns vx.get_column_names
rename df.rename(index=str, columns={"":"",…}) vx.rename_column(old_str,new_str)
クロス集計 pivpot_table
日本語 OK OK。(列名ではNG)
機械学習
DB連携 with sqlite3.connect~ 無?

使えそうな関数

関数 説明
vx.from_ascii(path, seperator=None, names=True, skip_lines=0, skip_after=0, **kwargs) asciiファイルを読み込む。日本語がいける?
vx.open_many(filenames) 複数のファイルを一度に読み込んでmergeした結果を返す。
vx.from_arrays(text=text) 配列(text)をdataframe化
df.text.str.contains(str) 部分一致検索の結果を返す。df[df[].text.str.contains]で使えそう
df.to_pandas_df pandas.DataFrameとして返す。

20200925.追加
koalasというのも気になる。研究しよう。

20230116追加
polarsこれは良い。pandasから乗り換える要準備。

29
27
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
27