세조목

Python - Pandas Series, Dataframe 만들기 & assign 메서드 본문

데이터 분석 공부/Python

Python - Pandas Series, Dataframe 만들기 & assign 메서드

세조목 2024. 3. 13. 17:50
df = df.assign(age2 = df['age'] +1,\
				age3 = lambda df_ : df_['age2'] + 1)

 

Series, Dataframe 만들기

Pandas는 Series와 Dataframe 두 개의 자료형을 제공한다.

 

아래와 같이 코드를 작성하여 Series와 Dataframe을 만들 수 있다.

# Series
df = pd.Series(data = ['john', 1], index=['name', 'age'])
 → 'data'와 'index'는 생략 가능

# Dataframe
df = pd.DataFrame({'name' : ['a', 'b', 'c'], 'age' : [11, 35, 12]})

 

데이터프레임을 만들때 index명을 별도로 지정해주고싶다면 아래와같이 입력해주면 된다.

pd.DataFrame({'job' : ['mathmatician', 'scientist'], 'age' : [13, 52], 'city' : ['daegu', 'seoul']}, index = ['john', 'tom'])

 

Assign 메서드

assign 메서드를 활용하면 새 열을 할당할 수 있다.

우선 assign 메서드의 공식은 아래와 같다.

데이터 프레임명.assign(추가할 열 이름 = 산식)

 

예시 데이터 프레임은 아래와 같다.

df = pd.DataFrame({'name' : ['a', 'b'], 'age' : [1, 3]})

 

age 컬럼 옆에 1년 뒤의 나이가 담겨있는 'age2'라는 이름의 열을 추가해보자

추가할 열 이름 = 'age2'

산식 = df['age'] + 1

이므로 아래와 같이 코드를 작성해주면

df = df.assign(age2 = df['age']+1)

age + 1의 값이 저장된 'age2' 컬럼이 새로 추가된 것을 확인할 수 있다.

 

추가적으로 assign 메서드에서도 lambda 함수를 활용할 수 있는데

현재 데이터프레임에는 없는 컬럼을 산식에 넣어야 할 때 lambda 함수를 활용한다.

예를들어 위와 같은 데이터 프레임의 age 컬럼에

1을 더한 age2 컬럼과 2를 더한 age3 컬럼을 한꺼번에 할당하고 싶은 경우를 가정해보자.

물론 age+1, age+2로 산식을 적을수도 있지만 예시를 위해 age3컬럼은 age2컬럼이 존재해야지만

할당할 수 있다고 가정했다.

 

df = df.assign(age2 = df['age'] +1,\
				age3 = lambda x : x['age2']+1)

위와 같이 코드를 작성하면 아래와 같이 'age2', 'age3' 컬럼이 추가된 것을 확인할 수 있다.