分析を行う際に消費するRAMの量を管理するために、hdf5(.h5)に格納された大量のデータセットを持っており、Pandasを使用してこのデータセットを効率よく照会する必要があります。Pandas/Pythonを使用してHDFストアを照会する方法
データセットには、一連のアプリのユーザーパフォーマンスデータが含まれています。可能な限りいくつかのフィールドを抜き出し、得られたデータフレームを、興味のあるいくつかのアプリケーションのうちの1つを使用しているユーザーだけにフィルタしたいと思う。
# list of apps I want to analyze
apps = ['a','d','f']
# Users.h5 contains only one field_table called 'df'
store = pd.HDFStore('Users.h5')
# the following query works fine
df = store.select('df',columns=['account','metric1','metric2'],where=['Month==10','IsMessager==1'])
# the following pseudo-query fails
df = store.select('df',columns=['account','metric1','metric2'],where=['Month==10','IsMessager==1', 'app in apps'])
「app in app」という文字列は、私が望むものではないことを認識しています。これは単に私が達成したいと思うもののSQLのような表現です。どのような方法でも文字列のリストを渡すことはできませんが、方法が必要です。今、私は単純に、このパラメータなしでクエリを実行していますし、私は、私は以下のようなものを
df = df[df['app'].isin(apps)]
次のステップにしたくない。しかし、これはアプリケーションのALLため、あまり効率的であるアプリケーションをフィルタリングするために
私はそれらを削除する前に、まずメモリにロードする必要があります。場合によっては、フィルタリングされていないdf全体をサポートするのに十分なメモリがないため、これは大きな問題です。
私は助けていただきありがとうございます。これは私の最初のStackOverflowの質問ですので、アドバイスも歓迎します。
Thanks @Jeff。それは素晴らしい仕事をした –