boot camp day9

2022/2/10

미니프로젝트 2

pandas read_csv

import pandas as pd
ch = pd.read_csv(agefile_path, sep=',',encoding='cp949',thousands=",")

csv 파일을 읽어올 때 ,를 기준으로 나누고 encoding을 cp949로 적어주고 천에자리를 표시할 때마다 넣어주는,를 숫자를 볼 때 제외하고 보기위해 thousands="," 를 넣어줍니다.

j=list(ch.iloc[0,3:])
plt.plot(j)

ch라는 df를 index로 슬라이싱해주고 그 결과를 plt.plot을 이용하여 그래프를 그려줬습니다.

쓸모없는 문자열 제거

pop_df=ch
pop_df.columns = [pop_df.columns[0]]+[pop_df.columns[i][13:] for i in range(1, 104)]
pop_df.columns

컬럼이름 '2021년12월거주자_1세'에서 앞에 있는 '2021년12월거주자_'를 모두 제거하는 코드입니다. 맨 앞에 행정구역을 제외한 모든 컬럼에있는 문자열을 제거함으로서 보기편하게 만들어줬습니다.

예외처리

##예외처리

dong=input("동이름: ")
try:
    a=list(ch[ch['행정구역'].str.contains(dong)].iloc[0][3:])
    plt.plot(a)
    plt.xticks(np.arange(0,101,10))
    plt.show()

except:
    print("해당 동은 자료에 없습니다. 동이름을 정확히 입력하시오")

파이썬에서 예외처리는 try, except를 이용하여 할 수 있고 위 코드는 동이름을 입력받고 입력받은 동의 그래프를 그리는 코드입니다.

미니프로젝트 3

지하철에서 무임승차, 유임승차를 하는 사람들의 빈도수와 시간대별 승,하차를 정리한 csv파일을 분석해보았습니다.

~인 사람중에 ~인사람

유임+무임 승차인원이 50만명 이상인 곳 중에서 유임승차비율이 0.94 이상인 곳

원래에 1개의 조건만 만족하는 df에서 원하는 데이터를 뽑고싶을때 하나의 조건문을 만족하면 되는 구조였습니다. 하지만 이번에는 2개의 조건을 만족하는 index를 뽑고 그 행을 뽑아내야하는 문제인데 제가 이것을 처음 직면했을 때 and문을 사용하면 해결이 될줄알았는데 안됐었습니다. 그래서
다음으로 생각 할 수 있었던 것은

dt_gt = df[(df['유임승차']+df['무임승차']) >= 500000]
dt_gt[dt_gt['유임승차비율'] >= 0.94]

위와같은 방법으로 정제된 dt_gt를 만들어서 저장한 후에 이 데이터를 다시 정제하는 방법이였습니다.
위와같은 방법으로 실행을 하니까 위 조건에 맞는 데이터가 반환이되었습니다.

시각화

df=data

df['유임승차비율'] = df['유임승차'] / (df['무임승차']+df['유임승차'])
df['유임하차비율'] = df['유임하차'] / (df['무임하차']+df['유임하차'])
df['무임승차비율'] = df['무임승차'] / (df['무임승차']+df['유임승차'])
df['무임하차비율'] = df['무임하차'] / (df['무임하차']+df['유임하차'])

label = ['지하철역', '유임승차비율', '유임하차비율', '무임승차비율', '무임하차비율']
label1= ['유임승차비율', '유임하차비율', '무임승차비율', '무임하차비율']

station = input("분석할 역의 이름을 입력하시오")
st = df[df['지하철역']==station][label1]   
train=list(st.max())
print(train)
plt.pie(train, labels = label1, autopct = '%.1f%%')
plt.title(f"유임하차 비율 최대: {station}")
plt.show()

유임승차의 비율을 pie그래프로 그리는 코드입니다. 새로운 df를 만들어주고 라벨을 만들어주어 쉽게 꺼내쓸 수 있도록 해주었고 분석하기를 원하는 역의 이름을 입력하면 그 역의 유임승하차비율, 무임승하치비율을 파이크래프로 볼 수 있게 해줍니다.

2개의 조건의 입력을 받아 시각화하기

이번에는 위에와 비슷하게 2개의 조건을 받아서 데이터 정제를 하는데 사용자에게 정보를 입력받는 방식으로 구현을 해보았습니다.

a, b = input("호선명 역이름: ").split()

stt = df[ df["호선명"]==a ]
stt = stt[stt['지하철역']==b]

plt.plot(range(4,28) ,stt.T[ stt.columns.str.contains("승차") ],'m',label="승차")
plt.plot(range(4,28), stt.T[ stt.columns.str.contains("하차") ] ,'c',label="하차")

plt.title(f"{a}호선 {b}의 시간대별 승하차 인원")
plt.legend()
plt.show()

호선의 이름과 역의 이름을 받고 시간대별 승하차인원을 그래프로 그렸습니다. 여기에 예외처리까지 해주면 조금더 실용성 있는 분석코드가 될 수 있을 것이라고 생각합니다. 하지만 수업에서는 위와같이 표현하는 곳 까지만 했어서 벨로그에는 위와같이 남기겠습니다.

KER 이제현박사님과의 zoom note

실제로 데이터분석을 하시는 분과의 화상통화에서 배운내용을 정리하여 보았습니다.
직장인들을 사람을 뽑을 때 자신의 실적을 높이기 위해서 채용을 한다고합니다. 그 과정에서 박사님께서는 데이콘, 케글 등의 수상실적, 깃허브, 자신이 잘 짰다고 생각하는 코드 등을 보시고 인턴으로 채용을 하신다고 하셨습니다. 그래서 저는 가능하면 데이콘이나 케글에서 수상을 하고 벨로그를 열심히 작성하는 것을 목표로 삼았습니다. 또 박사님께서는 데이터분석을 할 때는 통계와 분석에대한 지식도 중요하지만 도메인에 대한 지식이 가장 중요하다고 하셨습니다. 그래서 저는 관심있는 분야가 생기면 인터넷으로 서칭을 많이 한다던가 관련된 책을 읽는다던가 해보기로 마음먹었고 "데이터시각화 교과서", "데이터시각화 인지과학을 만나다"라는 책 두권을 데이터에 대해 더 깊게 알고싶다고 생각이 드는 순간 읽어보기로 마음먹었습니다. 또 박사님이 게슈탈드 법칙, 인지과학에 대해 알고있으면 분석을 하는데 도움이 된다고 하셔서 인터넷에서 찾아보았습니다.

게슈탈트 법칙

인지과학

좋은 웹페이지 즐겨찾기