IT/Python

Pandas(판다스) - 파이썬을 활용한 데이터 분석 기초 #6

디지털 은행원 이야기 2022. 9. 27. 23:25
반응형

Pandas

안녕하세요.

벌써 파이썬과 관련해 6번째 글을 쓰게 됐네요.

이번 시간 역시 Pandas와 관련해 알아보도록 하겠습니다.

 

Pandas에서도 누락된 데이터를 체크할 수 있습니다.

isnull의 경우 비어있으면 True, notnull의 경우 비어있지 않으면 True를 return해줍니다. 또한 데이터를 비우거나 채울수도 있는데요.

아래의 예제를 통해 알아보도록 하겠습니다.

dataframe.isnull()
dataframe.notnull()

# 비어있는 행을 없애기
dataframe.dropna()

# 전화번호가 없는 행이 있으면 '전화번호 없음'으로 채우기
# 비어있는 값을 삭제하지 않고 0 혹은 평균값과 같은 값으로 대체할때 주로 사용
dataframe['전화번호'] = dataframe['전화번호'].fillna('전화번호 없음')

A = pd.Series([2, 4, 6], index=[0, 1, 2])
# 0  2
# 1  4
# 2  6
# dtype: int64

B = pd.Series([1, 3, 5], index=[1, 2, 3])
# 1  1
# 2  3
# 3  5
# dtype: int64

A + B
# NaN
# 5.0
# 9.0
# NaN
# dtype: float64

A.add(B, fill_value=0)
# 비어있는 값들은 0으로 전달
# 2.0
# 5.0
# 9.0
# 5.0
# dtype: float64

 

다음으로는 DataFrame에서 사용할 수 있는 기본적인 연산입니다.

기본적으로 사용할 수 있는 사칙연산으로는 add(+), sub(-), mul(*), div(/) 가 있습니다.

또한, Numpy Array에서 사용했던 sum, mean  등을 동일하게 활용할 수 있습니다.

A = pd.DataFrame(np.random.randint(0, 10, (2, 2)), columns=list("AB"))
#    A  B
# 0  2  4
# 1  0  1

B = pd.DataFrame(np.random.randint(0, 10, (3, 3)), columns=list("BAC"))
#    B  A  C
# 0  0  2  3
# 1  0  4  1
# 2  6  0  4

A + B
#    A    B    C
# 0  4.0  4.0  NaN
# 1  4.0  1.0  NaN
# 2  NaN  NaN  NaN

A.add(B, fill_value=0)
#    A    B    C
# 0  4.0  4.0  3.0
# 1  4.0  1.0  1.0
# 2  0.0  6.0  4.0

# 집계함수
# numpy array에서 사용했던 sum, mean 등을 활용할 수 있다.
data = {
     'A': [ i+5 for i in range(3) ],
     'B': [ i**2 for i in range(3)]
}
#    A  B
# 0  2  4
# 1  0  1
# 2  7  4

df = pd.DataFrame(data)
df['A'].sum() # 18
df.sum()
# A   18
# B   5
# dtype: int64

df.mean()
# A   6.000000
# B   1.666667
# dtype: float64

 

다음으론 함수 중에 값으로 정렬을 할 수 있는 함수에 대해 알아보겠습니다.

df = pd.DataFrame({
     'col1' : [2, 1, 9, 8, 7, 4],
     'col2' : ['A', 'A', 'B', np.nan, 'D', 'C'],
     'col3' : [0, 1, 9, 4, 2, 3],
})
#    col1  col2  col3
# 0   2     A     0
# 1   1     A     1
# 2   9     B     9
# 3   8    NaN    4
# 4   7     D     2
# 5   4     C     3

# 값으로 정렬하기
df.srot_values('col1')
# col1에 있는 값들로 정렬, 기본이 오름차순이고 ascending=Flase 를 사용하면 내림차순 정렬
#    col1  col2  col3
# 1   1     A     1
# 0   2     A     0
# 5   4     C     3
# 4   7     D     2
# 3   8    NaN    4
# 2   9     B     9

df.sort_values('col1', ascending=False)
df.sort_values(['col2', 'col1'])
#    col1  col2  col3
# 0   2     A     0
# 1   1     A     1
# 2   9     B     9
# 3   8    NaN    4
# 4   7     D     2
# 5   4     C     3

# 위의 DataFrame이 아래의 형태로 정렬됨

#    col1  col2  col3
# 1   1     A     1
# 0   2     A     0
# 2   9     B     9
# 5   4     C     3
# 4   7     D     2
# 3   8    NaN    4

 

이제까지 Pandas 의 기초에 관해 알아보았습니다.

다음시간부터는 Pandas와 관련해 조금 더 심화된 내용을 공부해보도록 하겠습니다.

감사합니다.

반응형