일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MySQL완전삭제
- 백준알파벳파이썬
- 백준 바이러스
- 소프티어 장애물인식프로그램
- 백준 평범한배낭
- 프로그래머스
- 1987파이썬
- 피아노체조 파이썬
- CRUD
- 백준 등수매기기
- MongoDB
- express
- 파이썬데이터분석라이브러리
- 백준 점프 파이썬
- 백준 피아노체조
- jenkins
- express mongodb
- 백준 점프
- 백준 전쟁 파이썬
- 소프티어 지도자동구축
- 등수매기기 파이썬
- 금고털이 파이썬
- 파이썬 평범한배낭
- 백준 A->B
- 장애물인식프로그램 파이썬
- 백준
- 백준 전쟁-전투
- 지도자동구축 파이썬
- 백준 예산
- 도커 컨테이너
- Today
- Total
바위 뚫는중
데이터 분석을 위한 라이브러리_2 본문
NIPA-AI 온라인교육[기본교육과정] 데이터 분석을 위한 라이브러리_2
04. 데이터 조작 및 분석을 위한 Pandas 심화
01. 데이터프레임 정렬하기
index 값 기준으로 정렬하기
axis = 0 : 행 인덱스 기준 정렬 (default 오름차순)
df = df.sort_index(axis = 0)
axis = 1 : 열 인덱스 기준 내림차순 정렬 (ascending = True : 오름차순, False: 내림차순)
df.sort_index(axis = 1, ascending = False)
col1 컬럼 기준 정렬(Defualt 오름차순)
df.sort_values('col1', ascending = True)
col1 컬럼 기준 내림차순 정렬
df.sort_values('col1', ascending = False)
col2 컬럼 기준 오름차순 정렬 후 col1 컬럼 기준 내림차순 정렬
df.sort_values(['col2', 'col1'], ascending = [True, False])
02. 데이터프레임 분석용 함수
집계함수 - count
count 메서드 활용하여 데이터 개수 확인 가능
(Default : NaN값 제외)
data = {
'Korean' = [50, 60, 70],
'math' = [10, np.nan, 40]]
}
df = pd.DataFrame(data, index = ['a','b','c'])
df.count(axis=0) #열 기준
df.count(axis=1) #행 기준
열 기준(Series)
korean 3
math 2
dtype: int64
행 기준(Series)
a 2
b 1
c 2
dtype: int64
집계함수 - max, min
max, min 메서드 활용하여 최대, 최소값 확인가능
(Defualt: 열 기준, NaN값 제외)
data = {
'Korean' = [50, 60, 70],
'math' = [10, np.nan, 40]]
}
df = pd.DataFrame(data, index = ['a','b','c'])
df.max() #최댓값
df.min() #최솟값
최댓값(Series)
korean 70.0
math 40.0
dtype: float64
최솟값(Series)
korean 50.0
math 10.0
dtype: float64
집계함수 - sum, mean
sum, mean 메서드 활용하여 합계 및 평균 계산 (Defualt: 열 기준, NaN값 제외)
data = {
'Korean' = [50, 60, 70],
'math' = [10, np.nan, 40]]
}
df = pd.DataFrame(data, index = ['a','b','c'])
df.sum() #합계
df.mean() #평균
합계(Series)
korean 180.0
math 50.0
dtype:float64
평균(Series)
korean 60.0
math 25.0
dtype:float64
axis, skipna 인자 활용하여 합계 및 평균 계산(행 기준, NaN값 포함 시)
skipna = True : NaN 값 무시! → 만약 60과 NaN의 평균이 있다면, 60!
skipna = False : NaN 값 포함! → 60과 NaN의 평균이 있다면 NaN!
data = {
'Korean' = [50, 60, 70],
'math' = [10, np.nan, 40]]
}
df = pd.DataFrame(data, index = ['a','b','c'])
df.sum(axis=1) #합계
df.mean(axis=1, skipna=False) #평균
합계(Series)
a 60.0
b 60.0
c 110.0
dtype: float64
평균(Series)
a 30.0
b NaN
c 55.0
dtype float64
NaN값이 존재하는 column의 평균 구하여 NaN값 대체(fillna)
B_avg = df['math'].mean()
print(B_avg) #25.0
#NaN값 대체
df['math'] = df['math'].fillna(B_avg)
#평균
df.mean(axis=1, skipna=False)
평균(Series)
a 30.0
b 42.5
c 55.0
dtype: float64
03. 그룹으로 묶기
group by
간단한 집계를 넘어서서 조건부로 집계하고 싶은 경우
df = pd.DataFrame({
'data1' : range(6),
'data2' : [4,4,6,0,6,1].
'key':['A,'B','C','A','B','C']
})
df.groupby('key').sum() #1번
df.groupby(['key','data1']).sum() #2번
df
data1 data2 key
0 0 4 A
1 1 4 B
2 2 6 C
3 3 0 A
4 4 6 B
5 5 1 C
1번
data1 data2
key
A 3 4
B 5 10
C 7 7
2번
data1 data2
key
A 0 4
3 0
B 1 4
4 6
C 2 6
5 1
aggregate
groupby를 통해서 집계를 한번에 계산하는 방법
df.groupby('key').aggregate(['min', np.median, max]) #1번
df.groupby('key').aggregate({'data1':'min', 'data2':np.sum}) #2번
filter
groupby를 통해서 그룹 속성을 기준으로 데이터 필터링
def filter_by_mean(x):
return x['data2'].mean() > 3
df.groupby('key').mean() #1번
df.groupby('key').filter(filte_by_mean) #2번
apply.lambda
groupby를 통해서 묶인 데이터에 함수 적용
df.groupby('key').apply(lambda x: x.max() - x.min())
get_group
groupby로 묶인 데이터에서 key값으로 데이터를 가져올 수 있음
df = pd.read_csv("./univ.csv")
#상위 5개 데이터
df.head()
#데이터 추출
df.groupby("시도").get_group("충남")
len(df.groupby("시도").get_groupby("충남"))
'Data, AI' 카테고리의 다른 글
[딥러닝] 심층 신경망의 기본 동작 과정, DNN, 퍼셉트론, MLP, Softmax Classifier (0) | 2023.01.23 |
---|---|
[ML] 사이킷런 설치 및 구현 (m1 macbook) (0) | 2022.09.14 |
데이터 분석을 위한 라이브러리_1 (0) | 2022.08.12 |