일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ai school
- 2022 AI 온라인 실무 교육
- 캐글데이터분석
- AI 데이터 분석 트랙
- 코드업100제
- 데이터 분석
- 고객데이터분석
- OneHotEncoding
- RFM
- 코드업
- 데이터분석가
- 코딩테스트
- 코드업 기초100제
- 딥러닝
- 파이썬
- 머신러닝
- 멋쟁이사자처럼
- 시그모이드함수
- Onehot인코딩
- Python
- ai 스쿨 7기
- 데이터마케팅분석
- 기초100제
- 소프트맥스함수
- 데이터분석
- 멋쟁이사자처럼 ai school 7기
- RFM분석
- 멋사 ai
- 고객세그먼트
- 앨리스
- Today
- Total
초봉5센티미터
TIL 12. 서울시 코로나 발생동향 분석 본문
- 빈도수 구하기
- 한 개의 변수 : series.value_counts()
- 두 개의 변수 : pd.crosstab()
- 파일 불러오기
- to_csv("파일명", index=False) : csv 파일로 저장하기
- read_csv("파일명") : csv 파일 불러오기
- Pandas의 DataFrame과 Series의 이해
- Series : 1차원 벡터구조
- DataFrame : 2차원 행렬구조
- 중복확인: duplicated()
- 중복제거: drop_duplicates()
#csv 파일이 같은 경로에 있는지 확인
from glob import glob
# 라이브러리 로드
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#한글 폰트 사용을 위해 불러오기
import koreanize_matplotlib
서울시에서 조사한 코로나19 데이터로 실습을 진행하도록 하겠습니다.
코로나 데이터 불러오기
df_01 = pd.read_csv("seoul-covid19-2021-12-18.csv")
df_02 = pd.read_csv("seoul-covid19-2021-12-26.csv")
총 두개의 데이터를 불러왔습니다. head()를 통해 데이터 일부를 살펴보면 같은 열의 값을 가지는것을
알 수 있습니다.
concat 으로 두개의 데이터프레임을 합치도록 하겠습니다.
axis = 0이면 행방향으로 합쳐지게 됩니다. (밑으로)
axis = 1이면 열방향으로 합쳐지게 됩니다. (옆으로)
위의 두개의 데이터는 같은 열의 값을 가지고 있음으로 같은 열을 기준으로 행방향(밑으로) 합쳐줘야 됩니다.
df = pd.concat([df_01,df_02], axis = 0)
합친 데이터를 확인해보면 잘 합쳐진것을 확인할 수 있습니다.
df.head(2)
연번 환자 확진일 거주지 여행력 접촉력 퇴원현황
0 200000 561465 2021-12-18 중구 - 기타 확진자 접촉 NaN
1 199999 562278 2021-12-18 구로구 - 구로구 소재 요양시설 관련('21.11.) NaN
합쳐진 DataFrame에 중복된 데이터가 있을 수 있음으로 중복제거를 하겠습니다.
- 중복확인: duplicated()
- 중복제거: drop_duplicates()
df[df.duplicated()]
데이터프레임을 살펴보면 왼쪽에 0,1,2,3와 같은 숫자가 인덱스로 설정되어 있습니다.
전체 데이터중 "연번"이 중복값이 없는 unique값이기 때문에 "연번"을 인덱스로 설정하도록 하겠습니다.
# 연번의 유니크개수 확인 nunique()
df["연번"].nunique()
218646
# 데이터프레임 행과 열 확인 shape
df.shape
(218646, 7)
위와같이 연번의 유니크값의 개수는 218646개로 전체 데이터 프레임의 행의 개수와 같음을 알 수 있습니다.
따라서 중복값이 없다고 판단됩니다.
# set_index 를 통해 인덱스 값을 변경합니다.
df = df.set_index("연번")
다음은 인덱스(연번)값 기준으로 데이터를 정렬해보도록 하겠습니다.
# sort_index 를 통해 인덱스값 기준으로 정렬합니다.
# 기존의 인덱스를 연번을 바꿔주기
df.sort_index(ascending = False)
날짜 데이터 타입 변경하기
- 확진일 Series 형태로 가져오기
"확진일"을 살펴보면 dtype: object로 되어있습니다.
이 날짜 데이터를 datetime형태로 변경해보도록 하겠습니다.
# pd.to_datetime 을 통한 데이터 타입 변경하기
df["확진일"] = pd.to_datetime(df["확진일"])
# df["확진일"]을 head() 로 일부만 가져와서 타입이 datetime64 형태로 변경되었는지 확인하기
df["확진일"].head()
---------------------#출력값---------------------
연번
200000 2021-12-18
199999 2021-12-18
199998 2021-12-18
199997 2021-12-18
199996 2021-12-18
Name: 확진일, dtype: datetime64[ns]
dtype이 datetime으로 변경된 것을 알 수 있습니다.
바뀐 확진일 컬럼을 이용하여 연, 월, 일, 요일등의 파생변수를 만들어 보도록 하겠습니다.
# 연도 파생변수 만들기
# df["연도"]
df["연도"] = df["확진일"].dt.year
# 월(month), 일(day), 요일(dayofweek) 만들기
df["월"]= df["확진일"].dt.month
df["일"]= df["확진일"].dt.day
df["요일"]= df["확진일"].dt.dayofweek
df.head(1)
생성된 연도와 월 컬럼을 이용하여 연도-월 형태의 파생변수를 만들어보도록 하겠습니다.
# astype(str) 을 통해 수치 데이터를 문자 데이터로 변환하고 문자열 연결하기
df["연도월"] = df["연도"].astype(str) +"-"+ df["월"].astype(str)
----------------출력값----------------
연번
200000 2021-12
199999 2021-12
199998 2021-12
199997 2021-12
199996 2021-12
# 문자열 슬라이싱으로도 만들 수 있습니다.
df["연도월"] = df["확진일"].astype(str).str[:7]
이제는 map을 활용해 요일별 한글을 만들어 보도록 하겠습니다.
dayofweek = "월화수목금토일"
dayofweek[1]
def find_dayofweek(day_no):
dayofweek = "월화수목금토일"
return dayofweek[day_no]
# 함수가 잘 만들어졌는지 확인하기
find_dayofweek(1)
---출력----
'화'
# map을 사용해서 요일 컬럼을 요일명으로 변환하고 "요일명"이라는 새로운 컬럼에 저장하기
df["요일명"] = df["요일"].map(find_dayofweek)
'교육 > 멋쟁이사자처럼 AI School 7기' 카테고리의 다른 글
TIL 14. EDA: KOSIS 데이터 (0) | 2022.10.12 |
---|---|
TIL 13. 전국 신규 민간 아파트 분양가격 동향 분석 (1) | 2022.10.11 |
TIL 11. 데이터수집 (2) (1) | 2022.10.05 |
TIL 10. 데이터수집 (1) (0) | 2022.10.05 |
TIL 9. EDA (3) (0) | 2022.09.28 |