TIL/멋사_AI스쿨_TIL

221006 AI스쿨 TIL 코로나 확진자 수 분석

둥둥런 2022. 10. 9. 22:19

오늘의 회고

사실(Fact) : Plotly 마무리, 판다스 문법 & 시각화 실습 (코로나 확진자 공공데이터)

느낌(Feeling) : 판다스 문법을 복습해서 좋았고, 배울 수록 유용해보여서 더 잘하고싶다.

교훈(Finding) : 이번주 수업 복습 꼼꼼히! 블로그 TIL 밀린 것 잘 정리해보자!


중복확인, 제거

duplicated()

drop_duplicates()

 

유니크값의 개수(nuniqur)

.nunique()

 

유니크(unique)

df["퇴원현황"].unique() #unique값에는 nan(결측치)은 포함되지 않는다

unique()는 serise에만 사용 가능하고 nunique()는 dataframe, series에 모두 사용 가능

 

인덱스 설정, 정렬하기

- set_index

→ 인덱스로 지정하면 컬럼이 아니게 된다.

→ index의 name이 “컬럼1”

→ df =df.set_index(”컬럼1”)

→ 반복실행 시 오류가 날 수 있다.

- sort_index (역순은 ascending=False)

 

데이터타입확인

df.dtypes

 

기술통계

describe()

describe(include="object")

top 최빈값

freq 최빈값의 빈도수

 

Accessor

특정 데이터 타입에 사용하는 Accessor(명령어 느낌), 주로 dt를 날짜형 데이터, str을 문자열 데이터 전처리에 활용한다

https://pandas.pydata.org/docs/reference/series.html#datetimelike-properties

  • dt 
  • str
  • cat
  • sparse

 

파생변수만들기

날짜를 → 연, 월, 요일로, dt 활용

df["연도"] = df["확진일"].dt.year
df["월"] = df["확진일"].dt.month df["일"] = df["확진일"].dt.day df["요일"] = df["확진일"].dt.dayofweek

연도-월 파생변수 만들기

 

1.문자열로 붙이기

astype(str) 을 통해 수치 데이터를 문자 데이터로 변환하고 문자열 연결하기

df["연도월"]
df["연도"].astype(str)+"-"+df["월"].astype(str)

 

문자열 슬라이싱 (이 방법 더 추천)

df["연도월"] = df["확진일"].astype(str).str[:7]

 

요일구하는함수

#find_dayofweek 함수로 요일 숫자를 넘겨주면 요일명을 반환하는 함수

def find_dayofweek(day_no):
    dayofweek = "월화수목금토일"
    return dayofweek[day_no]

 

함수 map하기

# map을 사용해서 요일 컬럼을 요일명으로 변환하고 "요일명"이라는 새로운 컬럼에 저장하기
df["요일명"] = df["요일"].map(find_dayofweek)

 

람다함수 사용하기

'''
lambda 반환값 : 식
'''
lambda x: x+10

def  add10(x):
      return x+10
#익명함수 lambda로 요일구하기
df["요일"].map(lambda x: "월화수목금토일"[x])

 

"연도" 컬럼을 통해 빈도수 구하기"연도" 컬럼의 비율 구하기빈도수 구하기

  • 한 개의 변수 : series.value_counts()
  • 두 개의 변수 : pd.crosstab()
  • groupby 와 pivot_table

 

정규화(normalize)와 표준화

df["연도"].value_counts(normalize=True)
df["연도"].value_counts()

 

전처리 적용이 제대로 되지 않을때

1. 데이터 타입 확인해보기

df.index.dtype

2. 데이터 타입 변경

day_count.index = pd.to_datetime(day_count.index)

 

만약 전체 날짜를 포함시켜 빈도를 구하려면?

1. 전체 날짜로 늘린다 (리스트를 데이터프레임으로 변경)

2. 날짜가 인덱스인 새 데이터프레임에 기존 데이터를 새 컬럼으로 넣는다

3. 결측치 데이터를 0으로 바꿔준다

 

누적 수치 구하기(.cumsum())

df_all_day["누적확진수"] = df_all_day["확진수"].cumsum()

 

특정 문자를 포함하는 데이터 계산하기 (str.contatins)

df[df["접촉력"].str.contains("이태원") & (df["월"] == 6)]