1、通过pickle序列化的方式
import pandas as pd
import pickle
import redis
rs = redis.StrictRedis(host='127.0.0.1')
df=pd.DataFrame([range(5)]*5,index=list('HELLO'),columns=list('HELLO'))
df_bytes = pickle.dumps(df)
rs.set('test_df', df_bytes)
df_bytes_from_redis = rs.get('test_df')
df_from_redis = pickle.loads(df_bytes_from_redis)
print(df_from_redis)
2、通过df.to_msgpack的方式
import pandas as pd
import pickle
import redis
rs = redis.StrictRedis(host='127.0.0.1')
df=pd.DataFrame([range(5)]*5,index=list('HELLO'),columns=list('HELLO'))
df_bytes = df.to_msgpack()
rs.set('test_df', df_bytes)
df_bytes_from_redis = rs.get('test_df')
df_from_redis = pd.read_msgpack(df_bytes_from_redis)
print(df_from_redis)
这种方式打印下df_bytes可以看到转出来的字节流大概是pickle的1/4,测试下来转换的时间也要比pickle的快3-4倍
本文介绍了两种将Pandas DataFrame存储到Redis的方法:一种是利用pickle进行序列化,另一种是使用to_msgpack方法。通过对比发现,to_msgpack方式不仅减少了存储大小(大约为pickle的1/4),而且提高了转换效率(速度提升约3-4倍)。
4072

被折叠的 条评论
为什么被折叠?



