ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022년 12월 14일 (외부파일 데이터전처리, 데이터 시각화)
    개발/개발일지(국비지원) 2022. 12. 14. 22:17
    728x90

    19-22행

    데이터의 새로운컬럼을 추가하기위해

    drinks데이터에 total_servings : 전체 주류 소비량컬럼을 추가해줬다.

    drinks['total_servings'] =

    drinks['beer_servings'] + drinks['spirit_servings'] + drinks['wine_servings'] 

     

    36-37행

    이전에 사용했던것과 마찬가지로

    결측값을 0으로 치환하는방법이다.

    데이터.fillna(0)을 사용하여 결측값을 치환해주었다.

     

    40-43행

    alcohol_rate_rank 변수에 알콜소비량을 데이터를 내림차순으로 정렬해준다.

    데이터.sort_values(by="해당컬럼",ascending=False)

    원하는 컬럼을 ascending=False 로 내림차순정렬을하고,

    원하는컬럼의 목록들을 [['컬럼1','컬럼2']]설정해주었다.

     

    45-48행

    위에서 설정한 변수에서

    alcohol_rate_rank.country.tolist().index("South Korea")

    국가중 South Korea값의 인덱스(순서)를 리턴해준다.

     

    54행

    국가명목록으로

    country_list변수에 

    alcohol_rate_rank.country.tolist()값을 넣어준다.

    알코올 소비량이 높은순서로 정렬된 변수에서

    국가명만 가져와 리스트로 저장한값이 저장된다.

     

    56행

    국가명 목록의 len으로 x축을 지정해준다.

     

    58행

    rank변수에 

    alcohol_rate_rank.alcohol.rate.tolist()

    주류소비량을 리스트형태로 저장해준다.

     

    61행

    막대그래프의 x축을 x_pos로

    y축을 rank로 설정해준다.

    x축 : 국가명목록

    y축 : 주류소비량

     

    전체술소비량 데이터를 시각화하여

    그래프를 출력한다.

    단, 한국의 술소비량을 빨간색 그래프로 출력해주고,

    화살표와 설명을 추가해준다.

     

    104-110행

    korea_rank = country_list.index("South Korea")를 통해

    국가목록에서 South Korea에 해당하는 값을 찾아,

    index(순서)를 리턴해준다

     

    bar_list[korea_rank].set_color('r')을 통해

    막대그래프에서 98번째 막대그래프의

    색상을 빨간색으로 설정해준다.

    plt.axis([0,200,0,700])

    으로 x축을 0~200

    y축을 0~700으로 그래프의 범위를 설정해준다.

     

    112-115행

    전체 술소비량에서

    국가명이 South Korea인 소비량 데이터만을

    korea_serving_rate변수에 저장해준다.

     

    116행-120행

    대한민국그래프에 설명란을 설정해주는 부분이다.

    South Korea + str(korea_rank(98) +1)+"번째", 설명을 작성해주고

    xy=(x축(korea_rank) , y축(korea_serving_rate))

    설명란의 x축 y축을설정해주고

    xytext(korea_rank +10 , korea_serving_rate +50),

    x축 +10 , y축 +50 을 해줘서

    그래프와 떨어져서 작성되게 설정해준다.

    arrowprops=dict(facecolor="색상" , shrink=화살표길이))를

    설정해준다.

     

    140행

    기존방식으로 파일을읽어오되,

    불필요한 데이터를 제외하고 필요한

    헤더부분과, 컬럼부분을 직접불러오는방법을 사용하였다.

     

    147행

    해당데이터.rename(columns={"기관명":"구별"},inplace=True)

    바꾸고자 하는 컬럼을 원하는컬럼명으로

    rename을통해 변경해준다.

     

    150행

    데이터를 불러왔는데, 컬럼명이 원하는컬럼명이아닐때,

    원하는컬럼명으로 여러가지를 바꾸는방법이다.

     

    156-157행

    데이터의 첫번째 행을 지우고싶어,

    데이터명.drop([0],axis=0,inplace=True)

    axis=0 (인덱스,행) axis=1(컬럼,열)을

    설정해줘서 행을 제거해주었다. 

     

     

    181-183행

    위에서 불러온 두가지의 데이터를

    pd.merge(데이터1,데이터2,on="연결컬럼")로 설정하여

    두 데이터를 연결해준다.

     

    184-187행

    이전에는 drop를 사용하여 컬럼을 제거했다면,

    del 데이터['컬럼1'], 데이터2['컬럼2']....로

    사용하여 쉽게 컬럼을 지워준다.

     

    ▼위의 내용들을 토대로 데이터를 시각화하였다.▼

    203-207행

    CCTV비율 컬럼을 추가해주었다.

    여태까지와의 다른점은 grid=True를 사용하여

    그래프에 격자를 출력시켜주었다.

    ▼결과▼

    218-219행

    np.polyfit을 통해

    x값,y값,차수를 설정해준다.

    x값으로 data_result['인구수']

    y값으로 data_result['소계']

    차수를 1로 설정해주었다.

    1은 직선

    2는 곡선의 형태로 출력된다.

     

    223행

    x축: 10만~70만의 값을 100개로 균등분할한 숫자들을 설정해준다

     

    228-229행

    산점도그래프를 x축,y축을 설정해주고

    s=50 산점도에 표시되는 점의크기를 50으로 설정해준다.

     

    233-237행

    회귀선그래프의 출력될 설정들을

    해준부분이다.

    ▼결과▼

    위에서했던 것과 다른점은

    cctv비율을 색상으로 더 쉽게파악할수있게

    설정해주었다.

     

    289행

    현재 "경찰서"컬럼은

    서울수서,서울중부 이런식으로 되어있다.

    이러한 데이터 문자열형태를

    apply(lambda x:str(x[2:] + "서"))

    2번인덱스부터끝까지

    즉 수서,중부 데이터만을가져와, "서"문자를 붙여줘서

    수서서,중부서 형태의

    문자들을 가져와서

    "관서명"컬럼에 저장해준다.

     

    301행

    데이터명.drop.duplicates(subset=["컬럼명"])

    를 사용하여

    중복된 행을 제거해준다.

     

    304-305행

    주소컬럼은 현재

    서울특별시 종로구 xxxx 형태로 저장되어있다.

    구별 컬럼을 생성하여 xx구 형태의 데이터만 저장해주기위해

    apply(lambda x: str(x).split()[1])

    문자열을 공백을기준으로 분리해준다.

    서울특별시,종로구,xxxx형태로 분리되고

    그중 1번인덱스를가져와

    구형태의 데이터만 

    "구별"컬럼에 저장된다.

     

    311행-312행

    pd.merge(데이터1,데이터2,on="연결컬럼명")을 설정해주어

    두개의 데이터를 병합해준다.

     

    319행

    검거율 컬럼을 추가해주기위해

    리스트로 생성할컬럼명들을 리스트형태로 저장해준다.

    ['강간','강도','살인','절도','폭력']

     

    320-323행

    반복문을통해

    crime_sum['강간'+'검거율'] =

    crime_sum['강간'+'검거']/crime_sum['강간'+'발생'] * 100

    설정되고

    강간검거율 = 강간검거/강간발생 * 100의 값이

    강간검거율컬럼에 저장된다.

     

    326-327행

    위와똑같은방식으로,

    crime_sum.loc[crime_sum[col+"검거율"]>=100,col+"검거율"])=100

    col= 범죄 일때

    crime_sum 데이터에서  

    파란부분이 설정부분

    즉, 범죄검거율이 100보다크거나 같으면

    빨간부분에 적용

    "범죄"+"검거율" 컬럼을 100으로 설정해준다.

     

    335-336행

    절도검거율이 높은것부터 그래프를 출력하기위해

    정렬하여 출력해준다.

     

     

     

    728x90

    댓글

Designed by Tistory.