프로그래밍

[Python] Pandas Library(Series)(2)

RainIron 2021. 5. 6. 16:53
반응형

7. 공분산과 상관계수

* 공분산(Covariance): 2개의 확률변수의 선형 관계를 나타내는 값

    - cov > 0 : 관계있음

    - cov = 0 : 관계없음

    - cov < 0 : 관계없음

    - cov가 0보다 클 경우에만 유의한 정보로 활용될 수 있다. 단, 관계의 강도를 알 수 없다.

 

* 상관계수(Correlation): 두 변수 사이의 통계적 관계를 표현하기 위해 특정한 상관관계의 정도를 수치적으로 나타낸 값

    - 0 < corr < 1: 양의 상관관계

    - corr = 0: 서로 독립적

    - -1 < corr < 0 : 음의 상관관계

    - 상관계수를 통해 관계의 강도를 측정할 수 있다.

ser1 = pd.Series(np.random.randint(50, size = 100))
ser2 = pd.Series(np.random.randint(100, size = 100))

ser1.cov(ser2) # -4.599393939393946, 관계 없음

ser1.corr(ser2) # -0.012250465122233078, 음의 상관관계

 

8. Hierarchical Indexing and Leveling

ser3 = pd.Series(np.random.randint(low = 0, high = 50, size = 9),
		index=[['1분기','1분기','1분기','2분기','2분기','2분기','3분기', '3분기', '3분기'],
        	['개발','생산','인사','개발','총무','인사','연구','생산', '인사']])
'''

1분기  개발    19
       생산    34
       인사    26
2분기  개발    28
       총무    16
       인사     0
3분기  연구    48
       생산    49
       인사    22
dtype: int32

'''

ser3['2분기']
'''
개발     8
총무    25
인사    40
dtype: int32
'''

ser3[:, '인사']
'''
1분기    26
2분기    40
3분기     5
dtype: int32
'''

 

* 계층적 구조의 Series를 unstack() 메서드로 바꿔보면 return 값으로 DataFrame이 나온다.

ser3.unstack()

* 반대로 DataFrame을 stack() 메서드로 바꿔보면 return 값으로 층으로 쌓인 Series가 나온다.

df_tmp = ser3.unstack()

ser4 = df_tmp.stack()
ser4
'''
1분기  개발    19.0
       생산    34.0
       인사    26.0
2분기  개발    28.0
       인사     0.0
       총무    16.0
3분기  생산    49.0
       연구    48.0
       인사    22.0
dtype: float64
'''

 

9. Concatenation

* np.concatenate([합칠 배열들], axis = 0(default)): 행으로 쌓기

* np.concatenate([합칠 배열들], axis = 1): 열로 쌓기

a = np.arange(9).reshape(3, -1)
b = np.arange(9, 18).reshape(3, -1)
np.concatenate([a, b])
'''
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])
'''
np.concatenate([a, b], axis = 1)
'''
array([[ 0,  1,  2,  9, 10, 11],
       [ 3,  4,  5, 12, 13, 14],
       [ 6,  7,  8, 15, 16, 17]])
'''

 

* pd.concat([합칠 Series], axis = 0(default))

c = pd.Series(np.random.randint(0, 10, 5))
d = pd.Series(np.random.randint(0, 10, 5))
pd.concat([c, d])
'''
0    3
1    6
2    6
3    4
4    4
0    8
1    1
2    4
3    5
4    2
dtype: int32
'''

 

* pd.concat([합칠 Series], axis = 1): Series를 열로 쌓기 => return DataFrame

pd.concat([c, d], axis = 1)

Index가 같은 경우 NaN값이 나오지 않고 나란히 배치된다.

 

반응형

'프로그래밍' 카테고리의 다른 글

[Python] Data Aggregation  (0) 2021.05.09
[Python] Data Manipulation  (0) 2021.05.07
[Python] Pandas Library 활용(DataFrame)  (0) 2021.05.06
[Python] Pandas Library 활용(Series)(1)  (0) 2021.05.05
[Python] NumPy Library 활용(2)  (0) 2021.05.05