Study/Data Analysis

[python] 공공자전거 데이터 분석(1) - 데이터 형태, 그래프 출력

bisi 2020. 4. 25. 14:38

서울 열린 데이터 광장에서 제공하는 공공자전거 대여 이력 정보 데이터를 활용하여 기본적인 데이터 탐색을 진행해보았다.

데이터 출처 : 서울 열린 데이터 광장 > 서울특별시 공공자전거 대여이력 정보 

 

http://data.seoul.go.kr/dataList/OA-15182/F/1/datasetView.do

 

열린데이터 광장 댓글 입력

열린데이터 광장 데이터셋 댓글 입력

data.seoul.go.kr

 


데이터 형태 , 그래프 출력

 

bike-visualization-test-1
In [2]:
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

# 노트북 안에 그래프를 그리기 위해
%matplotlib inline

# 그래프에서 격자로 숫자 범위가 눈에 잘 띄도록 ggplot 스타일을 사용
plt.style.use('ggplot')

# 그래프에서 마이너스 폰트 깨지는 문제에 대한 대처
mpl.rcParams['axes.unicode_minus'] = False

from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/malgun.ttf").get_name()
rc('font', family=font_name)
In [3]:
bike = pd.read_csv('../data/bicycle-hourtime-201905-test.csv', parse_dates=["대여일자"] ,encoding='cp949')
bike.head()
Out[3]:
대여일자 요일 요일_New 주중주말구분 대여시간 대여소번호 대여소명 지구 지구_New 거치대수 ... 대여구분코드_new 성별 성별_New 연령대코드 연령대코드_New 이용건수 운동량 탄소량 이동거리 사용시간
0 2019-05-01 3 0 0 101 (구)합정동 주민센터 주거 0 5 ... 1 M 0 20대 2 1 37.37 0.28 1210 8
1 2019-05-01 3 0 0 101 (구)합정동 주민센터 주거 0 5 ... 0 F 1 20대 2 1 21.88 0.2 850 9
2 2019-05-01 3 0 3 101 (구)합정동 주민센터 주거 0 5 ... 1 M 0 20대 2 1 34.69 0.28 1200 5
3 2019-05-01 3 0 6 101 (구)합정동 주민센터 주거 0 5 ... 1 F 1 30대 3 1 27.1 0.27 1180 7
4 2019-05-01 3 0 8 101 (구)합정동 주민센터 주거 0 5 ... 1 F 1 20대 2 1 21.78 0.23 1000 6

5 rows × 21 columns

In [4]:
bike.columns
Out[4]:
Index(['대여일자', '요일', '요일_New', '주중주말구분', '대여시간', '대여소번호', '대여소명', '지구',
       '지구_New', '거치대수', '대여구분코드', '대여구분코드_new', '성별', '성별_New', '연령대코드',
       '연령대코드_New', '이용건수', '운동량', '탄소량', '이동거리', '사용시간'],
      dtype='object')
In [5]:
bike.shape
Out[5]:
(69247, 21)
In [6]:
bike.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 69247 entries, 0 to 69246
Data columns (total 21 columns):
 #   Column      Non-Null Count  Dtype
---  ------      --------------  -----
 0   대여일자        69247 non-null  datetime64[ns]
 1   요일          69247 non-null  object
 2   요일_New      69247 non-null  int64
 3   주중주말구분      69247 non-null  int64
 4   대여시간        69247 non-null  int64
 5   대여소번호       69247 non-null  int64
 6   대여소명        69247 non-null  object
 7   지구          69247 non-null  object
 8   지구_New      69247 non-null  int64
 9   거치대수        69247 non-null  int64
 10  대여구분코드      69247 non-null  object
 11  대여구분코드_new  69247 non-null  int64
 12  성별          69247 non-null  object
 13  성별_New      69247 non-null  int64
 14  연령대코드       69247 non-null  object
 15  연령대코드_New   69247 non-null  int64
 16  이용건수        69247 non-null  int64
 17  운동량         69247 non-null  object
 18  탄소량         69247 non-null  object
 19  이동거리        69247 non-null  int64
 20  사용시간        69247 non-null  int64
