Python

Pandas) read_csv 데이터 불러올 때 date 형태로 parsing하기, 인덱스 설정하기, 데이터 유형 변경astype

summerorange 2022. 4. 20. 15:35
반응형

인덱스 설정은 pd.read_csv로 불러올 때  index_col = '열 이름'으로 설정할 수 있다. 

data = pd.read_csv('../Data.csv', index_col='Date')

다음과 같이 설정할 수 있음. 그런데 문제는 년도-월-일 의 Date형태인 경우에는 해당 데이터 타입을 명시해주어야 한다. 그렇지 않으면 그냥 object로 인식해서 날짜 계산하기 어렵다.

parse date 설정하지 않을 때는 dtype='object'으로 나타난다.

여러가지 방법이 있다. 하나는 boolean으로 인덱스를 자동으로 datetime으로 설정하는 방법.

pd.read_csv('../Data.csv', index_col='Date', parse_dates=True)

또 구체적으로 어떤 행인지 작성해주는 방법도 있다. 리스트 형태라서 만약 a열도 시간-분-초 형태로 적힌 데이터타입이면 parse_dates=["Date", "a"] 이런 식으로 작성해주면 된다.

data1 = pd.read_csv('../Data.csv', index_col='Date', parse_dates=["Date"])

new라는 변수에 넣어주고 확인해보니 dtype='datetime64[ns]'로 되어 있다. 초단위 기준의 데이터타임 유형으로 분류가 되었다. 

만약 다른 유형으로 변경하고 싶으면 해당되는 변수에  하단과 같이 재정의를 하면 된다.

new = new.astype({'Date':'object'})

또는 특정 열 이름을 구체적으로 작성해주고 변경해주면 된다.

df["rain_new"] = df["rain_new"].astype("object")

python은 데이터 유형을 꼭 명시하지 않아도 변수를 자동으로 할당되는 기능이 있기 때문에 알아서 기능이 굴러가는 것처럼 보이는데

사실 데이터 유형을 파악하고 잘 활용하는 것이 필요하다. 모델 만들거나 회귀분석 모형 만들 때 데이터 유형이 다르면 에러가 뜬다.

또 다른 방법으로는 불러와서 하나씩 변경해주는 방법이다. datetime으로 할당하고, 해당 내용을 인덱스로 할당하기. 하나씩 해주는 방법도 있음.

df = pd.read_csv('../Data.csv')
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date',inplace=True)

 

반응형