2016-08-07 4 views
0

私はいくつかのデータ分析を行っており、そのデータはパンダDataFramedfです。Python&Pandas:多くのdf.copyを使用するとコードのパフォーマンスに影響しますか?

dfで処理するために定義した機能がいくつかあります。封入ため

、私はこのような関数を定義:Jupyterノートで

def df_process(df): 
    df=df.copy() 
    # do some process work on df 
    return df 

を、Iは

df = df_process(df) 

としての機能を使用df.copy()を使用する理由は、そうでなければ、元のdfであろうことですそれを割り当てるかどうかにかかわらず、変更することができます。

  1. はここに適切なdf=df.copy()を使用している?私の質問がある

    Python & Pandas: How to return a copy of a dataframe?を参照してください)そうでない場合、関数はデータをどのように定義する必要がありますか?

  2. このようなデータ処理機能をいくつか使用しているため、プログラムのパフォーマンスに影響しますか?それと、いくらですか? 、あなたはコピーを作成する必要がある場合は、ここでキーがある

    def df_process(df): 
        # do some process work on df 
    
    def df_another(df): 
        # other processing 
    
    def df_more(df): 
        # yet more processing 
    
    def process_many(df): 
        for frame_function in (df_process, df_another, df_more): 
         df_copy = df.copy() 
         frame_function(df_copy) 
         # emit the results to a file or screen or whatever 
    

    一つだけを作り、プロセスには、どこかの結果を隠しておくと、その後df_copyを再割り当てすることによって、それを処分:

+0

メモリを増やすと、実行時間が長くなることがよくあります。どれくらい?それを測る。 – msw

+1

元のdfを元に戻すかどうかにかかわらず*なぜ変更されますか?リンクされた質問では、元のdfに新しい列を追加しています.HYRYの答えは、それを回避する方法を示しています。 – ayhan

答えて

1

は、はるかに良いでしょう。あなたの質問は、あなたが処理されたコピーにぶら下がっている理由について何の言及もしていないので、これは必要ではないと仮定しています。

関連する問題