数据分析一共分为五个任务:

第一步:明确分析的任务

分析出每个季度的骑行的平均时长和各个季度的对比

第二步:数据处理

先看数据:

shell 查看csv 数据前十行

➜ data cat bikeshare/2017-q1_trip_history_data.csv|head -10

如果用Excle 打开呢?

根据 上面的格式我们开始进行数据的收集

数据收集

from pathlib import Path

#导入Python3下的pathlib模块

怎么才能获取文件的路径呢?

from pathlib import Path

ls

data/

index.py

Path("data/bikeshare")

Out[4]: PosixPath('data/bikeshare')

Path("data/bikeshare")/"index.py"

# 的文件路径,可以直接拼接的

Out[5]: PosixPath('data/bikeshare/index.py')

Numpy.loadtxt()

Pycharm快捷键 ⌘+B 获取函数的源码:

def loadtxt(fname, dtype=float, comments='#', delimiter=None,

converters=None, skiprows=0, usecols=None, unpack=False,

ndmin=0):

def collect_data(data_path):

"""

数据收集 数据分析的第一步

:param data_path: 数据路径

:return:

"""

data_arr_list = []

for data_file in data_filenames:

data_csv = np.loadtxt(Path(data_path) / data_file, delimiter=',', dtype='str', skiprows=1)

# delimiter定界符逗号,dtype 字符类型 skiprows 跳过第一行

# 因为numpy库默认的是浮点型,而为了方便后续处理我们将其改为str格式,用的参数就是dtype='str'

data_arr_list.append(data_csv)

return data_arr_list

# delimiter定界符逗号,dtype默认是float,但是我们用str的形式读取,字符类型 skiprows 跳过第一行,因为第一行是表头

# 因为numpy库默认的是浮点型,而为了方便后续处理我们将其改为str格式,用的参数就是dtype='str'

在的位置打个断点:

打个断点 debug 模式调试

type(data_csv)

Out[3]: numpy.ndarray

# 数据类型

data_csv.shape

Out[4]: (646586, 9)

# 数据的大小

data_csv.ndim

Out[5]: 2

# 只有横向和纵向代表的两个维度

数据的收集完成后,我们接下来就开始第三部分:数据的处理

def process_data(data_arr_list):

duration_in_min_list = []

for data_arr in data_arr_list:

duration_str_col = data_arr[:, 0]

# 行优先, [:,0] 取出所有行的第0列

duration_str_ms = np.core.defchararray.replace(duration_str_col, '"', '')

# 把"替换成空

duration_str_min = duration_str_ms.astype('float') / 1000 / 60

# astype字符串转换成 float 转换成 min

# 向量化操作,如果不行,我们再考虑 变量

duration_in_min_list.append(duration_str_min)

return duration_in_min_list

第四步:数据分析

求出平均骑行的时间,我们可以采用np.mean 这种方式求出整列的平均值

def analyze(duration_in_min_list):

"""

数据分析

"""

duration_mean_list = []

for index, duration in enumerate(duration_in_min_list):

duration_mean = np.mean(duration)

# duration 整列的平均值

print("{} ,平均骑行时间{:.2f}".format(index + 1, duration_mean))

# 平均骑行时间,保留两位有效数字

duration_mean_list.append(duration_mean)

return duration_mean_list

最后一步:数据展示

我们采用的matplotlib 库进行的柱状图展示:

当然我们首先导入库

def show_results(duration_mean_list):

# 结果展示

plt.figure()

# 创建个图

plt.bar(range(len(duration_mean_list)),duration_mean_list)

# 采用柱状图,横坐标采用四个季度的 ,纵坐标采用的是四个季度的平均值

plt.show()

# -*- coding: utf-8 -*-

"""

@Time: 2018/7/16

@Author: songhao

@微信公众号: zeropython

@File: index.py

"""

import numpy as np

from pathlib import Path

import matplotlib.pyplot as plt

data_filenames = ['2017-q1_trip_history_data.csv', '2017-q2_trip_history_data.csv', '2017-q3_trip_history_data.csv', '2017-q4_trip_history_data.csv']

def collect_data(data_path):

"""

数据收集 数据分析的第一步

:param data_path: 数据路径

:return:

"""

data_arr_list = []

for data_file in data_filenames:

data_csv = np.loadtxt(Path(data_path) / data_file, delimiter=',', dtype='str', skiprows=1)

# delimiter定界符逗号,dtype 字符类型 skiprows 跳过第一行

# 因为numpy库默认的是浮点型,而为了方便后续处理我们将其改为str格式,用的参数就是dtype='str'

data_arr_list.append(data_csv)

return data_arr_list

def process_data(data_arr_list):

duration_in_min_list = []

for data_arr in data_arr_list:

duration_str_col = data_arr[:, 0]

# 行优先, [:,0] 取出所有行的第0列

duration_str_ms = np.core.defchararray.replace(duration_str_col, '"', '')

# 把"替换成空

duration_str_min = duration_str_ms.astype('float') / 1000 / 60

# astype字符串转换成 float 转换成 min

# 向量化操作,如果不行,我们再考虑 变量

duration_in_min_list.append(duration_str_min)

return duration_in_min_list

def analyze(duration_in_min_list):

"""

数据分析

:param duration_in_min_list:

:return:

"""

duration_mean_list = []

for index,duration in enumerate(duration_in_min_list):

duration_mean = np.mean(duration)

print("{} ,平均骑行时间{:.2f}".format(index+1,duration_mean))

duration_mean_list.append(duration_mean)

return duration_mean_list

def show_results(duration_mean_list):

# 结果展示

plt.figure()

# 创建个图

plt.bar(range(len(duration_mean_list)),duration_mean_list)

