Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Archives
Today
Total
관리 메뉴

여유로움

[11.17 수] 빅데이터 분석기사 실기 - Pandas (6~9강) 본문

셀프스터디/빅데이터 분석기사

[11.17 수] 빅데이터 분석기사 실기 - Pandas (6~9강)

티로즈 2021. 11. 17. 21:49

1. 데이터 정렬하기

  • DataFrame.sort_values(컬럼명, ascending=True)
  • DataFrame.sort_values([컬럼명1, 컬럼명2, ...], ascending=[...])
  • 오름차순이 기본이며, ascending=False를 사용하여 내림차순 지정
  • 1차기준, 2차기준 등 여러 개 기준이 존재하는 경우
    • 1차기준 정렬 된 후, 1차기준이 같은 것 내부에서 2차기준으로 정렬됨
    • 정렬방법은 각 기준별로 부여하거나, 1개만 부여할 수 있음
# [1-31] 'subscriber' 가 가장 많은 5개의 채널을 알아봅니다.
df.sort_values('subscriber',ascending=False).head(5)
# [1-32] 'view'가 가장 많은 5개 채널을 알아봅니다
df.sort_values('view', ascending=False).head(5)
# [1-35] 'category'로 오름차순, 'subscriber'로 내림차순 정렬해 봅니다.      
df.sort_values(['category','subscriber'],ascending=[TrueFalse]) #Category 오름차순 기준으로 subscriber 내림차순

 

2. Boolean Indexing *개념이해 중요

  • DataFrame.loc[조건, :]
  • DataFrame[조건]
  • 조건은 boolean dtype이어야 하며 행의 수와 같아야 함
  • 복잡한 조건 작성
    • (조건1) | (조건2) : 조건1 또는 조건2를 만족하는 데이터
    • (조건1) & (조건2) : 조건1, 조건2 모두 만족하는 데이터
    • ~(조건) : 조건이 거짓인 데이터
# [1-37] 카테고리가 '음악/댄스/가수'인 채널의 subscriber TOP5를 알아봅니다.
df[df['category']=='음악/댄스/가수'].sort_values('subscriber',ascending=False).head(5)

 

3. Series의 value가 목록에 포함된 내용인지 확인(isin)

  • Series.isin([내용1, 내용2, ...]) : Series에 포함된 내용이 목록에 있는 경우 True, 없으면 False인 Boolean Series 반환 (Boolean indexing에 사용)
# [1-36] 'category'별 채널의 개수를 알아봅니다.
df['category'].value_counts()
# [1-40] 카테고리가 'TV/방송' 이거나 '게임'인 채널의 개수를 확인합니다.
df[(df['category']=='TV/방송') | (df['category']=='게임')] <=같은 결과물=> df[df['category'].isin(['TV/방송','게임'])]
# [1-41] 카테고리가 '음악/댄스/가수'인 채널의 subscriber TOP5를 알아봅니다. (isin 활용)
df[df['category'].isin(['음악/댄스/가수'])].sort_values('subscriber', ascending=False).head(5)
# [1-43] video가 30000이상 35000이하인 채널을 알아봅니다.
df[(df['video']>=30000) & (df['video']<=35000)]

 

4. Series의 str Accessor 사용

  • str.contains('문자열') : 특정 문자열을 포함하는지 아닌지를 True/False로 반환 (Boolean Indexing 조건으로 사용 가능)
  • str.upper() : 영문자 소문자를 대문자로 변경
  • str.lower() : 영문자 대문자를 소문자로 변경
  • 세부 내용 : https://pandas.pydata.org/docs/reference/series.html#string-handling
Series의 데이터를 list 및 ndarray로 반환
  • Series.to_list() : Series의 values를 list로 반환
  • Series.to_numpy() : Series의 values를 ndarray로 반환 (Series.values 와 동일)
# [1-44] title에 'KBS'가 포함된 채널 명 목록을 만들어 봅니다.
df.loc[df['title'].str.contains('KBS'),'title'].to_numpy() #multi-access
# 대소문자 구분 없이 검색 하려면?
df.loc[df['title'].str.upper().str.contains('KBS'),'title'].to_numpy() #multi-access

 

5. 통계값 알아보기

  • DataFrame.describe() : 숫자형 데이터타입을 갖는 컬럼에 대해 count, mean, std, min, max, Q1, Q2, Q3 등의 통계값 구하기
  • Series.count() : 개수
  • Series.sum() : 합계
  • Series.mean() : 평균
  • Series.std() : 표준편차
  • Series.var() : 분산
  • Series.median() : 중앙값
  • Series.mode() : 최빈값
  • Series.quantile([0.5, 0.75]) : 분위수 #목록을 주어 설정 가능(2분위수,3분위수)
# 소수점 아래 2째자리까지 표시되도록 설정하기
pd.options.display.float_format = '{:,.2f}'.format
# [1-45] subscriber, view, video에 대한 통계값을 알아봅니다. (describe 사용)
df.describe()
# [1-49] 'video'의 분산과 표준편차를 구합니다.
print(df['video'].var(), df['video'].std())
# [1-50] 'subscriber'의 최대, 최소값을 구합니다.
print(df['subscriber'].max(), df['subscriber'].min())
# 최빈값 ( 결과는 series )
df['subscriber'].mode()[0]
# [1-51] 'subscriber'의 Q1, Q2, Q3(25% 50%, 75%) 를 구합니다.
df['subscriber'].quantile([0.250.50.75])
# IQR = Q3-Q1(3분위수-1분위수)

6. 그룹별 통계치 구하기

그룹별 통계치 구하기
  • DataFrame.groupby(그룹명).적용할통계함수()
    • DataFrame의 함수 적용 가능 컬럼들에 대해 그룹별 통계치를 구함
    • 통계함수에는 sum, mean, std, var, min, max, count, quantile 등이 있음
# [1-52] category 별 subscriber, view, video에 대한 평균을 표시합니다.
df.groupby('category').mean()
# [1-53] category 별 view, video에 대한 합계를 표시합니다.
df.groupby('category')[['view']].sum()

 

출처 : 유튜브 채널 EduAtoZ