项目数据来源于kaggle项目 Bike Share Demand,使用Python对数据进行了可视化分析:

共享单车项目分析_页面_01.jpg

共享单车项目分析_页面_02.jpg

共享单车项目分析_页面_03.jpg

共享单车项目分析_页面_04.jpg

共享单车项目分析_页面_05.jpg

共享单车项目分析_页面_06.jpg

共享单车项目分析_页面_07.jpg

共享单车项目分析_页面_08.jpg

共享单车项目分析_页面_09.jpg

共享单车项目分析_页面_10.jpg

分析过程代码如下:

1. 提出问题

影响共享单车租用数量的因素有哪些?影响程度如何?

2. 理解数据

import numpy as np

import pandas as pd

bike_train = pd.read_csv(".../train.csv")

bike_train.head()

datetime

season

holiday

workingday

weather

temp

atemp

humidity

windspeed

casual

registered

count

0

2011/1/1 0:00

1

0

0

1

9.84

14.395

81

0

3

13

16

1

2011/1/1 1:00

1

0

0

1

9.02

13.635

80

0

8

32

40

2

2011/1/1 2:00

1

0

0

1

9.02

13.635

80

0

5

27

32

3

2011/1/1 3:00

1

0

0

1

9.84

14.395

75

0

3

10

13

4

2011/1/1 4:00

1

0

0

1

9.84

14.395

75

0

0

1

1

bike_train.info()

RangeIndex: 10886 entries, 0 to 10885

Data columns (total 12 columns):

datetime 10886 non-null object

season 10886 non-null int64

holiday 10886 non-null int64

workingday 10886 non-null int64

weather 10886 non-null int64

temp 10886 non-null float64

atemp 10886 non-null float64

humidity 10886 non-null int64

windspeed 10886 non-null float64

casual 10886 non-null int64

registered 10886 non-null int64

count 10886 non-null int64

dtypes: float64(3), int64(8), object(1)

memory usage: 1020.6+ KB

变量说明:

datatime 日期+时间

season 1=春 2=夏 3=秋 4=冬

holiday 1=节假日 0=非节假日

workingday 1=工作日 0=周末

weather 1=晴天多云 2=雾天阴天 3=小雪小雨 4=大雨大雪大雾

temp 气温摄氏度

atemp 体感温度

humidity 湿度

windspeed 风速

casual 非注册用户个数

registered 注册用户个数

count 给定日期时间(每小时)总租车人数

3.数据清洗

1)数据预处理:数据完整无缺失值

2)特征工程:从datetime中提取年、月、日、时、星期等时间信息

import calendar

bike_train['date']=bike_train.datetime.apply(lambda x :x.split()[0])

bike_train['year']=bike_train.date.apply(lambda x:x.split("-")[0])

bike_train['month']=bike_train.date.apply(lambda x:x.split("-")[1])

bike_train['day']=bike_train.date.apply(lambda x:x.split("-")[2])

bike_train['hour']=bike_train.datetime.apply(lambda x: x.split()[1].split(":")[0])

bike_train['weekday'] = bike_train.datetime.apply(lambda x: calendar.day_name[pd.to_datetime(x).weekday()])

#把季节和天气转换成文字

bike_train['season']=bike_train.season.map({1: "Spring", 2 : "Summer", 3 : "Fall", 4 :"Winter" })

bike_train[:50:20]

datetime

season

holiday

workingday

weather

temp

atemp

humidity

windspeed

casual

registered

count

date

year

month

day

hour

weekday

0

2011-01-01 00:00:00

Spring

0

0

1

9.84

14.395

81

0

3

13

16

40544

2011

1

1

0

Saturday

20

2011-01-01 20:00:00

Spring

0

0

2

16.4

20.455

87

16.9979

11

25

36

40544

2011

1

1

20

Saturday

40

2011-01-02 17:00:00

Spring

0

0

1

13.94

16.665

57

12.998

7

58

65

40545

2011

1

2

17

Sunday

4. 可视化分析

1)单车使用量在天气维度上的分析(天气、温度、湿度和风速相关性)

import matplotlib.pyplot as plt

import seaborn as sns

%matplotlib inline

#租车辆与天气的关系

fig = plt.subplots(figsize=(5,5))

sns.boxplot(data=bike_train, y='count', x='weather')

output_10_1.png

可以看到,整体租车量受天气影响较为明显,极端的天气租车数量减少。

4级天气看起来有些异常,于是统计数据条目:

#统计各天气数据数量

weather_count = pd.DataFrame(bike_train.assign(weather_count=0).groupby('weather').weather_count.apply(len).reset_index())

weather_count['weather']=weather_count.weather.map({1:"晴天、多云",2:"雾天、阴天",3:"小学、小雪",4:"大风、大雪、大雨"})

weather_count

weather

weather_count

0

晴天、多云

7192

1

雾天、阴天

2834

2

小学、小雪

859

3

大风、大雪、大雨

1

可以看到,4级天气只有1条数据记录,这种极端天气情况出现的数据极少。

#使用量与温度、湿度、风速的关系

#绘制heatmap

corrMatt = bike_train[["temp","atemp","humidity","windspeed","count"]].corr()

mask = np.array(corrMatt)

mask[np.tril_indices_from(mask)] = False

fig = plt.figure(figsize=(10, 10))

sns.heatmap(corrMatt, mask=mask,square=True,annot=True)

output_16_1.png

温度和使用量有正相关关系,湿度与使用量有负相关关系,风速和使用量几乎不相关。

#绘制线性图像

fig,(ax1,ax2,ax3) = plt.subplots(1,3, figsize=(12,5))

sns.regplot(x="temp", y="count", data=bike_train,ax=ax1)

sns.regplot(x="windspeed", y="count", data=bike_train,ax=ax2)

sns.regplot(x="humidity", y="count", data=bike_train,ax=ax3)

output_18_1.png

由图像可看出,使用量与温度、湿度和风速的关系,相关性有限。

2)单车使用量在时间维度上的分析(月份、季节、时间、星期等相关性)

#租车总量和工作日、节假日的关系

fig,(ax1,ax2) = plt.subplots(1,2, figsize=(10,5))

sns.boxplot(data=bike_train, y='count', x='workingday',ax=ax1)

sns.boxplot(data=bike_train, y='count', x='holiday',ax=ax2)

ax1.set(xticklabels=['Not holiday','Holiday'])

ax2.set(xticklabels=['Weekend','Workday'])

output_21_1.png

总量来看,节假日和周末/工作日的租车数量基本相同。

fig,axes = plt.subplots(3,1, figsize=(12,20))

#租车辆按月份、年份统计

month_Aggregated = pd.DataFrame(bike_train.groupby(['year','month'])['count'].mean()).reset_index()

sns.barplot(data=month_Aggregated,x="month",y="count",hue='year',ax=axes[0])

axes[0].set(xlabel='Month', ylabel='Avearage Count',title="Average Count By Month")

#每日租车辆按季节统计

hour_Aggregated1 = pd.DataFrame(bike_train.groupby(['hour','season'])['count'].mean()).reset_index()

sns.pointplot(data=hour_Aggregated1,x='hour',y='count',hue='season',hue_order=['Spring','Summer','Fall','Winter'],join=True, ax=axes[1])

axes[1].set(xlabel='Hour', ylabel='Avearage Count',title="Average Count By Hour Across Season")

#日租车辆按周统计

hour_Aggregated2 = pd.DataFrame(bike_train.groupby(['hour','weekday'])['count'].mean()).reset_index()

sns.pointplot(data=hour_Aggregated2,x='hour',y='count',hue='weekday',join=True,ax=axes[2])

axes[2].set(xlabel='Hour', ylabel='Avearage Count',title="Average Count By Hour Across weekday")

output_23_1.png

图1可以看出2012年共享单车的使用量高于2011年,消费人群增加了1.5~2倍。两年内租车量随月份变化的趋势相同,6、7、8月有明显的高需求。

图2可以看出租车时间高峰为上午7-8点,下午5-6点,符合上下班通勤的时间范围。季节上看,春天的租车辆明显少于其它三个季节。

图3可以看出工作日租车辆主要为上下班时间,周末租车辆主要集中在10am-4pm之间。

3)单车使用量与注册用户/非注册用户的相关性

fig,axes=plt.subplots(2,1,figsize=(12,10))

hour_Transform=pd.melt(bike_train[['hour','casual','registered','weekday']],id_vars=['hour','weekday'],value_vars=['casual','registered'])

hour_Aggregated3=pd.DataFrame(hour_Transform.groupby(['hour','variable'])['value'].mean()).reset_index()

sns.pointplot(data=hour_Aggregated3,x='hour',y='value',hue='variable',hue_order=['casual','registered'],join=True,ax=axes[0])

weekday_Aggregated=pd.DataFrame(hour_Transform.groupby(['weekday','variable'])['value'].mean()).reset_index()

