データフレーム内の2つの列(具体的にはgraphlab SFrameデータ構造)の違いを(日単位で)探したいと思います。Pythonの日時 - 計算の速度 - 大きなデータ
これを行うためにいくつかの関数を記述しようとしましたが、十分に速い関数を作成できないようです。処理速度は8000万〜8000程度です。
私は2つの異なる機能を試してみましたが、両方は遅すぎる:
t2_colname_strとt1_colname_str引数は、私が使用したいの列の名前であり、両方の列がdatetime.datetimeのオブジェクトが含まれています。ループ
def diff_days(sframe_obj,t2_colname_str,t1_colname_str):
import graphlab as gl
import datetime as datetime
# creating the new column name to be used later
new_colname = str(t2_colname_str[:-9] + "_DiffDays_" + t1_colname_str[:-9])
diff_days_list = []
for i in range(len(sframe_obj[t2_colname_str])):
t2 = sframe_obj[t2_colname_str][i]
t1 = sframe_obj[t1_colname_str][i]
try:
diff = t2 - t1
diff_days = diff.days
diff_days_list.append(diff_days)
except TypeError:
diff_days_list.append(None)
sframe_obj[new_colname] = gl.SArray(diff_days_list)
一覧理解
については
私は、これはリストの内包表記の目的ではないですけど、私はちょうどそれが速かった場合、それは見てみました。
def diff_days(sframe_obj,t2_colname_str,t1_colname_str):
import graphlab as gl
import datetime as datetime
# creating the new column name to be used later
new_colname = str(t2_colname_str[:-9] + "_DiffDays_" + t1_colname_str[:-9])
diff_days_list = [(sframe_obj[t2_colname_str][i]-sframe_obj[t1_colname_str][i]).days if sframe_obj[t2_colname_str][i] and sframe_obj[t1_colname_str][i] != None else None for i in range(len(sframe_obj[t2_colname_str]))]
sframe_obj[new_colname] = gl.SArray(diff_days_list)
追加メモ
私はそれが私の解析超高速になり、それは偉大なライブラリを持っているすべての計算を並列化する主な理由はダトとそのSFrameデータ構造によりGraphLab-作成し使用してきました機械学習アプリケーション用。あなたがすでにそれをチェックアウトしていないなら、それは素晴らしい製品です。 GraphLabユーザーガイドがここで見つけることができ
:https://dato.com/learn/userguide/index.html
使用しているSFrameを取得しようとすると「アクセスが拒否されました」というエラーが表示されます。 「Everyone」はダウンロード可能ですか?私はそれで遊ぶことに興味があるだろう。 –