Pandas์ DataFrame์์ ํ์ ์ํ(iterate)ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋ค. ํ์ง๋ง Pandas๋ ๋ฒกํฐํ ์ฐ์ฐ์ด ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฅํ๋ฉด apply() ๊ฐ์ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ธ์ ํ์ ์ํํด์ผ ํ ๊น? ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ผ๊น? ์ด๋ฒ ๊ธ์์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.
1. iterrows() ์ฌ์ฉํ๊ธฐ
iterrows()๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ ์ค ํ๋์ง๋ง, ์ฑ๋ฅ์ด ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค. ๊ฐ ํ์ index, Series ํํ๋ก ๋ฐํํ๋ค.
import pandas as pd
# ์์ ๋ฐ์ดํฐ
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# iterrows ์ฌ์ฉ
for index, row in df.iterrows():
print(f"Index: {index}, A: {row['A']}, B: {row['B']}")
# Index: 0, A: 1, B: 4
# Index: 1, A: 2, B: 5
# Index: 2, A: 3, B: 6
์ฃผ์: iterrows()๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ ํ์ ์ด ์ ์ง๋์ง ์์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ ์ํ(int) ๋ฐ์ดํฐ๊ฐ ๋ถ๋์์(float)๋ก ๋ณํ ์ ์์.
2. itertuples() ์ฌ์ฉํ๊ธฐ
itertuples()๋ iterrows()๋ณด๋ค ๋น ๋ฅด๋ฉฐ, ํ์ ํํ ํ์์ผ๋ก ๋ฐํํ๋ค. namedtuple์ ์ฌ์ฉํ์ฌ ์์ฑ์ฒ๋ผ ์ ๊ทผํ ์ ์๋ค.
# itertuples ์ฌ์ฉ
for row in df.itertuples(index=True):
print(f"Index: {row.Index}, A: {row.A}, B: {row.B}")
# Index: 0, A: 1, B: 4
# Index: 1, A: 2, B: 5
# Index: 2, A: 3, B: 6
์ฅ์ : iterrows()๋ณด๋ค ๋น ๋ฅด๊ณ , ๋ฐ์ดํฐ ํ์ ์ด ์ ์ง๋จ.
3. apply() ์ฌ์ฉํ๊ธฐ
Pandas์์ ๊ถ์ฅํ๋ ๋ฐฉ์ ์ค ํ๋๋ apply()๋ฅผ ํ์ฉํ๋ ๊ฒ์ด๋ค. ๋ฒกํฐํ ์ฐ์ฐ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ํจ์ฌ ์ข๋ค.
def process_row(row):
return row['A'] + row['B']
df['sum'] = df.apply(process_row, axis=1)
print(df)
# A B sum
# 0 1 4 5
# 1 2 5 7
# 2 3 6 9
์ฅ์ : ๋ฐ๋ณต๋ฌธ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ , ์ฝ๋๋ ๊ฐ๊ฒฐํจ.
4. zip()์ ํ์ฉํ ๋ฆฌ์คํธ ์ํ
zip()์ ํ์ฉํ๋ฉด iterrows()๋ณด๋ค ๋น ๋ฅด๊ฒ ํน์ ์ด์ ๊ธฐ์ค์ผ๋ก ์ํํ ์ ์๋ค.
for a, b in zip(df['A'], df['B']):
print(f"A: {a}, B: {b}")
# A: 1, B: 4
# A: 2, B: 5
# A: 3, B: 6
์ฅ์ : iterrows()๋ณด๋ค ๋น ๋ฅด๊ณ , ํน์ ์ด๋ง ํ์ํ ๊ฒฝ์ฐ ํจ๊ณผ์ .
5. NumPy ๋ฒกํฐํ ์ฐ์ฐ ํ์ฉ
๊ฐ๋ฅํ๋ฉด NumPy ๋ฒกํฐ ์ฐ์ฐ์ ํ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋น ๋ฅด๋ค.
import numpy as np
df['sum'] = np.add(df['A'], df['B'])
print(df)
# A B sum
# 0 1 4 5
# 1 2 5 7
# 2 3 6 9
์ฅ์ : ๋ฒกํฐ ์ฐ์ฐ์ด๋ฏ๋ก ์๋๊ฐ ๊ฐ์ฅ ๋น ๋ฆ.
์ ๋ฆฌ
๋ฐฉ๋ฒ | ์๋ | ์ฅ์ | ๋จ์ |
iterrows() | ๋๋ฆผ | ์ฝ๋ ์ดํดํ๊ธฐ ์ฌ์ | ๋ฐ์ดํฐ ํ์ ์ ์ง ์ ๋จ |
itertuples() | ์ค๊ฐ | iterrows()๋ณด๋ค ๋น ๋ฅด๊ณ ํ์ ์ ์ง | ์์ฑ ์ ๊ทผ ๋ฐฉ์ ํ์ |
apply() | ๋น ๋ฆ | ๋ฒกํฐ ์ฐ์ฐ์ด ๊ฐ๋ฅํจ | ํจ์ ์์ฑ ํ์ |
zip() | ๋น ๋ฆ | ํน์ ์ด๋ง ํ์ํ ๋ ์ ์ฉ | ์ ์ฒด DataFrame ์ํ ๋ถ๊ฐ๋ฅ |
NumPy ์ฐ์ฐ | ๊ฐ์ฅ ๋น ๋ฆ | ์ต์ ํ๋ ๋ฒกํฐ ์ฐ์ฐ ํ์ฉ | Pandas ๋ฌธ๋ฒ๊ณผ ๋ค์ ๋ค๋ฆ |
๊ฐ๋ฅํ๋ฉด apply()๋ ๋ฒกํฐํ ์ฐ์ฐ์ ํ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ํ์ง๋ง ํน์ ํ ๊ฒฝ์ฐ์๋ iterrows()๋ itertuples()๋ ์ ์ฉํ ์ ์์ผ๋ฏ๋ก, ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํ์.

'๊ฐ๋ฐ Code > ํ์ด์ฌ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python][pandas] Parquet ํ์ผ ํฌ๋งท: ๊ณ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ต์ ํ๋ ์ปฌ๋ผ ์ ์ฅ ๋ฐฉ์ (0) | 2025.02.19 |
---|---|
[Python][pandas] Sorting Data - sort (0) | 2025.02.13 |
[Python][pandas] Loading Data - Excel (0) | 2025.02.13 |
[Python][program] CLI ASCII art ๋ฐ๋ ํ์ธ ๋ฉ์ธ์ง ์ฐ๊ธฐ (0) | 2025.02.12 |
[Python][pandas] Loading Data - CSV (0) | 2025.02.11 |