Help us understand the problem. What is going on with this article?

vaexを試してみた

More than 1 year has passed since last update.

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として返す。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした