共享单车需求预测

共享单车需求预测

一、案例介绍:
共享单车是一种自行车租赁方式。注册成为单车提供商的会员后就可以通过网络自主租赁与反还单车。使用商家提供的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"]
  • 4
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值