데이터 분석을 하기 위한
전처리 작업이나
혹은
데이터 조작 시
데이터를 행 단위로 읽어서
처리해야 하는 상황이
많은 데요.
이럴 때, 활용할 수 있는
다양한 방안들이 있는데요.
여기서는 2가지 방안에 대해서
살펴보겠습니다.
실습 데이터: 붓꽃 데이터
조건: 데이터를 행 단위로 읽어
PetalWidth(꽃잎폭)이 0.2보다 작거나 같으면 0,
0.2보다 크고 1보다 작거나 같으면 1,
1보다 크고 2보다 작거나 같으면 2,
2보다 크면 3이라는 값을 가지는
group이라는 변수 생성하기
실습 데이터
1. iloc, loc 함수 활용
해당 함수에 대한 자세한 설명은
아래 링크를 참고해 주세요.
import pandas as pd
## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")
## for문을 이용해서 irisData의 인덱스 기준으로 데이터 처리
for i in range(len(irisData)) :
if irisData.loc[i,'PetalWidth'] <= 0.2 :
irisData.loc[i,'group1'] = 0
elif irisData.loc[i,'PetalWidth'] <= 1 :
irisData.loc[i,'group1'] = 1
elif irisData.loc[i,'PetalWidth'] <= 2 :
irisData.loc[i,'group1'] = 2
else :
irisData.loc[i,'group1'] = 3
print(irisData)
2. iterrows() 함수 활용
iterrows() 함수는 DataFrame 행을
(인덱스, 시리즈) 쌍으로 반복하는 함수
입니다.
기본 구조는
DataFrame.iterrows()
입니다.
지금은 간단한 예제이기 때문에
loc와 iloc를 사용할 때와
계산에 소요되는 시간이
차이가 없는 것처럼 보이는데요.
대용량 데이터를 처리할 때 보면
iterrows()가 빠릅니다.
import pandas as pd
## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")
# 빈 list 지정
group2 = []
for idx, var1 in irisData.iterrows():
if var1['PetalWidth'] <= 0.2 :
group2.append(0)
elif var1['PetalWidth'] <= 1 :
group2.append(1)
elif var1['PetalWidth'] <= 2 :
group2.append(2)
else :
group2.append(3)
irisData['group2'] = group2
print(irisData)
반환되는 숫자 형식이 다를 뿐,
출력된 결과는 같은 것을 보실 수 있습니다.
3. itertuples() 함수 활용
itertuples() 함수는 첫 번째 필드가 인덱스가 되고,
다음 필드가 열 값이 되는 DataFrame의 각 행에 대해
명명된(named) 튜플을 반복하는 함수입니다.
기본 구조는
DataFrame.itertuples()
입니다.
지금은 간단한 예제이기 때문에
loc와 iloc, iterrows()를 사용할 때와
계산에 소요되는 시간이
차이가 없는 것처럼 보이는데요.
대용량 데이터를 처리할 때 보면
itertuples()를 사용할 때의
연산 속도가 가장 빠릅니다.
import pandas as pd
## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")
# 빈 list 지정
group3 = []
for var2 in irisData.itertuples():
if var2.PetalWidth <= 0.2 :
group3.append(0)
elif var2.PetalWidth <= 1 :
group3.append(1)
elif var2.PetalWidth <= 2 :
group3.append(2)
else :
group3.append(3)
irisData['group3'] = group3
print(irisData)
반환되는 숫자 형식이 다를 뿐,
출력된 결과는 같은 것을 보실 수 있습니다.
'Python > Pandas' 카테고리의 다른 글
Pandas 데이터를 그룹화하는 가장 좋은 방법(groupby, Grouper) (0) | 2022.06.01 |
---|---|
pandas value_counts() 함수 (0) | 2022.05.02 |
pandas rank() 함수 - 숫자 데이터의 순위 계산 함수 (0) | 2022.03.06 |
pandas 문자열 메서드 str. (0) | 2022.02.13 |
pandas 데이터 결합 함수 merge() (0) | 2022.02.13 |
댓글