python boxplot을 통해 데이터 빈도 알아보기/ 고양시 운영이력 데이터 살펴보기

프롬씬

·

2020. 9. 11. 11:45

1. 운영이력에서 필요없는 데이터 삭제하기

riding_data = pd.read_csv("01.운영이력.csv")
riding_data.head()
print(jy)

 riding_data.shape

riding_data.RTN_PROCESS.value_counts()

riding_data = riding_data.loc[~riding_data.RTN_PROCESS.isin(["1.0", "3.0", "5.0"]), :] 
riding_data.shape

riding_data.LEAS_DATE.dtype 

2. 반납시간 - 대여시간 빼기

데이터프레임 시간 object to datetime 으로 만들고 "분"으로 만들기

riding_data["LEAS_DATE"] = pd.to_datetime(riding_data["LEAS_DATE"])
riding_data["RTN_DATE"] = pd.to_datetime(riding_data["RTN_DATE"])

riding_data['Difference'] = riding_data['RTN_DATE'].sub(riding_data['LEAS_DATE'], axis=0)
riding_data['Difference']

✔️시간:분:초 - > 분으로 바꾸기

riding_data['Difference'] = riding_data['Difference'] / np.timedelta64(1, 'm')
riding_data['Difference'] = riding_data['Difference'].astype(int)

✔️mean > median 으로 보아 이상치, 큰 값이 많을 것으로 보인다. 

riding_data['Difference'].describe().astype(int)

#0-10분 사이의 작은 데이터 수치가 보임 그래서 
riding_data['Difference'].sort_values(ascending=True)

#빌린 시간이 5분이하인 데이터는 삭제함.
riding_data = riding_data.loc[~riding_data.Difference.isin(["0","1","2","3","4","5"]), :] 
riding_data.shape 

#0-5분 지우고 난 후
sns.boxplot(data=riding_data.loc[:, ["Difference"]])
plt.ylim(0,100)

✔️ boxplot으로 그려보아도 알수 있다. 대부분의 시간은 단기대여이지만 중장기적인 장기대여도 많이 있다는 점을 파악할 수있다.

#빌린 시간 대 별로 timegroup 만들기 #timegroup을 더 줄여도 된다 생각한다! 
riding_data["timegrp"] = pd.cut(riding_data.Difference, [0,5,10,20,30,40,50,60,90,120,180,
                                                         240,300,1000,3000,5000,9000,20000,50000])
riding_data