dtypes: datetime64[ns](1), int64(12), object(8)
memory usage: 11.1+ MB
In [7]:
bike["년"] = bike["대여일자"].dt.year
bike["월"] = bike["대여일자"].dt.month
bike["일"] = bike["대여일자"].dt.day
In [8]:
bike.shape
Out[8]:
(69247, 24)
In [9]:
bike.describe()
Out[9]:
요일_New 주중주말구분 대여시간 대여소번호 지구_New 거치대수 대여구분코드_new 성별_New 연령대코드_New 이용건수 이동거리 사용시간
count 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.000000 69247.0 69247.0 69247.000000
mean 3.271347 0.231245 14.507979 227.411960 0.670989 14.292388 0.812310 0.412769 2.964980 1.247433 6213.248083 35.225540 2019.0 5.0 15.889295
std 1.859200 0.421632 5.942634 189.346957 0.744068 6.979036 0.390468 0.492335 1.116758 0.633802 13472.555141 38.998157 0.0 0.0 9.087982
min 0.000000 0.000000 0.000000 101.000000 0.000000 5.000000 0.000000 0.000000 1.000000 1.000000 0.000000 0.000000 2019.0 5.0 1.000000
25% 2.000000 0.000000 10.000000 118.000000 0.000000 10.000000 1.000000 0.000000 2.000000 1.000000 1370.000000 9.000000 2019.0 5.0 8.000000
50% 3.000000 0.000000 16.000000 152.000000 1.000000 12.000000 1.000000 0.000000 3.000000 1.000000 2830.000000 21.000000 2019.0 5.0 16.000000
75% 5.000000 0.000000 19.000000 407.000000 1.000000 15.000000 1.000000 1.000000 4.000000 1.000000 6400.000000 48.000000 2019.0 5.0 24.000000
max 6.000000 1.000000 23.000000 3104.000000 2.000000 40.000000 1.000000 1.000000 7.000000 10.000000 255540.000000 698.000000 2019.0 5.0 31.000000
In [10]:
bike.isnull().sum()
Out[10]:
대여일자          0
요일            0
요일_New        0
주중주말구분        0
대여시간          0
대여소번호         0
대여소명          0
지구            0
지구_New        0
거치대수          0
대여구분코드        0
대여구분코드_new    0
성별            0
성별_New        0
연령대코드         0
연령대코드_New     0
이용건수          0
운동량           0
탄소량           0
이동거리          0
사용시간          0
년             0
월             0
일             0
dtype: int64
In [11]:
import missingno as msno

msno.matrix(bike, figsize=(12,5))
Out[11]:
<matplotlib.axes._subplots.AxesSubplot at 0x24dd8942748>
In [12]:
bike.head()
Out[12]:
대여일자 요일 요일_New 주중주말구분 대여시간 대여소번호 대여소명 지구 지구_New 거치대수 ... 연령대코드 연령대코드_New 이용건수 운동량 탄소량 이동거리 사용시간
0 2019-05-01 3 0 0 101 (구)합정동 주민센터 주거 0 5 ... 20대 2 1 37.37 0.28 1210 8 2019 5 1
1 2019-05-01 3 0 0 101 (구)합정동 주민센터 주거 0 5 ... 20대 2 1 21.88 0.2 850 9 2019 5 1
2 2019-05-01 3 0 3 101 (구)합정동 주민센터 주거 0 5 ... 20대 2 1 34.69 0.28 1200 5 2019 5 1
3 2019-05-01 3 0 6 101 (구)합정동 주민센터 주거 0 5 ... 30대 3 1 27.1 0.27 1180 7 2019 5 1
4 2019-05-01 3 0 8 101 (구)합정동 주민센터 주거 0 5 ... 20대 2 1 21.78 0.23 1000 6 2019 5 1

5 rows × 24 columns

 


관련 글 모아보기

[DataSicence/Data Analysis] - [python] 공공자전거 데이터 분석(1) - 데이터 형태 그래프 출력

[DataSicence/Data Analysis] - [python] 공공자전거 데이터 분석(2) - histogram

[DataSicence/Data Analysis] - [python] 공공자전거 데이터 분석(3) - 상관관계 분석

[DataSicence/Data Analysis] - [python] 공공자전거 데이터 분석(4) - pivot data 생성