2022년 12월 14일 (외부파일 데이터전처리, 데이터 시각화)
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행
절도검거율이 높은것부터 그래프를 출력하기위해
정렬하여 출력해준다.