본문 바로가기

Computer Science/파이썬

[Python] Pandas로 데이터 불러오기

기본적인 데이터 전처리의 과정을 하기전 데이터를 불러오는 방법부터 알아보자.

 

PAANDS 공식 Ref. pandas.read_csv
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
 

pandas.read_csv — pandas 1.2.4 documentation

Delimiter to use. If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator by Python’s builtin sniffer tool, csv.Sniffer. In addition

pandas.pydata.org

확인을 하면 굉장히 많은 파라미터가 있지만, 주로 쓰게 되는 파라미터 위주로 정리. 

 

    1. pd.read_csv('data(해당url 혹은 디렉토리내 파일path)', sep=';', encoding='CP949')
      • sep =  ','
        str, 기본값은 콤마 ‘,’ csv구분 기호 ('|' ,'\t')및 공백 여부 체크후 파라미터 지정 해줄것
      • encoding = 'CP949'
        기본 인코딩  = 'utf-8', 공공데이터 인코딩 = 'CP949' (옆의 것이 안되면 encoding='latin' ('ISO-8859-1' 의 alias 시도))
      • usecols = ['사용할', '데이터', '컬럼이름','만불러온다'] list-like or callable, optional
        df = pd.read_csv('./data.csv', sep=',', encoding='cp949', usecols=['측정일시', '측정소명', '오존(ppm)'])
      • index_col= '원하는 column명' int, str, sequence of int / str, or False( index_col=False can be used to force pandas to not use the first column as the index), default None
        index_col=0 (위치)이나 index_col='ID' 처럼 직접 변수 이름을 지정
      • skiprow = [5]  slist-like, int or callable, optional
        원하는 행부터 불러올때 스킵을 할 행까지를 지정해준다.
        skiprow = [0] >>> 1번 row부터 출력 / skiprow = [5] >>> 6번row 부터 출력
      • nrows = n
        위에서 부터 n개의 행만 불러온다
        pd.read_csv('../input/sample_submission.csv',skiprows=5, nrows = 10)
        # 위에서 5개행 스킵하고 6번째 행에서 10개의 행만 출력됨
      • header = 0 , names = ['헤더', '이름', '지정']
        cols = ['NEW1', 'NEW2', 'NEW3']
        df = pd.read_csv('test.csv', header=0, names=cols, usecols=['NEW2', 'NEW3'])
      • dtype = {"dict" : 형}으로각 컬럼별로 데이터(value)유형을 짝을 지어서 명시적으로 설정 할 수 있다.
        df = pd.read_csv('data.csv',dtype = {"ID": int, "LAST_NAME": str, "AGE": float})​
      • parse_dates=["date"] bool or list of int or names or list of lists or dict, default False
        ['date'] 칼럼에 대해 날짜 시간 포맷으로 변경 해준다.
        dayfirst=True 일이 월보다 먼저 위치하는 것 월/ 일로 하고싶으며 False값
        yearfirst = True 년도가 먼저 위치하는것 
        infer_datetime_format=True 날짜시간 포맷 추정해서 파싱하기
        df_date_dayfirstF = pd.read_csv("date_sample", sep=",", names=['date', 'id', 'val'], 
                                        parse_dates=['date'], 
                                        dayfirst=False, 
                                        yearfirst=True,
                                        infer_datetime_format=True)
                                       
        # 원본값 = 05-01-2020 결과 값 - 2020-01-05 
        #lamda 함수로 지정하는 방법은 필요시 찾아볼것 keyword ==> lambda x: datetime.strptime​


    2. DataFram 을 불러오고 column의 헤더값을 재정의 해줘야 하는경우
      new_header = df.iloc[0] # grab the first row for the header
      df = df[1:] # take the data less the header row
      df.columns = new_header # set the header row as the df header
    3.