59doit
[Pandas] 넘파이에 의한 랜덤난수 본문
반응형
import pandas as pd
import numpy as np
▷
넘파이에 의한 랜덤난수
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'),
index=['Utah', 'Ohio', 'Texas', 'Oregon'])
frame
# <출력>
# b d e
# Utah 0.274992 0.228913 1.352917
# Ohio 0.886429 -2.001637 -0.371843
# Texas 1.669025 -0.438570 -0.539741
# Oregon 0.476985 3.248944 -1.021228
np.abs(frame)
▷
lambda
f = lambda x:x.max() - x.min()
frame.apply(f)
# <출력>
# b 1.394034
# d 5.250581
# e 2.374144
# dtype: float64
▷
axis=1 열방향(좌>우)로 추출 ; axis='columns'
frame.apply(f,axis='columns')
# <출력> Utah 1.124004
# Ohio 2.888067
# Texas 2.208767
# Oregon 4.270171
# dtype: float64
# axis=1 열방향(좌>우)
# axis=0 행방향 (위>아래)로 추출
# axis 연산을 수행할 축, DataFrame 에서 0 은 로우고 1 은 컬럼
▷
소수점 2로 적용 > 적용은 컬럼 위주로
format = lambda x : '%2f' % x
frame.applymap(format)
# <출력>
# b d e
# Utah 0.274992 0.228913 1.352917
# Ohio 0.886429 -2.001637 -0.371843
# Texas 1.669025 -0.438570 -0.539741
# Oregon 0.476985 3.248944 -1.021228
frame['e'].map(format)
# <출력>
# Utah 1.352917
# Ohio -0.371843
# Texas -0.539741
# Oregon -1.021228
# Name: e, dtype: object
sort
obj = pd.Series(range(4),index=['d','a','b','c'])
obj.sort_index()
# <출력>
# a 1
# b 2
# c 3
# d 0
# dtype: int64
▷
로우 컬럼 축 기준으로 정렬
frame=pd.DataFrame(np.arange(8).reshape((2,4)),
index=['three','one'],columns=['d','a','b','c'])
frame
# <출력>
# d a b c
# three 0 1 2 3
# one 4 5 6 7
▷
axis = 0 ; 행방향 (위>아래)로 추출
frame.sort_index(axis=0)
# <출력>
# d a b c
# one 4 5 6 7
# three 0 1 2 3
▷
axis = 1 ; 열방향 (좌>우)
frame.sort_index(axis=1)
# <출력>
# a b c d
# three 1 2 3 0
# one 5 6 7 4
▷
내림차순으로 정렬
frame.sort_index(axis=1,ascending=False)
# <출력>
# d c b a
# three 0 3 2 1
# one 4 7 6 5
▷
객체 정렬 _ sort_values 사용
obj = pd.Series([4, 7, -3, 2])
obj.sort_values()
# <출력>
# 2 -3
# 3 2
# 0 4
# 1 7
# dtype: int64
▷
비어있는값은 정렬시 맨뒤로
obj = pd.Series([4,np.nan,7,np.nan,-3,2])
obj.sort_values()
# <출력>
# 4 -3.0
# 5 2.0
# 0 4.0
# 2 7.0
# 1 NaN
# 3 NaN
# dtype: float64
▷
하나이상의 컬럼에 있는 값으로 정렬
frame = pd.DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
frame
# <출력>
# b a
# 0 4 0
# 1 7 1
# 2 -3 0
# 3 2 1
frame.sort_values(by='b')
# <출력>
# b a
# 2 -3 0
# 3 2 1
# 0 4 0
# 1 7 1
- 여러개의 컬럼 정렬
frame.sort_values(by=['a','b'])
# <출력>
# b a
# 2 -3 0
# 0 4 0
# 3 2 1
# 1 7 1
rank
obj= pd.Series([7,-5,7,4,2,0,4])
obj
# <출력>
# 0 7
# 1 -5
# 2 7
# 3 4
# 4 2
# 5 0
# 6 4
# dtype: int64
▷
obj.rank()
# 0 6.5
# 1 1.0
# 2 6.5
# 3 4.5
# 4 3.0
# 5 2.0
# 6 4.5
# dtype: float64
객체의 평균값이 나오는게 아니라 순위의 평균값
4등이 두개 있으면 4.5 7등이 두개있으면 6.5
- 지정컬럼으로 정렬??????
obj.rank(method='first')
# <출력>
# 0 6.0
# 1 1.0
# 2 7.0
# 3 4.0
# 4 3.0
# 5 2.0
# 6 5.0
# dtype: float64
▷
내림차순 순위 정렬 obj.rank(ascending=False)
obj.rank(ascending=False, method='max')
# <출력>
# 0 2.0
# 1 7.0
# 2 2.0
# 3 4.0
# 4 5.0
# 5 6.0
# 6 4.0
# dtype: float64
▷
데이터 프레임 에서는 로우나 컬럼에 대해 순위 결정
frame = pd.DataFrame({'b': [4.3, 7, -3, 2],
'a': [0, 1, 0, 1],
'c': [-2, 5, 8, -2.5]})
frame
# <출력>
# b a c
# 0 4.3 0 -2.0
# 1 7.0 1 5.0
# 2 -3.0 0 8.0
# 3 2.0 1 -2.5
frame.rank(axis='columns')
# <출력>
# b a c
# 0 3.0 2.0 1.0
# 1 3.0 1.0 2.0
# 2 1.0 2.0 3.0
# 3 3.0 2.0 1.0
▷
중복색인 허용
obj = pd.Series(range(5), index=['a', 'a', 'b', 'b', 'c'])
obj
# <출력>
# a 0
# a 1
# b 2
# b 3
# c 4
# dtype: int64
유일하지 않고 중복된 값이 있으면 False▼
obj.index.is_unique
# <출력>False
▷
중복색인이여도 로우 선택 가능
df = pd.DataFrame(np.random.randn(4, 3), index=['a', 'a', 'b', 'b'])
df
# <출력>
# 0 1 2
# a -1.265934 0.119827 -1.063512
# a 0.332883 -2.359419 -0.199543
# b -1.541996 -0.970736 -1.307030
# b 0.286350 0.377984 -0.753887
df.loc['b']
# <출력>
# 0 1 2
# b -1.541996 -0.970736 -1.307030
# b 0.286350 0.377984 -0.753887
# a, b 에 해당하는 값 두줄씩 나와도
# 색인에 해당하는 값 다 나옴
반응형
'Programming > Python(파이썬)' 카테고리의 다른 글
[Python-Pandas] 파일경로설정 (0) | 2022.11.09 |
---|---|
[Python-Pandas] 수학메서드 (0) | 2022.11.09 |
[Python] indexing (0) | 2022.11.08 |
[Pandas] arr (0) | 2022.11.08 |
[Pandas] #4 ser (0) | 2022.11.08 |
Comments