0

これを行うための最良の方法は何かを理解しようとしています:

基本的に、スマートフォンでセンサー データをログに記録する一連の Android/iOS ユーザーがいますが、各ユーザーはアプリの起動時期などに応じて独自のタイムスタンプを持っています。つまり、2 人のユーザーがいるとします。

User 1: (5,45), (6,34), (8,32)
User 2: (5,35), (7,32), (9,32)

形式は (時刻 t と任意の値) です。

2 つのデータセットを同期する最善の方法は何ですか? ユーザー 2 に戻って、次のエントリ (6,35) を挿入すると言うアルゴリズムを作成する必要がありますか? したがって、最終的に新しいデータは次のようになります。

User 1: (5,45), (6,34), (7,34), (8,32), (9,32)
User 2: (5,35), (6,35), (7,32), (8,32), (9,32)

ただし、約 300 人のユーザーを想定しており、それぞれに約 36,000 のデータ エントリがあるため、これは非常にデータ集約型になる可能性があります。アドバイスをいただければ幸いです。また、アプリ側で私ができることで、それを助けることができれば幸いです。

すべてのデータが揃ったら、このようなことをしなければならないと思いますが、これは活発に開発されているプロジェクトなので、最初にアドバイスをもらうと思いました。

4

1 に答える 1

2

DataFrame各ユーザーのデータからを作成できます。次に、それらすべてを に保存しますPanel。Pandas は、タイムスタンプに基づいてそれらをすべて整列させます。フォワード フィル メソッドを使用してffill、値を伝播できます。

In [62]: df1 = DataFrame([45,34,32], index=[5,6,8], columns=['value'])

In [63]: df2 = DataFrame([35,32,32], index=[5,7,9], columns=['value'])

In [64]: p = Panel({'user1': df1, 'user2': df2})

In [75]: p.ffill().to_frame().unstack()
Out[75]:
       user1  user2
minor  value  value
major
5         45     35
6         34     35
7         34     32
8         32     32
9         32     32

または、シリーズとデータフレームだけを使用して同じことを行うこともできます。それはあなたがそれで何をしたいかによると思います:

In [78]: s1 = Series([45,34,32], index=[5,6,8])

In [79]: s2 = Series([35,32,32], index=[5,7,9])

In [80]: df = DataFrame([s1,s2])

In [81]: df
Out[81]:
    5   6   7   8   9
0  45  34 NaN  32 NaN
1  35 NaN  32 NaN  32

In [82]: df = DataFrame([s1,s2]).T

In [83]: df
Out[83]:
    0   1
5  45  35
6  34 NaN
7 NaN  32
8  32 NaN
9 NaN  32

In [84]: df.ffill()
Out[84]:
    0   1
5  45  35
6  34  35
7  34  32
8  32  32
9  32  32
于 2012-12-29T08:11:53.420 に答える