이번 포스팅에서는

파이썬에서 가장 많이 활용하는 것을 작성하려 한다.

바로 pandas라이브러리인데, 말 그대로 도서관처럼,

편리하고 유용한 함수 모음집이라고 할 수 있다.

 

공공데이터포털에서 소방 관련 csv 데이터를 가져와

pandas를 활용해 데이터 분석을 해볼 예정이다.


가장 먼저 이번 포스팅부터 마지막 포스팅까지 활용할

라이브러리를 설치하고 import해줄 것이다.

물론 지금은 pandas만 사용할 것이기 때문에

pip~로 pandas만 설치해 주고 import해줄 것이다.

(위 사진에서 import된 pandas말고

나머지는 무시해주길 바란다)

 

그리고 다운받은 소방 관련 데이터 파일을 불러와준다.

위처럼 csv파일을 읽어준다는 코드를 짜주고

뒤에 경로를 붙인다. 하지만, 오류가 반환됐다.

utf-8이라는 형식 관련 오류인데, 해당 형식의 경우

국제적으로 활용되는 유니코드이지만,

한국어의 경우 인코딩을 설정해야 하는 파일이 존재한다

따라서 이럴 때는 컴퓨터가 이해할 수 있도록

다른 형식으로 인코딩 해주는 코드가 필요하다.

위 코딩처럼 경로 뒤에 ' , '로 열어준 후

cp949를 붙여주면 해결된다.

 

불러온 데이터를 df라는 변수로 옮겨준 후 표시하고

df.info()로 데이터 타입 등 기본 정보를 확인할 수 있다.

csv파일에서 눈여겨 봐야할 것은 날짜 관련 데이터이다.

이들은 날짜 형식으로 저장되어야하는데

object로 저장된 것을 확인할 수 있다.

따라서 이들을 데이터 분석에 활용하려면

형식에 맞게 변환해주어야한다.

 

여기서 우리가 해주고 싶은 처리는

올바른 데이터 타입으로 변경함과 동시에

나중에 처리를 편하게 하고 효율적인 관리를 위해

신고년월일, 신고시각을 하나의 컬럼으로 합치는 작업을 할 것이다.

날짜형식으로 변환해주는 함수는

pandas 라이브러리에서 끌어쓸 수 있는데,

위처럼 변환시켜야 한다.

 

변환시키기 전과 후의 데이터 형식을 보면

Dtype이 datetime으로 알맞게 변화한 것을 볼 수 있다

info 메서드로 데이터 타입을 확인해 보면

신고년월일 외에도, 신고시각, 출동년월일, 출동시각의

데이터 타입을 변경해줘야함을 알 수 있다.

 

주의해야할 점은

신고 시각을 봤을 때,

년/월/일과 시/분/초까지 나와있는 걸 확인할 수 있는데

(컴퓨터가 이를 인식하고 자동으로 결과를 내긴하지만)

오류를 확인하고 올바른 포멧으로 바꿔줄 필요가 있다.

 

년/월/일 같은 경우는 datetime으로 존재할 수 있지만

시/분/초는 datetime으로 존재할 수 없고

문자열로 존재하기 때문에 발생하는 오류이다.

 

잠시 우리가 지금 한 작업과 앞으로 할 작업을

상기시켜보자면, 신고년월일과 신고시각을 합치기 위해

신고년월일 컬럼의 데이터 형식을 바꿔줬고

신고시각의 포맷을 바꾸는 작업을 할 예정이다.

 

따라서

문자열로 존재하는 신고시각에 맞춰서

신고년월일도 문자열로 변경해 준 후

신고시각도 오류메시지가 나지 않도록 시, 분으로

포맷을 변경해 준다.

신고시각 포맷이 시:분으로 변경됐음을 확인할 수 있다.

 

이제 신고년월일과 신고시각을 합치는 작업을 할 것이다

'신고일시'라는 새로운 데이터프레임을 생성해주고

문자열이 된 신고년월일과 신고시각을 합쳐주면 된다.

(중간에 공백은 '일'과 '시' 사이에 공백을 줌으로써

읽기 쉽게하기 위함이다)

작업이 적용된 df를 출력해주면 테이블의 가장 뒤에

신고일시라는 새로운 컬럼이 생성됐음을 알 수 있다.

 

신고년월일과 신고시각의 정보를 모두 담고 있는

신고일시를 새로 만들었으니 두 컬럼은 없어져도 된다.

따라서 컬럼을 삭제하는 작업을 할 것이다.

df_new라는 새로운 데이터프레임을 만들어줄 것이고

신고년월일이라는 컬럼을 없애줄 것이다. 라는 코드이다

뒤의 axis=1 은 열을 삭제해준다는 의미이다.

(axis=0은 행임)

 

데이터를 삭제하는 일은 정말 신중해야하기 때문에

위 코드 실행 후 df_new에 바로 적용되지 않는다.

만약 df에 바로 적용하고 싶다면 axis=1뒤에

inplace=true 라는 코드를 추가해주면 된다.

(반대로 false는 따로 적용해 준다는 뜻임)

 

마찬가지로 출동시각과 출동년월일도 위와 동일한

처리를 해주면 된다.

 


이번 포스팅에서는

라이브러리부터 날짜 데이터 관련 처리를 해줬다.

다음엔 결측치 관리 방법에 대한 포스팅을 할 예정이다

 

https://mcode.co.kr/

 

(메타코드M의 서포터즈 활동으로

강의 수강권을 제공받아 쓰는 글입니다.)

 

 

 

BELATED ARTICLES

more