human
Python Pandaデータフレームをどのように反復しますか？
gpt
Pandasにおける反復処理はアンチパターンであり、他のすべての選択肢を使い果たした場合にのみ行うべきものです。iter "が名前に付いた関数は、数千行以上使うべきではありません。

何かを計算したいのですか？その場合は、次の順序でメソッドを探す：
    1.ベクトル化
    2.Cythonルーチン
    3.リスト内包
    4.DataFrame.apply()
    5.DataFrame.itertuples() と DataFrame.iteritems()
    6.DataFrame.iterrows()

iterrowsとiteruplesは、逐次処理のための行オブジェクト／ネームタプルの生成など、非常に稀な状況で使用されるべきです。

多くの基本的な演算や計算は、pandasによって "ベクトル化 "されます（NumPyやCython化された関数によって）。これには、算術演算、比較、（ほとんどの）削減、リシェーピング、結合、groupby演算などが含まれます。
human
それぞれのコード例を教えてください。
gpt
もちろん！パンダの異なる反復方法のそれぞれのコード例は次のとおりです。

ベクトル化された操作：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = df ['col1'] + df ['col2']
印刷（df）
Cythonルーチン：
Cythonルーチンは、PythonのスーパーセットであるCython言語で書かれた関数です。コードの最もパフォーマンスの重要な部分をCythonで記述し、PythonコードのCython関数を呼び出すことができます。
Cythonを使用して2つの列を追加する例は次のとおりです。

PDとしてパンダをインポートします
npとしてnumpyをインポートします
Cython Import Boundscheck、Wraparoundから

@boundscheck（false）
@wraparound（false）
def cy_add_columns（double [：、：] df）：
    cdef int n = df.shape [0]
    cdef int m = df.shape [1]
    cdef double [：] res = np.empty（（n、m + 1）、dtype = np.double）
    範囲（n）のiの場合：
        range（m）のjの場合：
            res [i、j] = df [i、j]
        res [i、m] = df [i、0] + df [i、1]
    RESを返します

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
np_array = df.values
new_col = cy_add_columns（np_array）
df = pd.dataframe（new_col、columns = ['col1'、 'col2'、 'col3']））
印刷（df）


概念を一覧表示します：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = [x + y for x、y in zip（df ['col1']、df ['col2']]]]]
印刷（df）


dataFrame.Apply（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df ['col3'] = df.apply（lambda row：row ['col1'] + row ['col2']、axis = 1）
印刷（df）


dataframe.itertuples（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
df.itertuples（）の行の場合：
    df.at [row.index、 'col3'] = row.col1 + row.col2
印刷（df）


dataframe.iterrows（）：

PDとしてパンダをインポートします

df = pd.dataframe（{'col1'：[1、2、3]、 'col2'：[4、5、6]}）
インデックスの場合、行

ベクトル化：

df ['col3'] = df ['col1'] + df ['col2']


Cythonルーチン：使用する特定のルーチンに依存するため、適用されません。

概念を一覧表示します：

df ['col3'] = [x + y for x、y in zip（df ['col1']、df ['col2']]]]]


dataFrame.Apply（）：

def add_cols（row）：
    return row ['col1'] + row ['col2']
df ['col3'] = df.apply（add_cols、axis = 1）


dataframe.itertuples（）：

col3 = []
df.itertuples（）の行の場合：
    col3.append（row.col1 + row.col2）
df ['col3'] = col3


dataframe.iterrows（）：

col3 = []
インデックスの場合、df.iterrows（）の行：
    col3.append（row ['col1'] + row ['col2']）
df ['
human
各関数呼び出しを説明できますか？