제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.07]

[강의 요약]

[Part 04. EDA/웹 크롤링/파이썬 프로그래밍_ Ch 01~02] 강의 수강

Ch 01전체, Ch02_클립 03까지 강의 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰                                       ] 52/100일 (52%)

서울시 CCTV 현황 데이터 분석 강의 수강을 시작했다.

데이터는 이곳에서 얻을 수 있다. (서울시 자치구 년도별 CCTV 설치 현황)

예전에 팀으로 대회 나갔을 때 서울시 공공데이터 많이 사용했는데... 그땐 아무것도 못하는 초보였다 ㅠ

 

그리고 서울 구별 인구 통계 데이터도 사용하는데, 강의가 옛날에 만들어져서 그런지

현재의 공공데이터와 차이가 있을 수 있다.

그래도 참고할 사람은 여길 참고

여기서도 예전에 공공데이터랑 open API를 발급해서 뭘 한 적이 있다.

 

 

 

[Ch 01. 오리엔테이션]

Ch 01의 내용은 말 그대로 오리엔테이션이었다.

conda 환경설정이나 주피터 노트북이나 vscode 사용법 등

아 matplotlib 한글 설정도 다뤘는데 이건 해봤어서 pass

굳이 학습 일지에 작성할 내용들은 아니어서 넘어가겠다.

진짜 잘 정리하고 공부해야 하는 부분은 Chapter 02. 서울시 CCTV 현황 데이터 분석이다.

 

 

 

[Ch 02. 01_이론]

▶ 서울시 CCTV 현황 분석 프로젝트 소개 및 데이터 출처

위에서 말한 대로 강의자료와 현재 온라인에 올라와있는 공공데이터는 싱크가 맞지 않을 수 있다.

현시점으로 새로운 프로젝트를 만든다면 현재 올라온 데이터를 사용하는 게 맞지만

지금은 학습을 목적으로 강의를 수강하고 공부하는 것이기 때문에

강의에서 제공하는 데이터를 사용할 예정이다.

 

우선 강의 목표는 다음과 같다.

어느 정도 할 줄은 알지만, 백지상태에서 해보라고 한다면...

버벅거리면서 정말 기본적인 코드만 작성할 수 있다.

그러니까 공부해야겠지?

 

 

 

[Ch 02. 02_이론]

 서울시 CCTV 현황 분석 데이터 읽기

보통 데이터를 분석할 때 pandas를 사용해서 데이터를 불러온다.

강의자료에서는 설명하는 pandas 특징은 다음과 같다.

  • Python에서 R만큼의 강력한 데이터 핸들링 성능을 제공하는 모듈
  • 단일 프로세스에서는 최대 효율
  • 코딩 가능하고 응용 가능한 엑셀로 받아들여도 됨 (공감한다)
  • 누군가는 스테로이드를 맞은 엑셀로 표현함 (이것도 무슨 의미인지 알 것 같다 ㅋㅋ)

 

아무튼, 내가 느끼기에는 pandas는 파이썬에서 데이터 분석을 쉽게 할 수 있도록 도와주는 라이브러리이고

엑셀처럼 표 형태의 데이터(테이블)를 다룰 수 있게 해 주고 데이터 불러오기, 정리, 필터링, 통계 분석 등에 유용했다.

 

서울시 CCTV 현황 분석 데이터는 csv파일과 엑셀 파일이 있으므로

둘 다 pandas를 이용해 데이터를 불러와보자

import pandas as pd

먼저 import 명령으로 사용하겠다고 선언하는데, 사용방법이 있다.

  • importMODULE
    • MODULE을 사용하겠다
    • 사용 : MODULE.function
  • importMODULEasmd
    • MODULE을 사용할 건데, 앞으로는md라는 이름으로 부르겠다
    • 사용 : md.function
  • fromMODULEimportfunction
    • MODULE에 포함된 function이라는 함수만 사용하겠다
    • 사용 : function

 

그러면 위에 있는 코드는 pandas를 사용할건데, 앞으로는 pd라는 이름으로 부리겠다.라는 의미다.

 

CCTV_Seoul = pd.read_csv("./data/01. Seoul_CCTV.csv", encoding="utf-8")
CCTV_Seoul.head()

이미 파일이 UTF-8로 저장되어 있으면 encoding="utf-8"을 명시하지 않아도 괜찮다.

하지만 한글 csv 파일은 명시적으로 encoding 지정하는 게 좋다.

참고로 .head()는 pandas의 DataFrame에서 상위 n개의 행을 미리 보기로 출력하는 함수다.

기본값은 5여서 아무것도 작성하지 않으면 5개의 행만 보여준다.

사용하는 이유는 파일이 잘 불러졌는지 확인하기 위해서!

[코드 실행 결과]

 

 

그리고 이건 위에서 .head()로 확인한 데이터프레임의 5개의 행을 어떻게 보는지 설명한 사진이다.

엑셀처럼 행과 열로 구성된 2차원 표 구조인데

Index는 행 번호. 각 행(row)의 고유 번호고 0부터 시작한다.

 

Column Name은 열 이름인데, 각 열의 제목이다.

데이터의 종류나 항목을 나타내고, 고유한 이름으로 접근이 가능하다.

 

Values는 말 그대로 값인데, 실제 데이터가 들어있는 셀들의 내용이다.

숫자, 문자, 날짜 등 다양한 형식이 가능하다.

 

 

column의 이름을 조회한 코드와 출력 결과인데, 기본 사용 방법은 다음과 같다.

df.columns : 모든 열의 이름을 확인
df.columns[0] : 첫 번째 열의 이름만 가져오기

 

 

그러면 칼럼 이름을 바꾸고 싶으면 어떻게 해야 할까?

CCTV_Seoul.rename(columns={CCTV_Seoul.columns[0]: "구별"}, inplace=True)
CCTV_Seoul.head()

첫 번째 칼럼 이름 '기관명'을 가져와서

딕셔너리 형식으로 "이전이름: 새이름" 설정을 한다.

그러면 '기관명'이 "구별"로 칼럼명이 변경된다. 출력결과에서도 확인 가능하다.

참고로 inplace = True는 원본 DataFrame을 직접 수정한다는 의미다.

+ 다른 열들도 바꾸고 싶으면 columns={'기존1': '새이름1', '기존2': '새이름2'} 이렇게 가능하다.

 

 

그리고 아까 위에서 말했던 엑셀 파일도 pandas로 열어보자.

(tmi. 나는 로컬에서 vscode로 코드를 실행중이여서, 아래 코드 실행할 때 에러가 떴다)

에러를 해결하기 위해 xlrd를 설치했다.

보면 바로 위에서 csv파일을 read한 것과 다르게 보기 복잡한 형태다.

엑셀에서는 보기좋게 셀 병합이 되어있지만

pandas에서는 셀 병합 기능이 없기때문에 풀어져서 보인다.

그래서 보기 좋게 하기위해 다른 코드로 불러야한다.

 

 

 

 

 

 

[나의 생각 정리]

데이터 분석을 공부하고 싶었는데 마침 해당 강의 수강 순서여서 좋았다.

기초적인 데이터 분석 방법을 복습하는 좋은 기회라 생각한다.

 

 

[적용점]

데이터 분석(EDA)

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”