共享单车需求预测
一、案例介绍:
共享单车是一种自行车租赁方式。注册成为单车提供商的会员后就可以通过网络自主租赁与反还单车。使用商家提供的APP, 人们可以很方便地在出发地扫码租车,骑到目的地自由反还。目前,全世界有500多家共享单车租赁商。
二、数据介绍:
数据集记录了从2011年1月至2012年12月的单车租借记录(每小时),训练集由每个月的1—19号租借记录构成,测试集由每个月从20号起直至该月结束的租借记录构成。
三、变量说明:
四、数据的分析与预处理:
1.加载库与数据集
加载后续需要使用的库
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #使中文在图表中能正常显示
plt.rcParams['axes.unicode_minus']=False #使负号可以正常显示
#加入后续需要使用的库
import pylab
import calendar
import numpy as np
import pandas as pd
import seaborn as sn
from scipy import stats
import missingno as msno
from datetime import datetime;
加入数据集
trainData = pd.read_csv("train.csv") #加入训练集
testData=pd.read_csv("test.csv") #加入测试集
2.数据描述
print(trainData.shape) #显示出训练集的数据大小
print(trainData.head(3)) #显示出训练集的数据样本
print(testData.shape) #显示出测试集的数据大小
print(testData.head(3)) #显示出测试集的数据样本
训练集的大小与数据样本
(10886,12)
测试集的数据大小与数据样本
(6493,9)
训练集变量类型
print(trainData.dtypes) #显示出训练集的变量类型
3.特征处理
从变量的类型中看出season,holiday,workingday,weather为整型,现在需要将他们转换为类别型。
先从datetime中分离出新的特征date,hour,year,month,weekday,season,weather
trainData["date"] = trainData.datetime.apply(lambda x : x.split()[0]) #将date分离出来
trainData["hour"] = trainData.datetime.apply(lambda x : x.split()[1].split(":")[0])#将hour分离出来
trainData["year"] = trainData.datetime.apply(lambda x : x.split()[0].split("-")[0])#将year分离出来
trainData["weekday"] = trainData.date.apply(lambda dateString : calendar.day_name[datetime.strptime(dateString,"%Y-%m-%d").weekday()])#将weekday分离出来
trainData["month"] = trainData.date.apply(lambda dateString : calendar.month_name[datetime.strptime(dateString,"%Y-%m-%d").month])#将month分离出来
trainData["season"] = trainData.season.map({
1: "Spring", 2 : "Summer", 3 : "Fall", 4 :"Winter" })#将season分离出来
trainData["weather"] = trainData.weather.map({
1: " Clear + Few clouds + Partly cloudy + Partly cloudy",\
2 : " Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist ", \
3 : " Light Snow, Light Rain + Thunderstorm + Scattered clouds, Light Rain + Scattered clouds", \
4 :" Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog " })#将weather分离出来
再将season,holiday,workingday,weather,year转换为类别型
categoryVariableList = ["hour","weekday","month","season","weather","holiday","workingday","year"]
for var in categoryVariableList:
trainData[var] = trainData[var].astype("category") #将season,year,holiday,workingday,weather转换为类别型
然后删除datetime
trainData = trainData.drop(["datetime"]