pandas DataFrame에 저장된 데이터를 for 문으로 처리하는 경우 단순히 for 문으로 돌리면 열 이름이 출력되기만 합니다.
반복 처리를 하기 위해서는 메서드를 사용해 열 또는 행 단위로 값을 취득해야 합니다.
예제를 보면서 DataFrame에서 반복 처리를 하며 값을 취득하는 방법을 보겠습니다.
먼저 샘플 데이터를 준비하겠습니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
print(df)
# age state point
# Alice 24 NY 64
# Bob 42 CA 92
먼저 for 문으로 단순히 DataFrame을 반복처리 해보겠습니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for column_name in df:
print(type(column_name))
print(column_name)
print('======\n')
# <class 'str'>
# age
# ======
#
# <class 'str'>
# state
# ======
#
# <class 'str'>
# point
# ======
#
컬럼 이름이 순서대로 출력되었습니다.
DataFrame에 저장된 데이터는 전부 출력되지 않았습니다.
1열 취득 iteritems()
1열씩 값을 취득하는 방법을 보겠습니다.
iteritems()를 사용하면 하나의 열씩 컬럼명과 같이 값을 더블 형태로 취득합니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for column_name, item in df.iteritems():
print(type(column_name))
print(column_name)
print('~~~~~~')
print(type(item))
print(item)
print('------')
print(item['Alice'])
print(item[0])
print(item.Alice)
print('======\n')
# <class 'str'>
# age
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice 24
# Bob 42
# Name: age, dtype: int64
# ------
# 24
# 24
# 24
# ======
#
# <class 'str'>
# state
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice NY
# Bob CA
# Name: state, dtype: object
# ------
# NY
# NY
# NY
# ======
#
# <class 'str'>
# point
# ~~~~~~
# <class 'pandas.core.series.Series'>
# Alice 64
# Bob 92
# Name: point, dtype: int64
# ------
# 64
# 64
# 64
# ======
#
1행 취득
이번에는 반복 처리를 하면서 한 줄씩 데이터를 취득하는 방법을 보겠습니다.
한 줄씩 데이터를 취득하는 방법으로는 iterrows()와 itertuples() 메서드가 있습니다.
iterrows()를 사용해 취득하는 방법을 보겠습니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for index, row in df.iterrows():
print(type(index))
print(index)
print('~~~~~~')
print(type(row))
print(row)
print('------')
print(row['point'])
print(row[2])
print(row.point)
print('======\n')
# <class 'str'>
# Alice
# ~~~~~~
# <class 'pandas.core.series.Series'>
# age 24
# state NY
# point 64
# Name: Alice, dtype: object
# ------
# 64
# 64
# 64
# ======
#
# <class 'str'>
# Bob
# ~~~~~~
# <class 'pandas.core.series.Series'>
# age 42
# state CA
# point 92
# Name: Bob, dtype: object
# ------
# 92
# 92
# 92
# ======
#
컬럼명 또는 인덱스를 지정해 해당하는 열의 값을 취득할 수 있습니다.
이번에는 itertuples() 사용 방법과 결과를 보겠습니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for row in df.itertuples():
print(type(row))
print(row)
print('------')
print(row[3])
print(row.point)
print('======\n')
# <class 'pandas.core.frame.Pandas'>
# Pandas(Index='Alice', age=24, state='NY', point=64)
# ------
# 64
# 64
# ======
#
# <class 'pandas.core.frame.Pandas'>
# Pandas(Index='Bob', age=42, state='CA', point=92)
# ------
# 92
# 92
# ======
#
인덱스 또는 컬럼명으로 각각의 값에 접근해 취득할 수 있습니다.
반복처리 중 특정 컬럼의 값만 출력하고 싶은 경우는 컬럼명을 지정해 출력하면 됩니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for age in df['age']:
print(age)
# 24
# 42
for 문에 여러개 컬럼을 지정하고 싶은 경우에는 zip() 함수를 같이 사용합니다.
import pandas as pd
df = pd.DataFrame({'age': [24, 42], 'state': ['NY', 'CA'], 'point': [64, 92]},
index=['Alice', 'Bob'])
for age, point in zip(df['age'], df['point']):
print(age, point)
# 24 64
# 42 92
for문과 zip() 함수에 대한 자세한 내용을 아래를 참조해 주세요.
DataFrame에 저장된 값을 for 문을 사용해 취득하는 방법을 알아봤습니다.
댓글