TIL/멋사_AI스쿨_TIL

220921 AI스쿨 TIL Pandas 기본 문법

둥둥런 2022. 9. 21. 23:17

오늘의 회고

사실(Fact)

  • Pandas 실습, Seaborn 시각화 실습
  • 엔스컴 콰르텟 그리기

느낌(Feeling)

  • 통계 이론과 용어에 대해 익숙하지 않아서 단순한 문법도 결과물이 어떤 것을 나타내는 지, 이해하는데 시간이 오래 걸려서 어려웠다.
  • 시각화 결과가 제대로 나올땐 재밌고 신기했다.

교훈(Finding)

  • 통계 관련 책을 읽어봐야겠다. (무료 ebook부터 꼼꼼히!)
  • 오늘 내용을 잘 복습해봐야겠다.
  • 오늘 배운 내용을 바탕으로 블로그명을 정할 수 있었다ㅎㅎ

Pandas 기본문법

데이터 프레임 (행과 열이 있는 구조)

컬럼 추가하기

df = pd.Dataframe()
df["컬럼명"] = ["A", "B", "C"]

칼럼 -> 리스트로 전환하는 법 :

df["칼럼명"].tolist() # list(df["칼럼명"])과 동일하다

데이터 지우는 법

df = df.drop("컬럼명", axis = 1)
# 데이터 지운후에 지운 값을 다시 변수에 할당해야 반영된다.
# axis 0:행, 1:컬럼을 의미한다.

데이터프레임 기초

  • df.info() 데이터 프레임의 요약 정보
  • df.shape 데이터 프레임의 크기 (행, 열)
  • df.dtypes 데이터의 타입
  • df.columns = [바꿀 column] 컬럼명 바꾸기
  • df.corr() 상관계수 보기
  • df.describe() 데이터 프레임의 요약정보, 수치형 데이터의 기술통계 값
    (평균, 표준편차, 최솟값, 최댓값 분산, 사분위수)
  • df.describe(include = "object") 범주형 데이터의 기술통계 값
    (개수, 빈도, 고유값, 최빈값, 유일값)

 

여러개의 컬럼 가져오기

df[["컬럼명1, 컬럼명2]] 
#리스트형으로 가져오기 위해 []로 한번 더 묶어줘야 한다

행 가져오기

df.loc[i]

loc와 iloc차이

  • loc[0] 1개는 행 정보
  • loc[0, 1] 두 개 들어가면 행, 열 정보이다
    df.loc[0:2, ["컬럼명1", "컬럼명2"]] -> 요렇게도 가능
  • 밸류값 그대로 가져오는 것이 loc
  • iloc는 순서대로 값을 가져오고자 할때

인덱스 설정하기

df.set_index
df.reset_index
df.set_index( ).loc[ "유니크값을 가진 컬럼명"] 
# 숫자 대신 문자를 인덱스로 활용하는 법

특정 정보만 가져오기
df[df["컬럼명"].str.contains("특정정보")]

  • 파이썬의 정규표현식에서는 |(파이프) 는 or를, &는 and를 의미한다.
  • a또는 에이 검색은 "에이 | a" 로 가능

파생변수

  • 기존 열에서 수정, 변경된 값으로 만들어진 새로운 열이라고 이해하였다
    ex) 소문자 변경 df["새로운 열"] = df["기존 열"].str.lower()

기타 키워드

  • np.nan type은 float
  • NA: not available, not applicable의 약어
  • 사분위수(Q1~Q4)
  • method chaining: .을 통해 매서드를 계속 덧붙이는 것
  • DF은 [[ ]] 대괄호가 두개!! 꼭 외우기
  • Code of Conduct: 커뮤니티에서의 태도, 기능 비교는 좋지만 존중해야함
  • 개발자에게는 문제해결능력이 중요! 다른 새로운 언어, 환경을 마주했을때 그 문제를 어떻게 해결해 나가는 지 과정이 중요하다

인코딩 방법

  • UTF-8 사용, 엑셀 한글 등은 cp949라 깨질 수 있음 기사 읽어보기
  • EUC-KR은 2,350자의 한글, CP949는 11,172자의 한글을 표현할 수 있다. 그러나 Java에서는 CP949와 MS949를 다르게 취급한다
  • 전 세계적으로 사용되는 모든 문자 집합을 하나로 모아 탄생시킨 것이 유니코드이다.
  • 이 중 ASCII와 호환이 가능하면서 유니코드를 표현할 수 있는 UTF-8 인코딩이 가장 많이 사용된다.

Seaborn 실습

기술통계를 살펴보면 mean(평균), std(표준편차), corr(상관계수) 값이 매우 유사하다. (소숫점 이하의 근소한 차이)

seaborn 내장 데이터셋을 활용한다.

sns.load_dataset("anscombe")

 

일부 데이터만 확인하기 (sample)

df.sample(frac = 0.2, random_state = 42)
  • random_state: random seed값, 랜덤한 값을 고정시켜주는 것
  • frac=0~1: 추출할 표본 비율

빈도수, 빈도수 비율 구하기 (value_counts)

# value_counts를 통해 dataset 의 빈도수 구하기
df["dataset"].value_counts()

# value_counts를 통해 dataset 의 빈도수 normalize로 비율 구하기
df["dataset"].value_counts(normalize=True) #한 개 변수에 대한 빈도수를 value count로 구한다

Seaborn 시각화

Seaborn으로 그릴 수 있는 그래프들의 관계 (dogplot은 없다 :ㅇ)


https://seaborn.pydata.org/tutorial/function_overview.html

  • relplot: 두 가지 변수의 관계를 나타내기 위해 주로 사용
  • displot : 변수 하나 혹은 두 개의 값 분포를 나타내기 위해 주로 사용
  • catplot: 범주형 변수와 연속형 변수 간의 관계를 나타내기 위해 주로 사용

 

countplot 빈도수 카운트 그래프

barplot 막대그래프

  • ci: int = 95, Confidence interval: 신뢰구간

violinplot: 분산 정보 포함

displot

그 밖에

  • scatterplot
  • regplot
  • lmplot
  • hist(히스토스램): 구간마다 빈도수 포함 (빈도 - bins)도수분포란? 정해진 계급에 변량이 분포되어 있는 정도를 표로 나타낸 것/ 어떤 기준에 의한 수의 분포
  • kdeplot
    커널 밀도 추정(kernal density estimation) 그래프로, 히스토그램이 절대량(count)을 표현한다면 kdeplotdms 상대량(비율)을 시각화 히스토그램과 마찬가지로 한개 혹은 두개의 변수에 대한 분포를 그릴 수 있음
  • boxplot

출처_파이썬을 활용한 데이터.AI 분석 사례, 건강보험심사평가원, 2021

강의내용 출처는 멋쟁이사자처럼 AI스쿨 7기 박조은 강사님 (오늘코드) 입니다.