본문 바로가기
Python/멋사_AIS7

Day 06

by Hi_heidi 2022. 9. 22.

Day06

  • github
    • issues 제기된 이슈 확인 가능
    • pull requests 레포지토리에 있는 브랜치에 푸시한 내역, 변경 사항 등을 다른 사람들에게 알리는 것
    • https://github.com/pandas-dev/pandas/pulls  

  • Pandas 기초(이어서)
    • 데이터 가져오기
      • df["약품명"]   #컬럼명으로 데이터 가져오기
      • df[["약품명","가격"]]   #2개 이상의 컬럼명 가져오기
      • df.loc[0] #행을 기준으로 데이터 가져오기
      • df.loc[[0,1,2]] #위에서 3개 행 데이터 가져오기
    • 약품명을 인덱스로 설정하고 가져오기
      • df.set_index("약품명")   #설정
      • df.set_index("약품명").loc["소화제"]   #가져오기
    • 설정한 인덱스 삭제하기
      • df = df.reset_index()
      • df = df.drop(["level_0","index"],axis=1)
    • 행과 열을 함께 가져오기
      • df.loc[0,"약품명"]   #1행 1열 값
      • df.loc[[0,1,2],"약품명"]
      • df.loc[[0,1,2],['약품명','가격']]
    • df[df["약품명"].str.contains( "vita")]   #특정 약품만 가져오기
    • df["약품명"].str.lower()   #약품명을 모두 소문자로
    • df["약품명_소문자"] = df["약품명"].str.lower()   #파생변수 만들기
      • .str. = accessor 
    • df[df["약품명_소문자"].str.contains("vita|비타")]
    • cf) 약품명_소문자 컬럼에서 vita|비타값이 들어가는 문자행 찾기    | == or / & == and
    • -
    • 정렬
      • df.sort_values(by="가격",ascending=False)   #오름차순 기본
      • df.sort_values(by=["가격","약품명"], ascending=[False, True])   #가격->약품명 순으로 정렬되며 가격과 약품명 정렬 각각에 정렬순서 부여
    • 파일로 저장하기
      • df.to_csv("drug.csv",index=False, encoding='cp949')   #index=False   자동으로 부여되는 인덱스는 저장하지 않겠다   #encoding='cp949'   한글 윈도우 엑셀에서 사용하는 인코딩 방식
      • pd.read_csv("drug.csv",encoding='cp949')   #저장된 파일 읽어오기

  • Seaborn
    • 일부 데이터 가져오기
      • df.head() == df.iloc[:5]
      • df.loc[:2]   #iloc와 다르게 인덱스 컬럼도 가져옴
      • df.loc[:2, "x":"y"]   #특정 열(x,y)만 가져올수도
      • df.iloc[:5, :2] #이 방법도 가능
      • df.sample(3)   #샘플 몇 개 랜덤으로 가져오기
      • df.sample(frac=0.05, random_state=42)   #frac = 0.05 전체의 0.05%만 추출하겠다. 디폴트값 = 1
    • 기본 정보 보기
      • df.info()
      • df.describe()   #기술통계
      • df.describe(include="object")   #범주형 데이터의 기술통계
    • dataset
      • df["dataset"]   #전체 데이터 시리즈 형태로 확인
      • df["dataset"].unique()   #고유값 보기
      • df_1 = df[df["dataset"] == "I"]   #서브셋 만들기
    • 각 subset의 기술통계
      • df_1.corr()   #상관계수 = -1 ~1 사이의 값. 1에 가까운 값은 우상향 그래프, 0은 선형 상관관계가 없음
    • 시리즈 형태로 빈도수 보기
      • df["dataset"].value_counts()
      • df["dataset"].value_counts(normalize=True)   #빈도수 비율로 나타내기
    • groupby로 dataset별 기술통계
      • desc = df.groupby("dataset")[["x", "y"]].describe()   #x,y에 대한 기술통계값을 내고 기본 정보를 보겠다
      • df.groupby("dataset").describe()   #같은 결과
    • 시각화
      • countplot
        • 빈도 시각화에 주로 사용
        • sns.countplot(data=df, x='dataset')   #x를 dataset축으로 지정
        • sns.countplot(data=df, y="dataset")  #y를 dataset축으로 지정
      • barplot
        • 범주형 변수의 그래프를 시각화할 때 주로 사용
        • estimator에 mean이 저장되어 있어 기본값으로 평균을 구한다
        • 단: 대표값만 표현하기 때문에 값의 분포를 알기 어렵다
        • sns.barplot(data=df, x='dataset', y='x', ci=None)   #ci = 신뢰도. 기본적으로 95%의 신뢰도를 가지며 ci=None으로 빼고 보는 것을 권장
        • sns.barplot(data=df, x='dataset',y='y', ci=None, estimator=np.sum)   #estimator=np.sum 으로 합계를 구해 시각화할 수 있다
      • boxplot
        • 이상치 값 확인할 때 주로 사용
        • 이상치, 최소값, 중앙값, 최대값 확인 가능
        • 값의 분포를 보기 쉽다
        • 단: 데이터의 변화를 반영하지 않는다
        • sns.boxplot(data=df, x='dataset',y='y')
      • violinplot
        • 히스토그램(수치 분포의 분포)의 밀도를 추정해서 시각화할 때 사용
        • 값이 변화하면 분포가 달라진다는 특징
        • sns.violinplot(data=df, x='dataset',y='y')
      • scatterplot
        • 수치변수 간 분포를 시각화할 때 주로 사용
        • sns.scatterplot(data=df, x='x', y='y', hue='dataset')
      • regplot
        • 회귀선을 구할 수 있다
        • hue 지원X
        • sns.regplot(data=df, x='x', y='y')
      • lmplot
        • hue 지원
        • dataset별로 subplot을 그릴 수 있다
        • 평균, 표준편차, 상관관계 값이 비슷하더라도 그래프의 모양은 매우 다를 수 있다
        • sns.lmplot(data=df, x='x', y='y', hue='dataset', col='dataset', col_wrap=2)   #col = 서브플롯              #col_wrap 한 줄에 2개씩 플롯을 그려준다
 

 
  • 퀴즈
#요약 수치
1사분위 수=하위 25%
2사분위 수=중앙값
3사분위 수=상위 25%

#편차=관측값-평균(또는 중앙값)

#도수분포표
양적 데이터를 질적 데이터로 변환할 때 쓰임
도수분포에 사용할 수 있는 그래프: 히스토그램, 선그래프, 막대그래프, 원그래프 등
나이의 구간을 정해 연령대로 나누어 도수분포로 만들 수 있음

#히스토그램
가로축=계급, 세로축=도수인데 반대로 그리기도 함
계급은 변수의 구간이고 서로 겹칠 수 없음
표로 되어있는 도수분포를 그래프로 나타낸 것
막대그래프는 계급(가로)를 생각하지 않고 세로의 높이로만 나타내지만 
히스토그램은 가로와 세로를 함께 생각해야

#상관관계
피어슨 상관계수 = 두 변수의 공분산을 표준 편차의 곱으로 나눈 값
0은 선형 상관관계가 없음
상관관계 != 인과관계
 

출처) 멋쟁이 사자처럼 AI스쿨 7기 박조은 강사님 강의자료

'Python > 멋사_AIS7' 카테고리의 다른 글

Day 10  (0) 2022.09.27
Day 09  (0) 2022.09.27
Day 05  (1) 2022.09.21
Day 04  (0) 2022.09.20
Day 01~03  (0) 2022.09.19