ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [상권 정보 분석] 기술 통계 분석
    데이터 분석 2021. 9. 14. 16:39

    Describe로 요약하기

    데이터의 갯수, 평균, 표준편차, 최솟값, 1사분위수(25%), 2사분위수(50%), 3사분위수(75%), 최댓값 등을 포함한다.

    # describe 로 기술통계값을 확인.
    # 25%: 1사분위수, 50%: 2사분위수, 75%: 3사분위수
    
    df.describe()

     

    데이터프레임은 2차 형태이므로, 리스트 형식으로 넣어준다.

    # 위도, 경도 데이터만 가져온다.
    
    df[['위도', '경도']].describe()

     

    단변량 수치형 변수 시각화

    # 위도의 distplot 
    # 현재 데이터셋이 서울, 부산 지역이므로 두 개의 정규분포로 나온다.
    # 막대를 촘촘히 그리고 싶으로면 bins 값을 크게 잡는다.
    
    sns.displot(df["위도"])

     

    # 위도의 평균, 중앙값을 표현.
    # Seaborn은 matplotlib으로 만들어져서 matplotlib의 기능을 모두 가져다 쓸 수 있다.
    
    plt.axvline(df["위도"].mean(), linestyle=":", color="r")
    plt.axvline(df["위도"].median(), linestyle="--")
    sns.distplot(df["위도"])

     

     

    상관 계수

     

    # 각 변의 상관계수
    
    corr = df.corr()
    corr

     

    # 상관계수 시각화
    
    plt.figure(figsize=(12, 7))
    mask = np.triu(np.ones_like(corr, dtype=np.bool))
    sns.heatmap(corr, annot=True, cmap="Blues", mask=mask)

     

     

    이변량 수치형 변수 표현

    # scatterplot으로 경도와 위도 표현 (시간 줄이기 위해 1000개의 샘플만 추출)
    
    sns.scatterplot(data=df.sample(1000), x="경도", y="위도")

     

    sns.lmplot(data=df.sample(1000), x="경도", y="위도", hue="시도명", col="시도명")

     

    object 타입의 데이터 요약

    df.describe(include="object")

     

    # unique 값의 갯수를 셀 수 있다.
    
    df["상권업종대분류명"].nunique()

     

     

    범주형 변수의 빈도 구하기

    # value_counts는 series에서만 사용 가능.
    
    df["상권업종대분류명"].value_counts()

     

     

    인덱싱과 필터 활용하기

    # "상권업종대분류명"가 음식인 데이터를 df_food에 넣기.
    # 서브셋을 새로운 변수에 저장할 경우, copy() 사용 권장 (original data에 반영되는 경우를 막기 위해)
    
    df_food = df[df["상권업종대분류명"] == "음식"].copy()
    df_food.head()

     

    # 두 가지 조건을 요구 할 때 괄호를 쓴다.
    
    df[(df["시군구명"] == "강남구") & (df["상권업종대분류명"] == "음식")]

     

     

    구별 음식점 업종 비교

    # 시군구명, 상권업종중분류명으로 그룹화 해서 상점 개수 구하기.
    
    food_gu = df_seoul_food.groupby(["시군구명", "상권업종중분류명"])["상호명"].count()
    food_gu.head()

     

    food_gu.unstack().iloc[:5, :5]

     

    # food_gu 데이터 시각화
    # 인덱스 내용을 컬럼으로 설정하기 위해 unstack
    
    plt.figure(figsize=(15, 7))
    food_gu.unstack().loc["강남구"].plot.bar()

     

    plt.figure(figsize=(15, 5))
    sns.barplot(data=food, x="상권업종중분류명", y="상호수")

     

     

    sns.catplot(data=food, x="시군구명", y="상호수", kind="bar", col="상권업종중분류명", col_wrap=4)

     

     

    GitHub - DAWUNHAN/DataAnalysisInPython

    Contribute to DAWUNHAN/DataAnalysisInPython development by creating an account on GitHub.

    github.com

     

    댓글