[부스트코스] 코칭스터디 Data Science 13기 - 2주차

김민수·2023년 10월 11일
0

boostcourse

목록 보기
6/8
post-thumbnail

📌 코칭스터디 Data Science 13기 - 2주차

1. 강의 내용

1) 서울 종합병원 분포 확인하기

  • 데이터 로드 및 요약 보기
  • 결측치 다루기
  • 수치 및 문자 데이터 요악하기
  • 데이터 전처리
  • 데이터 시각화 - scatterplot & folium

2. 강의 정리

1) 시각화를 위한 폰트 설정

plt.rc('font', family='AppleGothic')
plt.rc('axes', unicode_minus=False)

%matplotlib inline
# 글씨를 선명하게 하기 위해 retina 설정
from IPython.display import set_matplotlib_formats

set_matplotlib_formats('retina')

2) 전처리

  • isnull(): 결측치의 여부를 True, False로 확인할 수 있다.
  • reset_index(): index를 초기화하여 DataFrame 형태로 변환이 된다.
  • sort_values(): DataFrame 형태에서 컬럼을 기준으로 정렬을 할 수 있다.
    # '결측치 수' 컬럼을 기준으로 내림차순 정렬
    df_null_count.sort_values(by='결측치 수', ascending=False)
  • to_list(): 리스트 형태로 변환한다.
  • drop(): 삭제할 수 있다.
    df = df.drop(drop_columns, axis=1)
  • startswith(): 특정 문자로 시작하는지 알 수 있다.
  • endswith(): 특정 문자로 끝나는지 알 수 있다.
    # 제거할 데이터 지정하기("의원")
    drop_rows2 = df_seoul_hospital[df_seoul_hospital['상호명'].str.endswith('의원')].index
  • contains(): 특정 문자를 포함하는지 알 수 있다.
    # 상호명에 '종합병원'이라는 문구가 들어가지 않은 데이터만 가져오기
    df_seoul_hospital.loc[~df_seoul_hospital['상호명'].str.contains('종합병원'), '상호명'].unique()

3) 기초통계량

  • 기초통계량
    • median(): 중앙값
    • mean(): 평균값
    • max(): 최대값
    • min(): 최소값
    • count(): 개수
  • 요약
    • describe(): 기초통계량을 요약해서 볼 수 있다.
      • 특정 값만 보기 위해서는 (include=)를 사용해서 숫자는 'number', 문자는 'object', 전체는 'all'로 나타낼 수 있다.
    df['위도'].describe()
    • value_counts(): 해당 컬럼에 대한 그룹화하여 개수를 보여준다.
  • 중복제거한 값 보기
    • unique(): 중복을 제거한 값을 보여준다.
    • nunique(): 중복을 제거한 값의 개수를 보여준다.

4) 시각화

  • barplot
    # 구별 데이터 개수를 barplot으로 나타내기
    df_seoul['시군구명'].value_counts().plot.bar(rot=60)
    # 구별 데이터 개수를 seaborn을 활용해 countplot으로 나타내기
    plt.figure(figsize=(15,6))
    sns.countplot(data=df_seoul, x='시군구명', order=df_seoul['시군구명'].value_counts().index)
  • scatterplot
    # 서울시의 구별 위경도를 scatter plot으로 나타내기
    df_seoul[['위도', '경도', '시군구명']].plot.scatter(x='경도', y='위도', figsize=(10,8), grid=True)
    # 서울시의 구별 위경도를 seaborn을 활용해 scatterplot으로 나타내기
    plt.figure(figsize=(10,7))
    sns.scatterplot(data=df_seoul, x='경도', y='위도', hue='시군구명')

5) folium으로 지도에 나타내기

  • marker가 있는 지도 나타내기

    import folium
    
    map = folium.Map(location=[df_sliver_care['위도'].mean(), df_sliver_care['경도'].mean()], zoom_start=7)
    
    for i in df_sliver_care.index:
      name = df_sliver_care['상호명'][i]
      address = df_sliver_care['도로명주소'][i]
      popup = f"상호명: {name}, 도로명주소: {address}"
      location = [df_sliver_care['위도'][i], df_sliver_care['경도'][i]]
    
      folium.Marker(location=location, popup=popup).add_to(map)
    
    map

  • MarkerCluster를 활용해서 지도나타내기

    import folium
    from folium import Marker
    from folium.plugins import MarkerCluster
    
    map = folium.Map(location=[df_sliver_care['위도'].mean(), df_sliver_care['경도'].mean()], zoom_start=7)
    
    mc = MarkerCluster()
    
    for i in df_sliver_care.index:
      name = df_sliver_care['상호명'][i]
      address = df_sliver_care['도로명주소'][i]
      popup = f"상호명: {name}, 도로명주소: {address}"
      location = [df_sliver_care['위도'][i], df_sliver_care['경도'][i]]
    
      mc.add_child(Marker(location=location, popup=popup))
    
    mc.add_to(map)
    
    map

0개의 댓글