데이터분석 기초 | 데이터 로드(pd.read_) | 헤더 없는 데이터 로드(header = None) | 일부 행 건너뛰기 skiprows() | 결측값 데이터 로드 | 인코딩 에러 해결 | 출력 가능 데이터 수 지정 pd.set_option() | 데이..

    728x90

     

     

    1. 데이터 로드하기

     

    : 로드할 데이터 파일은 (현재 자신이 코딩하고 있는) 프로그램의 코드가 저장되는 곳과 동일한 위치에 미리 저장해두기

    : 판다스로 저장한 외부 데이터셋을 로드

    : 판다스의 데이터 로드 관련 함수들은 데이터 로드와 동시에 데이터 타입도 추론함
    : 대표적인 csv 파일을 기준으로 로드

     

     

    ▶ 판다스 라이브러리 설치

    import pandas as pd

     


    2. 데이터 읽어오기

     

    2-1) 데이터 읽기

     

    ▶ pd.read_csv

    : csv 파일 데이터 읽어오기

    df = pd.read_csv('./datasets/example_1.csv')
    
    df  # 데이터프레임 형식으로 읽어옴

     

    ▶ pd.read_table

    : csv파일 데이터를 테이블로 읽어오기

    : 함수의 매개변수 중 구분자를 의미 >> sep 쉼표

    pd.read_table('./datasets/example_1.csv', sep = ',')

     


    2-2) 열 이름이 따로 없는 경우의 데이터 로드

     

    : 이 경우에는 헤더 영역(열 이름 영역)을 데이터가 차지함.

    : [아래 예시 참고] 12345 Hello는 데이터인데 열 이름으로 들어가 있음.

    pd.read_csv('./datasets/example_2.csv')

     

    header = None

    : 헤더가 없는 데이터의 경우, 데이터의 1행을 헤더로 만들지 말라고 지정

    pd.read_csv('./datasets/example_2.csv', header = None)

     

    ▶ 'names = ' 로 열 이름 직접 지정하기

    pd.read_csv('./datasets/example_2.csv', names=['컬럼1', '컬럼2', '컬럼3', '컬럼4', '컬럼5', '키워드'])

     

    ▶ 'index_col =  '로 특정 열을 인덱스로 지정하기

    col_names = ['컬럼1', '컬럼2', '컬럼3', '컬럼4', '컬럼5', '키워드']  
    pd.read_csv('./datasets/example_2.csv', names = col_names, index_col = '키워드')

     


    2-3) 일부 행 건너뛰고 로드하기

     

    ▶ skiprows = [  ,  ]

    pd.read_csv('./datasets/example_1.csv', skiprows=[1, 3])

     


    2-4) 결측값이 있는 데이터 로드하기

     

    ▶ 판다스에서 결측값 표시는 NaN

    na_data = pd.read_csv('./datasets/example_3.csv')   # NA(결측값) 가 포함된 데이터 로드하기
    na_data

     

    pd.isnull()

    : 결측값 판단 함수

    : NaN 문자가 표시된 동일 위치에 True 값 출력

    pd.isnull(na_data)

     

     

    ▶ Null, NaN 외 다른 값도 결측값으로 지정해보기

    : step에 있는 'one', 'two'도 결측값으로 지정

    : pd.isnull(na_data)로 확인해보면 one과 two 자리도 True로 출력됨

    na_data = pd.read_csv('./datasets/example_3.csv', na_values=['Null', 'NaN', 'one', 'two'])
    na_data

     


    3. 인코딩 관련 에러 대응하기

     

    : 인코딩할 때 타입을 맞춰야 함

    : 한글 아스키 범위 내에서는 표현이 힘들기 때문에 인코딩 처리가 필요

    : A타입으로 입력되어 있으면 A타입으로 불러오고, B타입으로 입력되어 있으면 B타입으로 불러와야 함

    (ex. cp949 방식으로 저장되어 있는데 인코딩 방식을 UTF-8로 지정하면 에러가 남)

     

    ▶ 에러1: Unicode Decode Error 메시지의 경우

    : 'encoding = '으로 인코딩 방식 지정

    : 인코딩 방식에는 UTF-8, euc-kr, cp949 가 있음

    pd.read_csv('./datasets/서울시_지하철호선별_역별_승하차수.csv', encoding='cp949').head()
    
    # encoding = 'cp949'가 없으면 에러1이 남.
    # head()는 맨 앞부터 5개의 데이터만 출력해오라는 의미

     

    ▶ 에러2: 문자열이 깨진 경우

    : 저장해둔 csv파일을 로드했는데 문자열이 깨지는 경우 'engine = python' 코드를 추가로 적어주기

    pd.read_csv('./datasets/서울시_지하철호선별_역별_승하차수.csv', encoding='cp949', engine='python').head()

     


    4. 출력되는 데이터 수 변경하기

     

    4-1) 최대 출력되는 열 수 변경하기

     

    ▶ 현재 출력해서 볼 수 있는 열 수 확인하기

    : pd.get_option("display.max_columns")

    pd.get_option("display.max_columns")

     

    * 최대 출력 가능한 열 수는 20개인데 데이터의 총 열 수는 27개라 중간에 ...으로 데이터가 생략됨

     

    ▶ 출력 가능 열 수를 30으로 바꾸기

    : pd.set_option("display.max_columns", 출력할 열 수)

    pd.set_option("display.max_columns", 30)

     

    * 데이터의 총 열 수는 27개인데 최대 출력 가능 열 수는 30개라 생략없이 모두 출력됨

     


    4-2) 최대 출력되는 행 수 변경하기

    : 실습을 위해서는 많은 행 수를 가진 데이터를 불러와야 하므로 다른 라이브러리 하나 설치 ㄱ

     

    ▶ Seaborn(시본) 라이브러리 설치

    : 원하는 그래프를 쉽게 표현할 수 있도록 돕는 시각화 라이브러리

    : 관계형, 카테고리, 분포, 회귀분석, 멀티-플롯, 스타일, 색상 등 다양한 그래프 표현이 가능

    : 많은 데이터셋을 보유하고 있음

    import seaborn as sns

     

     현재 출력해서 볼 수 있는 행 수 확인하기

    : pd.get_option("display.max_rows")

    pd.get_option("display.max_rows")

     

    ▶ 시본 라이브러리에서 iris 라는 데이터셋 로드

    iris = sns.load_dataset('iris') 
    
    iris

     

    * 최대 출력 가능한 행 수는 60개인데 데이터의 총 행 수는 150개라 중간에 ...으로 데이터가 생략됨

     

    ▶ 출력 가능 열 수를 150으로 바꾸기

    : pd.set_option("display.max_rows", 출력할 행 수)

    pd.set_option("display.max_rows", 150)

     

    * 데이터의 총 행 수는 150개인데 최대 출력 가능 행 수도 150개라 생략없이 모두 출력됨

     


    5. 데이터 저장하기

     

    : 지금 코딩하고 있는 것들은 메모리에 저장되어서 나가면 지워짐

    : 로드한 데이터를 csv 파일로 저장해보기 

     

    * csv 파일로 저장

    iris.to_csv('./datasets/iris.csv2')

     

    * 출력할 열 이름 지정해서 저장

    iris.to_csv('./datasets/iris_sepal.csv2', columns=['sepal_length', 'sepal_width', 'species'])

     

    * 헤더 생략하고 저장

    iris.to_csv('./datasets/iris_noheader.csv2', header=False)

     

    * 헤더 이름 변경해서 저장

    iris.to_csv('./datasets/iris_headername.csv2', header=['꽃받침_길이', '꽃받침_넓이', '꽃잎_길이', '꽃잎_넓이', '종류'], encoding='cp949')

     

    * 인덱스 없이 저장

    iris.to_csv('./datasets/iris_noindex.csv2', index=False)

     

    * 엑셀 파일로 저장 

    iris.to_excel('./datasets/iris.xlsx')

     

    >> iris 데이터가 각 조건에 따라 출력되어 datasets 파일 안에 저장됨.

    728x90

    댓글