개발/개발일지(국비지원)

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