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
基本操作：
Python
コードをコピーします
PDとしてパンダをインポートします

＃データフレームの作成
df = pd.dataframe（{
    'col1'：[1、2、3、4]、
    'col2'：[10、20、30、40]、
    'col3'：['a'、 'b'、 'c'、 'd']
}）

＃頭と尾
印刷（df.head（2））＃最初の2行
＃col1 col2 col3
＃0 1 10 a
＃1 2 20 b

印刷（df.tail（2））＃最後の2行
＃col1 col2 col3
＃2 3 30 c
＃3 4 40 d

＃ 形
印刷（df.shape）＃（4、3）

＃列
print（df.columns）＃index（['col1'、 'col2'、 'col3']、dtype = 'object'）

＃ 情報
print（df.info（））
＃<class 'pandas.core.frame.dataframe'>
＃RAIRNGHINDEX：4つのエントリ、0〜3
＃データ列（合計3列）：
＃col1 4非ヌルINT64
＃col2 4非ヌルINT64
＃col3 4非ヌルオブジェクト
＃dtypes：int64（2）、object（1）
＃メモリ使用量：208.0+バイト
＃ なし

＃ 説明
print（df.describe（））
＃col1 col2
＃カウント4.000000 4.000000
＃平均2.500000 25.000000
＃STD 1.290994 14.142136
＃min 1.000000 10.000000
＃25％1.750000 17.500000
＃50％2.500000 25.000000
＃75％3.250000 32.500000
＃MAX 4.000000 40.000000

＃列の選択
印刷（df ['col1']）
＃0 1
＃1 2
＃2 3
＃3 4
＃名前：col1、dtype：int64

＃スライス行
印刷（df [1：3]）
＃col1 col2 col3
＃1 2 20 b
＃2 3 30 c

＃ブールインデックス
印刷（df [df ['col1']> 2]）
＃col1 col2 col3
＃2 3 30 c
＃3 4 40 d
Groupby Operations：
Python
コードをコピーします
PDとしてパンダをインポートします

＃データフレームの作成
df = pd.dataframe（{
    'col1'：[1、2、3、4、5]、
    'col2'：[10、20、30、40、50]、
    'col3'：['a'、 'b'、 'c'、 'd'、 'e']
}）

＃グループビー
グループ化= df.groupby（ 'col3'）

＃ 平均
print（grouped.mean（））
＃col1 col2
＃col3
＃A 1 10
＃B 2 20
＃c 3 30

ベクトル化された操作：

Python
コードをコピーします
PDとしてパンダをインポートします
npとしてnumpyをインポートします

＃データフレームの作成
df = pd.dataframe（{
    'col1'：[1、2、3、4]、
    'col2'：[10、20、30、40]、
    'col3'：['a'、 'b'、 'c'、 'd']
}）

＃算術操作
印刷（df ['col1'] + df ['col2']）
＃0 11
＃1 22
＃2 33
＃3 44

＃比較操作
印刷（df ['col1']> 2）
＃0 false
＃1 false
＃2真
＃3本当

＃再形成
print（df.pivot（index = 'col1'、columns = 'col3'、values = 'col2'））
＃col3 a b c d
＃col1
＃1 10.0ナンナンナン
＃2ナン20.0ナンナン
＃3ナンナン30.0ナン
＃4ナンナンナン40.0

＃ 加入
df1 = pd.dataframe（{
    'col1'：[1、2、3]、
    'col2'：[10、20、30]
}）
df2 = pd.dataframe（{
    'col1'：[2、3、4]、
    'col2'：[20、30、40]
}）
print（pd.merge（df1、df2、on = 'col1'））
＃col1 col2_x col2_y
＃0 2 10 20
＃1 3 30 30
Cythonルーチン：

Python
コードをコピーします
＃コードをCythonizeします
％load_ext cython

def sum_of_lists（n）：
    合計= 0
    範囲（n）のiの場合：
        合計 += i
    合計を返します

＃コードをcにコンパイルします
％cython -a sum_of_lists.py
リスペクト：

Python
コードをコピーします
＃データフレームの作成
df = pd.dataframe（{
    'col1'：[1、2、3、4]、
    'col2'：[10、20、30、40]、
    'col3'：['a'、 'b'、 'c'、 'd']
}）

＃リスト理解
col1_squared = [i ** 2 for df ['col1']]
印刷（col1_squared）
＃[1、4、9、16]
dataFrame.Apply（）：

Python
コードをコピーします
PDとしてパンダをインポートします

＃データフレームの作成
df = pd.dataframe（{
    'col1'：[1、2、3、4]、
    'col2'：[10、20、30、40]、
    'col3'：['a'、 'b'、 'c'、 'd']
}）

＃関数を定義します
def add_10（x）：
    x + 10を返します

＃関数を適用します
print（df ['col2']。適用（add_10）））
＃0 20
＃1 30
＃2 40
＃3 50


「ベクトル化された操作：
Python
コードをコピーします
PDとしてパンダをインポートします
npとしてnumpyをインポートします

データフレームの作成
df = pd.dataframe（{
'col1'：[1、2、3、4]、
'col2'：[10、20、30、40]、
'col3'：[1、2、3、4]
}）

算術操作
印刷（df ['col1'] + df ['col2']）

0 11
1 22
2 33
3 44
DTYPE：INT64
print（df ['col1'] -df ['col2']）

0 -9
1 -18
2 -27
3 -36
DTYPE：INT64
印刷（df ['col1'] * df ['col2']）

0 10
1 40
2 90
3 160
DTYPE：INT64
印刷（df ['col1'] / df ['col2']）

0 0.100000
1 0.100000
2 0.100000
3 0.100000
DTYPE：FLOAT64
比較操作
印刷（df ['col1']> 2）

0 false
1 false
2真
3真
名前：col1、dtype：bool
印刷（df ['col1'] <2）

0本当
1 false
2 false
3 false
名前：col1、dtype：bool
print（df ['col1'] == 2）

0 false
1真
2 false
3 false
名前：col1、dtype：bool
再形成
印刷（df.t）

0 1 2 3
Col1 1 2 3 4
COL2 10 20 30 40
COL3 1 2 3 4
参加
df2 = pd.dataframe（{
'col1'：[1、2、3、4]、
'col2'：[100、200、300、400]
}）

印刷（pd.concat（[df、df2]、axis = 1））

COL1 COL2 COL3 COL1 COL2
0 1 10 1 1 100
1 2 20 2 2 200
2 3 30 3 3 300
3 4 40 4 4 400
削減操作
print（df.sum（））

COL1 10
COL2 100
COL3 10
DTYPE：INT64
print（df.min（））

COL1 1
COL2 10
COL3 1
DTYPE：INT64
print（df.max（））

COL1 4
COL2 40
COL3 4
DTYPE：INT64
print（df.mean（））

COL1 2.5
COL2 25.0
COL3 2.5
DTYPE：FLOAT64
「