web-dev-qa-db-ja.com

pyarrowを使用してRedisにPandasデータフレームを設定/取得する方法

使用する

dd = {'ID': ['H576','H577','H578','H600', 'H700'],
      'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}
df = pd.DataFrame(dd)

Pre Pandas 0.25、これは以下で機能しました。

set:  redisConn.set("key", df.to_msgpack(compress='zlib'))
get:  pd.read_msgpack(redisConn.get("key"))

現在、非推奨の警告があります。

FutureWarning: to_msgpack is deprecated and will be removed in a future version.
It is recommended to use pyarrow for on-the-wire transmission of pandas objects.

The read_msgpack is deprecated and will be removed in a future version.
It is recommended to use pyarrow for on-the-wire transmission of pandas objects.

Pyarrowはど​​のように機能しますか?そして、pyarrowオブジェクトをRedisに入れたり、Redisから戻したりするにはどうすればよいですか。

参照: pandas.DataFrameをRedisに設定/取得する方法

11
Merlin

pandas redisに格納するデータフレームのシリアル化にpyarrowを使用する完全な例を示します

apt-get install python3 python3-pip redis-server
pip3 install pandas pyarrow redis

そしてPythonで

import pandas as pd
import pyarrow as pa
import redis

df=pd.DataFrame({'A':[1,2,3]})
r = redis.Redis(Host='localhost', port=6379, db=0)

context = pa.default_serialization_context()
r.set("key", context.serialize(df).to_buffer().to_pybytes())
context.deserialize(r.get("key"))
   A
0  1
1  2
2  3

私は PR 28494 をpandasに提出して、このpyarrowの例をドキュメントに含めました。

リファレンスドキュメント:

12
shadi