sns.barplot(data=weekday_Aggregated,x='weekday',y='value',hue='variable',order=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'],ax=axes[1])

output_26_1.png

注册人数使用量明显高于非注册人数,

非会员casual主要是周末出行,为了游玩; 会员registered主要是为了周一到周五上班。

5. 总结

时间:需求量最大的时间为夏、秋季工作日上、下班时间,其次为周末10am-4pm。需求量最小的时间为每年1-3月,时间集中在半夜/凌晨。

天气:除极端情况外(大风、高温、低温、强降水等),天气对租车量的影响不明显。

用户类型:注册用户和普通用户行为特征明显,前者主要为工作日通勤使用,后者为节假日出游。

python共享单车数据分析_共享单车数据可视化分析(Python/Seaborn)相关推荐

  1. Python金融大数据分析——第五章数据可视化(2)金融学图表

    5.2 金融学图表 5.2.1 mplfinance matplotlib的finance库包含不少可视化的金融图表,由于几代更新迭代,finance库也发生了变化. 从2.2.0版本前调用: imp ...

  2. Python金融大数据分析——第五章数据可视化(1)二维绘图

    目录 第五章 数据可视化 5.1 二维绘图 5.1.1 一维数据集 5.1.2 二维数据集 5.1.3绘制其他图表 5.1.3.1绘制散点图 5.1.3.2 直方图 5.1.3.3 箱型图 第五章 数 ...

  3. python簇状柱形图_《R数据可视化手册》一3.2 绘制簇状条形图

    本节书摘来自异步社区<R数据可视化手册>一书中的第3章,第3.2节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 3.2 ...

  4. python注册人工智能专业_从专业程度上分析Python和人工智能(AI) 它们如何相关?...

    Python和人工智能(AI) - 它们如何相关? Python是当今开发人员使用的最流行的编程语言之一.Guido Van Rossum于1991年创建它,自成立以来,它一直是使用最广泛的语言之一, ...

  5. python商品打折问题_电商打折套路分析 —— Python数据分析练习

    电商打折套路分析 --2016天猫双十一美妆数据分析 数据简介 此次分析的数据来自于城市数据团对2016年双11天猫数据的采集和整理,原始数据为.xlsx格式 包括update_time/id/tit ...

  6. 基于Python的网络爬虫爬取天气数据可视化分析

    目录 摘 要 1 一. 设计目的 2 二. 设计任务内容 3 三. 常用爬虫框架比较 3 四.网络爬虫程序总体设计 3 四. 网络爬虫程序详细设计 4 4.1设计环境和目标分析 4 4.2爬虫运行流程 ...

  7. 数据分析案例-顾客购物数据可视化分析(文末送书5本)

  8. 数据可视化分析教学课件——FineBI实验册节选===电子商务及商务数据分析类专业

      数据可视化分析课程教学,0基础也能掌握,本节讲述的是电子商务及商务数据分析等专业的数据可视化分析案例 实验目的   随着城市化进程加快和消费者需求日益多元化,零售电商市场释放出巨大的潜力同时也瞬息 ...

  9. 数据可视化分析教学课件——FineBI实验册节选====门店分析

      数据可视化分析课程教学,0基础也能掌握,本节讲述的是电子商务及商务数据分析等专业的数据可视化分析案例:门店分析 a.实验背景   门店仰赖营业额作为绩效指标,但对于营业额不佳,却难以有更进一层的数 ...

  10. 数据可视化分析教学课件——FineBI实验册节选====活动分析

      数据可视化分析课程教学,0基础也能掌握,本节讲述的是电子商务及商务数据分析等专业的数据可视化分析案例:活动分析 a.实验背景   优质的.有价值的活动运营方案能够严格的落地执行并且助力业绩提高,活 ...

最新文章

  1. 搜狗上线海外权威健康搜索 支持中英双语一键切换
  2. RocketMQ 实战 消息发送样例
  3. kafka消费者命令行的使用方法
  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型
  5. 工作经验教训_在设计工作五年后获得的经验教训
  6. 如何设置Win11系统右键刷新
  7. Asp .Net Mvc在DeBug模式下设置自定义IP
  8. java 判断类型_Java中类型判断的几种方式
  9. 30 网站项目建设流程概述
  10. unix到底有啥用_微信新上线的「拍拍」到底有啥用?
  11. “带锁的门”问题,并有c语言和python代码运行效率对比
  12. 利用红帽Piranha方案实现WEB负载均衡
  13. 第1章 神经网络的思想
  14. Java Web 开发的目录结构
  15. win10清理_win10系统怎么一键清理系统垃圾
  16. sql列转行(字段)逗号分割
  17. 线性表的链式存储结构与顺序存储结构(链表和数组)的区别及优缺点
  18. Python一键替换证件照背景,还用去照相馆?
  19. python pyinstaller使用方法_【python快手菜】pyinstaller使用指南
  20. 8.15游戏背包设计

热门文章

  1. 偏最小二乘法PLS(matlab自带代码)
  2. smb协议讲解_SMB/CIFS协议解析(一)
  3. matlab创建wps服务器,wps云文档服务器架设(mac版wps云文档在哪)
  4. 苹果手机投屏软件_苹果手机怎样投屏到笔记本?
  5. C++之虚函数和虚函数表
  6. java socket连接池_Java - Socket连接池
  7. 曾经,我们有一个芝麻大小的梦想
  8. openGL ES进阶教程(六)美颜滤镜之美白,磨皮,红润
  9. tekla二次开发用C语言,Tekla二次开发怎么弄?一篇文章入门tekla二次开发!
  10. 百度旋转验证码打码模块,集成鱼刺模块类