-
2022년 12월 14일 (외부파일 데이터전처리, 데이터 시각화)개발/개발일지(국비지원) 2022. 12. 14. 22:17728x90
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'개발 > 개발일지(국비지원)' 카테고리의 다른 글
2022년 12월 16일 금요일(분류) (0) 2022.12.16 2022년 12월 15일(머신러닝) (0) 2022.12.15 2022년 12월 13일 화요일(데이터의 시각화) (0) 2022.12.13 2022년 12월 12일 월요일(크롤링,selenium을 통한 크롬제어방법) (0) 2022.12.12 2022년 12월 9일 금요일(결측값처리,자료형변환,groupby,concat,merge,크롤링) (0) 2022.12.09