python에서 일반적으로 사용하는 함수들과
유사하게 판다스에도 적용가능함
하지만 숫자 1개 가 아니라 dataframe을 가공하는
기능이 추가적으로 존재함
DataFrame.round(decimals=0, args, kwargs)
반올림해주는 함수임 파이썬의 round함수와
동일 decimals는 소수 몇째 자리인지 정의하는 부분
decimals = 1이면 소수2째자리에서 반올림함
decimals = -1이면 일의 자리에서 반올림함
단 출력들은 모두 실수로 반환
number = 35.45275
for i in range(-1,3):
print(round(number,i))
print('\n-----------\n')
import pandas as pd
import numpy as np
## 난수 발생기
data = np.random.rand(2,2)*100
df = pd.DataFrame(columns = ['col1','col2'],index = ['index1','index2'],data = data)
print(df)
print('\n-----------\n')
for i in range(-1,3):
print(df.round(i))
print('\n-----------\n')
-결과 (이미지)
round 함수를 실행하기 전에
numpy 패키지 내에 ramdom 패키지가 있으며
그 안에 rand 메소드가 있음
rand함수는 0-1 사이의 랜덤 float형 숫자를 반환함
rand(2,3)은 2행 3열에 0-1사이 랜덤float형 숫자를 반환함
판다스 round함수 예제 결과는 python의 round와 동일
DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, kwargs)
합을 구해주는 함수임
axis가 0이면 각 열의 값을 모두 더해주는 연산을 함
axis가 1이면 각 행의 값을 모두 더해주는 연산을 함
skipna는 True 와 False가 될 수 있으며
기본적으로 True의 값을 가짐
True의 경우는 NaN을 무시하고 모두 더해줌
False의 경우는 NaN을 포함하면 NaN을 반환해줌
min_count가 2일 경우는 계산에 필요한 숫자의
갯수가 2는 되어야함
3*3행렬에서 axis가 0인데 첫번째 열에 NaN이 2개이고
min_count가 2이면 NaN을 반환함
import pandas as pd
import numpy as np
data = [[1,2,3],[4,np.NaN,6],[7,8,9]]
df = pd.DataFrame(columns = ['col1','col2','col3'],index = ['index1','index2','index3'],data = data)
print(df)
print('\n-----------\n')
print(df.sum(skipna = True,axis=0,min_count = 0))
print('\n-----------\n')
print(df.sum(skipna = False,axis=0,min_count = 0))
print('\n-----------\n')
print(df.sum(skipna = True,axis=0,min_count = 3))
print('\n-----------\n')
print(df.sum(skipna = True,axis=1,min_count = 0))
print('\n-----------\n')
-결과 (이미지)
DataFrame.prod(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, kwargs)
sum과 내부요소는 동일하며 더하는 것이 아니라
곱하는 함수임
import pandas as pd
import numpy as np
data = [[1,2,3],[4,np.NaN,6],[7,8,9]]
df = pd.DataFrame(columns = ['col1','col2','col3'],index = ['index1','index2','index3'],data = data)
print(df)
print('\n-----------\n')
print(df.prod(skipna = True,axis=0,min_count = 0))
print('\n-----------\n')
print(df.prod(skipna = False,axis=0,min_count = 0))
print('\n-----------\n')
print(df.prod(skipna = True,axis=0,min_count = 3))
print('\n-----------\n')
print(df.prod(skipna = True,axis=1,min_count = 0))
print('\n-----------\n')
-결과 (이미지)
DataFrame.abs( )는 절대값을
반환하는 함수임
NaN은 NaN으로 반환
import pandas as pd
import numpy as np
data = [[1,2,3],[4,np.NaN,6],[-7,-8,-9]]
df = pd.DataFrame(columns = ['col1','col2','col3'],index = ['index1','index2','index3'],data = data)
print(df)
print('\n-----------\n')
print(df.abs())
print('\n-----------\n')
-결과 (이미지)
DataFrame.transpose(args, copy=False)
는 행열을 뒤집는 합수임
2*4 행렬이면 4*2으로 변환
import pandas as pd
data = [[1,2,3,4],[5,6,7,8]]
df = pd.DataFrame(columns = ['col1','col2','col3','col4'],index = ['index1','index2'],data = data)
print(df)
print('\n-----------\n')
print(df.transpose())
print('\n-----------\n')
-결과 (이미지)
DataFrame.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)
rank함수는 값을 정해주는 함수임
axis가 0이면 행의 순위를 결정해주며
axix가 1이면 열의 순위를 결정해줌
method는 동순위를 어떻게 표현해줄지 결정해주는 요소
data가 1,2,2,3 이면 'average'는 'min'의 방식과 같이
낮은등수로 표시를 하면서
2가 2개 이므로 2.5로 표현함
'min'은 2를 공동 2로 낮은 등수로 표시 3은 4번째라서 4등
'max'는 2를 공동 3으로 큰 숫자의 등수로 표시
'first'면 먼저 두번째 2에 2등 세번째 2에 3등을 표시
'dense'는 'min'과 같이 동작하지만 차이점은 등수가 연속된
정수형으로 증가해서 3은 3등이 됨
import pandas as pd
import numpy as np
data = [[1],[2],[2],[2],[3],[3],[4],[5],[6],[np.NaN]]
l_index = ['index' + str(i) for i in range(1,len(data)+1)]
df = pd.DataFrame(columns = ['col1'],index = l_index,data = data)
print(df)
print('\n-----------\n')
df['average'] = df['col1'].rank(method='average')
df['min'] = df['col1'].rank(method='min')
df['max'] = df['col1'].rank(method='max')
df['first'] = df['col1'].rank(method='first')
df['dense'] = df['col1'].rank(method='dense')
print(df)
-결과 (이미지)
Nan에도 순위를 부여할수 있는 옵션이 존재함
na_option이 존재함
na_option이 'keep'이면 순위에도 NaN을 반환해주고
default 옵션은 'keep'과 같음
'top'은 1등을 부여하며 bottom은 꼴등을 부여함
pct는 백분위로 표시하는 옵션임
import pandas as pd
import numpy as np
data = [[1],[2],[2],[2],[3],[3],[4],[5],[6],[np.NaN]]
l_index = ['index' + str(i) for i in range(1,len(data)+1)]
df = pd.DataFrame(columns = ['col1'],index = l_index,data = data)
print(df)
print('\n-----------\n')
df['keep'] = df['col1'].rank(na_option='keep')
df['top'] = df['col1'].rank(na_option='top')
df['bottom'] = df['col1'].rank(na_option='bottom')
df['pct'] = df['col1'].rank(pct='True')
print(df)
-결과 (이미지)
태그
-------------------------------------------------------------
#python, #파이썬, #anaconda, #아나콘다, #기초, #클래스, #class, #import, #selenium, #셀레늄, #자동, #교육, #코딩교육, #coding, #chatgpt, #챗GPT, #로봇,
'파이썬판다스 따라하기 > 3판다스연산' 카테고리의 다른 글
#판다스연산4편 - 판다스 diff pct_change expending rolling groupby ewm 함수 (31) | 2023.06.01 |
---|---|
#판다스연산2편 - 판다스 mod pow dot함수 (21) | 2023.05.27 |
#판다스연산1편 - 판다스 사칙연산 (22) | 2023.05.27 |