DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
매개변수
index
columns
values
aggfunc
fill_value, dropna
margins/margins_name
DataFrame.apply(함수, axis=0, args=(), \*\*kwarg)
인수로 행이나 열을 받는 함수를 apply 메서드의 인수로 넣으면 데이터프레임의 행이나 열들을 하나씩 함수에 전달한다.
매개변수
Series.apply(함수, args=(), \*\*kwarg)
인수로 Series의 원소들을 받는 함수를 apply 메소드의 인수로 넣으면 Series의 원소들을 하나씩 함수로 전달한다.
매개변수
연속형(실수)을 범주형으로 변환시킨다.
pd.cut(x, bins,right=True, labels=None)
매개변수
x
bins
right
labels
np.random.seed(0)
# 1~99 사이의 난수 15개
age = np.random.randint(1,100,size=15)
# 평균: 170, 표준편차: 10 인 정규분포를 따르는 난수 15개.
# 170-10*2 ~ 170+10*2 범위. 평균에 가까운 값들이 많이 생성.
tall = np.round(np.random.normal(170,10,size=15),2)
# 사전을 사용 dataframe 생성
df=pd.DataFrame({
"나이":age,
"키":tall
})
df
나이 키
0 45 183.65
1 48 169.02
2 65 145.74
3 68 165.47
4 68 165.29
5 10 179.73
6 84 157.22
7 22 184.37
8 37 169.22
9 88 180.90
10 71 170.97
11 89 184.19
12 89 181.68
13 13 179.47
14 59 180.85
# cut 사용
나이대 = pd.cut(df['나이'], bins=3,
right=False,
labels=['나이대1','나이대2','나이대3'])
나이대
0 나이대2
1 나이대2
2 나이대3
3 나이대3
4 나이대3
5 나이대1
6 나이대3
7 나이대1
8 나이대2
9 나이대3
10 나이대3
11 나이대3
12 나이대3
13 나이대1
14 나이대2
Name: 나이, dtype: category
Categories (3, object): ['나이대1' < '나이대2' < '나이대3']
----------------------------------------------------
# '나이대'로 구한 범주값을 갖는 나이대1 컬럼 추가
df['나이대1'] = 나이대
df
나이 키 나이대1
0 45 183.65 나이대2
1 48 169.02 나이대2
2 65 145.74 나이대3
3 68 165.47 나이대3
4 68 165.29 나이대3
5 10 179.73 나이대1
6 84 157.22 나이대3
7 22 184.37 나이대1
8 37 169.22 나이대2
9 88 180.90 나이대3
10 71 170.97 나이대3
11 89 184.19 나이대3
12 89 181.68 나이대3
13 13 179.47 나이대1
14 59 180.85 나이대2
----------------------------------------------------
# bins 값 설정하기
# 나누는 기준점. (0~20], (20~40], (40~60], (60~90]
l = [0,20,40,60,90]
나이대2 = pd.cut(df['나이'], bins=l,
labels=['청소년','청년','장년','노년']
0 장년
1 장년
2 노년
3 노년
4 노년
5 청소년
6 노년
7 청년
8 청년
9 노년
10 노년
11 노년
12 노년
13 청소년
14 장년
Name: 나이, dtype: category
Categories (4, object): ['청소년' < '청년' < '장년' < '노년']
----------------------------------------------------
df['나이대2']=나이대2
df
나이 키 나이대1 나이대2
0 45 183.65 나이대2 장년
1 48 169.02 나이대2 장년
2 65 145.74 나이대3 노년
3 68 165.47 나이대3 노년
4 68 165.29 나이대3 노년
5 10 179.73 나이대1 청소년
6 84 157.22 나이대3 노년
7 22 184.37 나이대1 청년
8 37 169.22 나이대2 청년
9 88 180.90 나이대3 노년
10 71 170.97 나이대3 노년
11 89 184.19 나이대3 노년
12 89 181.68 나이대3 노년
13 13 179.47 나이대1 청소년
14 59 180.85 나이대2 장년
pd.qcut(x, q, labels)
대상배열의 최대값~ 최소값을 지정한 개수의 동등한 size가 되도록 나눈다.
매개변수
키대 = pd.qcut(df['키'], q=3,
'labels=['작은키','중간키','큰키'])
키대
0 큰키
1 작은키
2 작은키
3 작은키
4 작은키
5 중간키
6 작은키
7 큰키
8 중간키
9 큰키
10 중간키
11 큰키
12 큰키
13 중간키
14 중간키
Name: 키, dtype: category
Categories (3, object): ['작은키' < '중간키' < '큰키']
--------------------------------------------------
# 3등분 된 것을 확인 할 수 있다.
키대.value_counts()
작은키 5
중간키 5
큰키 5
Name: 키, dtype: int6
--------------------------------------------
df['키대'] = 키대
df
나이 키 나이대1 나이대2 키대
0 45 183.65 나이대2 장년 큰키
1 48 169.02 나이대2 장년 작은키
2 65 145.74 나이대3 노년 작은키
3 68 165.47 나이대3 노년 작은키
4 68 165.29 나이대3 노년 작은키
5 10 179.73 나이대1 청소년 중간키
6 84 157.22 나이대3 노년 작은키
7 22 184.37 나이대1 청년 큰키
8 37 169.22 나이대2 청년 중간키
9 88 180.90 나이대3 노년 큰키
10 71 170.97 나이대3 노년 중간키
11 89 184.19 나이대3 노년 큰키
12 89 181.68 나이대3 노년 큰키
13 13 179.47 나이대1 청소년 중간키
14 59 180.85 나이대2 장년 중간키