📊

DataFrame から Redis に登録してみた

2021/09/26に公開

Pandas の DataFrame から Redis に保存する方法を調べてみました。

コードはこちら

なお、Redisへの接続については前記事をご覧ください。

https://zenn.dev/megane_otoko/articles/064_redis_azure

登録するDataFrame

下記のデータをRedisに登録してみましょう。

df = pd.DataFrame(
    [
        ["Do", "Deer"],
        ["Re", "Ray"],
        ["Mi", "Me"],
        ["Fa", "Far"],    
    ],
    columns=["scale", "example"]
)

文字列データで登録

DataFrame を文字列データとして登録してみます。

for i in range(len(df1)):
    
    key = df1.iloc[i:i+1]["scale"].values[0]
    value = df1.iloc[i:i+1]["example"].values[0]
    
    r.set(key, value)

指定した Key の Value を出力してみます。

print(r.get("Do").decode('utf-8'))
Deer  

すべての Key と Value を出力させてみます。

for i in range(len(df)):
    
    key = df.iloc[i:i+1]["scale"].values[0]
    value = df.iloc[i:i+1]["example"].values[0]
    
    r.set(key, value)
Do Deer
Fa Far
Mi Me
Re Ray

ハッシュデータで登録

DataFrame型を辞書型に変換してハッシュデータとして登録してみます。

pd_dict = dict(zip(df1["scale"], df1['example']))

r.hset("scale", mapping=pd_dict)

https://note.nkmk.me/python-pandas-to-dict/

https://qiita.com/fukkyy/items/7dc27e9fde555a459f8a

https://stackoverflow.com/questions/61826300/how-to-switch-from-hmset-to-hset-in-redis

指定した Key の Value を出力してみます。

print(r.hget("scale", "Do").decode("utf-8"))
Deer

登録したハッシュデータをすべて出力してみます。

Key のみ、Value のみも可能です。

print(r.hgetall("scale")) # すべて

print(r.hkeys("scale")) # Key のみ

print(r.hvals("scale")) # value のみ
{b'Do': b'Deer', b'Re': b'Ray', b'Mi': b'Me', b'Fa': b'Far'}
[b'Do', b'Re', b'Mi', b'Fa']
[b'Deer', b'Ray', b'Me', b'Far']

binary で出力されるのが気持ち悪い場合は 内包表記を使ってみましょう。

 {k.decode("utf-8"):v.decode("utf-8") for k, v in r.hgetall("scale").items()}
{'Do': 'Deer', 'Re': 'Ray', 'Mi': 'Me', 'Fa': 'Far'}

https://note.nkmk.me/python-dict-create/

以上になります、最後までお読みいただきありがとうございました。

Discussion