채워가는 지식/AI

Data Manipulation

daco 2022. 9. 1. 17:57

pandas 로 데이터 합치기

데이터는 여러개의 파일로 나눠져 있을 수 있습니다.

효과적인 데이터 분석을 위해 합치는 것이 좋습니다.

pandas로 데이터를 합치는 2가지 방법을 소개 드리겠습니다.

 

1. concat

concat은 데이터를 이어 붙인다고 보시면 됩니다.

물론, 위의 그림처럼 깔끔하게 이어 붙이려면 col방향으로는 인덱스값, row방향으로는 feature값이 같아야합니다.

 

인덱스값이나 feature값이 다르다면 위의 그림처럼 합쳐질 것이고 빨간 사각형 부분은 NaN값으로 채워집니다.

 

2. merge

merge는 공통된 부분을 기반으로 합치는 것입니다.

 

 

Conditioning(조건화)

pandas에서는 조건에 맞는 데이터를 뽑아낼 수 있습니다.

예를 들어 feature에 대한 값이 숫자형이라면

condition = ((df['순이익률'] > 0) & (df['순이익률'] < 10))
df_subset = df[condition]

이런 식으로 df라는 데이터에서 '순이익률'이 0보다 크고 10보다 작은 데이터를 뽑아낼 수 있습니다.

 

예를 들어 feature에 대한 값이 범주형이라면

condition = df['테마'].isin(['주류'])
df_subset = df[condition]
condition = (df['테마'] == '주류')
df_subset = df[condition]

이런 식으로 df라는 데이터에서 '테마'가 '주류'인 데이터를 뽑아낼 수 있습니다.

 

Groupby

df라는 데이터에서 '테마'에 따라서 순이익률의 평균값을 알고 싶을 수도 있을 것입니다.

df.groupby('테마').순이익률.mean()

이런 식으로 구할 수 있고,

만약에 숫자형태가 '순이익률' 혼자라면

df.groupby('테마').mean()

이런 식으로 구할 수 있습니다.

 

이 때, 숫자 형태란 컴퓨터가 데이터를 받아들였을 때 int형이나 float형처럼 숫자로 받아 들여야 합니다.

즉, groupby로 구하고 싶은 값이 사람 눈에는 숫자로 보이는 str형 '123'이나 1,000처럼 콤마가 있다면 다 int형이나 float형으로 바꿔줘야 합니다.

대표적으로 dataframe에서는 apply 함수가 있습니다.

 

Tidy 데이터

위의 그림 예시는 왼쪽은 wide한 데이터 오른쪽은 tidy한 데이터입니다.

tidy한 데이터는 위의 그림처럼 1행에 1데이터가 들어가는 형태입니다.

tidy한 데이터로 바꿔주는 이유는 시각화 라이브러리에 유용하게 쓰이기 때문입니다.

 

wide에서 tidy로 바꿔주는 함수는 melt 함수가 있습니다.

tidy에서 wide로 바꿔주는 함수는 pivot_table 함수가 있습니다.