# 采用柱状图,横坐标采用四个季度的 ,纵坐标采用的是四个季度的平均值

plt.show()

if __name__ == '__main__':

data_path = "data/bikeshare"

# 数据获取

data_arr_list = collect_data(data_path)

# 数据处理

duration_in_min_list = process_data(data_arr_list)

# 数据分析

duration_mean_list = analyze(duration_in_min_list)

show_results(duration_mean_list)

文章中用到的数据 回复 data_bike

python共享单车数据分析_数据分析_共享单车骑行时间分析-zeropython相关推荐

  1. 逆袭共享单车、打脸王思聪,共享充电宝究竟凭什么?

    2017年5月4日,在陈欧宣布街电获得聚美优品3亿元融资后,王思聪在朋友圈立贴:"共享充电宝要是能成我吃翔,立帖为证."两年后,共享充电宝却活得很好,2019年3月,街电COO何顺 ...

  2. 周五话分析 | 共享单车起航,数据分析跟上

    盼望着,盼望着,单车来了,共享时代的脚步近了. 一切都像刚睡醒的样子,欣欣然张开了眼.车辆密集起来了,颜色多起来了,人行道的使用率高起来了. 产品们偷偷地从投资机构背后钻出来,充电宝,斯玛特(smar ...

  3. 投放共享单车需要什么批文_浙江绍兴叫停所有共享单车:需审批才能投放

    执法人员暂扣"小鸣单车". 原标题:绍兴叫停所有共享单车 查扣小鸣单车,叫停摩拜单车:今后会在总量控制前提下,引入符合标准的单车企业 处在互联网风口的共享单车一经推出,便引来年轻人 ...

  4. 投放共享单车需要什么批文_共享单车须经审批方可投放

    原标题:共享单车须经审批方可投放 今天开始,包河区辖区内未通过审批的共享单车将进行集中清理,并移送到交警部门指定的停车场.记者昨天从包河区城管委获悉,该区发布了<共享单车停放秩序管理考核暂行办法 ...

  5. 共享单车数据爬取_走出低谷的共享单车,别再被数据造假的青桔给毁了!

    10月26日,有媒体报道称,在刚过去的10月23日,青桔单车全天总订单量达到2300万,超过美团和哈啰当天订单总量. 恰恰是在同日,又有网上流传的聊天截图显示,某城市管理群中青桔运维自爆主管让其刷单的 ...

  6. 共享单车MATLAB建模,数学建模共享单车论文.pdf

    2017 年北京科技大学数学建模练习题 (请先阅读"全国大学生数学建模竞赛论文格式规范") A 题: 共享单车运营方案 共享单车的存在解决了城市里"最后一公里" ...

  7. android支付宝退款流程,支付宝共享单车押金怎么退 支付宝共享单车押金退还方法...

    支付宝共享单车押金怎么退是很多朋友问到的,在支付宝宣布和共享单车平台达成合作之后,更多的小伙伴开始使用共享单车,这里我们一起了解一下支付宝共享单车押金怎么退. 支付宝共享单车目前只是两种押金方法,一种 ...

  8. 哈罗单车怎么关锁还车_记者体验临沂共享单车定点还车 停错地方关不上锁

    共享单车在给市民出行带来便利的同时,也引发了停放秩序混乱.妨碍市民通行等问题,为规范共享单车停放,兰山区在临沂市率先试点共享单车定点停放,并在特定区域施划共享单车定点停放区.据悉,临沂市兰山区第一批2 ...

  9. 共享单车拿车还车java模拟_共享单车停放管理系统及其还车方法与流程

    本发明涉及一种共享单车停放管理系统及其使用方法,属于智能交通领域. 背景技术: 作为解决公共交通最后一公里的共享单车,其无锁桩式的设计以及互联网和智能移动设备的运用,解决了公共自行车的不便之处,使得自 ...

最新文章

  1. 句法模式识别(两)-正规文法、上下文无关文法
  2. java mqtt 断开连接,可以将MQTT Paho客户端断开连接吗?
  3. 一个比较牛的Js写的五子棋
  4. 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
  5. 菜鸟车辆路径规划创造26项世界纪录 实际可降低10.3%配送成本
  6. python 图标题上移_Python-Matplotlib将图形标题移动到y轴
  7. android客户端从服务器端获取json数据并解析的实现代码
  8. 4比较三个数的大小输出最大的值并从小到大排序输出
  9. php变量值传递,PHP将值传递到包含文件中的变量
  10. Rtsp之海康设备预览回放url
  11. bash shell之数组使用
  12. JSON转换和序列化的区别
  13. 清明祭娭毑_原水_新浪博客
  14. 关于Kiosk模式修改
  15. 基于python的学生成绩管理系统毕业设计源码071143
  16. 自制p站小姐姐图片返回api.
  17. 表哥推荐python自学书籍:从入门到精通,读这十本书就够了!
  18. 部署Kubernetes时出现ImagePullBackOff或ErrImagePull情况
  19. python:将汉字转换为拼音
  20. hdu 3509 Buge's Fibonacci Number Problem(矩阵乘法+二项式)

热门文章

  1. 为什么说消费主义害死人
  2. 【python】语法
  3. CSS基础-02-基础选择器
  4. php的内核引擎,爬山虎内核引擎
  5. GitHub官方出手一针见血,Spring Boot趣味实战手册来袭(彩版)
  6. 导航窗格里计算机在桌面下,电脑桌面工具栏如何调到下方
  7. Echarts的二次封装思考心得。封装成果:折线柱状混合图、立体柱状折线混合图、markline标记线
  8. Web前端深色模式适配方案
  9. 理解siki学院吃豆人案例脚本
  10. python哪个方向工资高_学完Python的7大就业方向,哪个赚钱多?