python共享单车数据分析_数据分析_共享单车骑行时间分析-zeropython
数据分析一共分为五个任务:
第一步:明确分析的任务
分析出每个季度的骑行的平均时长和各个季度的对比
第二步:数据处理
先看数据:
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相关推荐
- 逆袭共享单车、打脸王思聪,共享充电宝究竟凭什么?
2017年5月4日,在陈欧宣布街电获得聚美优品3亿元融资后,王思聪在朋友圈立贴:"共享充电宝要是能成我吃翔,立帖为证."两年后,共享充电宝却活得很好,2019年3月,街电COO何顺 ...
- 周五话分析 | 共享单车起航,数据分析跟上
盼望着,盼望着,单车来了,共享时代的脚步近了. 一切都像刚睡醒的样子,欣欣然张开了眼.车辆密集起来了,颜色多起来了,人行道的使用率高起来了. 产品们偷偷地从投资机构背后钻出来,充电宝,斯玛特(smar ...
- 投放共享单车需要什么批文_浙江绍兴叫停所有共享单车:需审批才能投放
执法人员暂扣"小鸣单车". 原标题:绍兴叫停所有共享单车 查扣小鸣单车,叫停摩拜单车:今后会在总量控制前提下,引入符合标准的单车企业 处在互联网风口的共享单车一经推出,便引来年轻人 ...
- 投放共享单车需要什么批文_共享单车须经审批方可投放
原标题:共享单车须经审批方可投放 今天开始,包河区辖区内未通过审批的共享单车将进行集中清理,并移送到交警部门指定的停车场.记者昨天从包河区城管委获悉,该区发布了<共享单车停放秩序管理考核暂行办法 ...
- 共享单车数据爬取_走出低谷的共享单车,别再被数据造假的青桔给毁了!
10月26日,有媒体报道称,在刚过去的10月23日,青桔单车全天总订单量达到2300万,超过美团和哈啰当天订单总量. 恰恰是在同日,又有网上流传的聊天截图显示,某城市管理群中青桔运维自爆主管让其刷单的 ...
- 共享单车MATLAB建模,数学建模共享单车论文.pdf
2017 年北京科技大学数学建模练习题 (请先阅读"全国大学生数学建模竞赛论文格式规范") A 题: 共享单车运营方案 共享单车的存在解决了城市里"最后一公里" ...
- android支付宝退款流程,支付宝共享单车押金怎么退 支付宝共享单车押金退还方法...
支付宝共享单车押金怎么退是很多朋友问到的,在支付宝宣布和共享单车平台达成合作之后,更多的小伙伴开始使用共享单车,这里我们一起了解一下支付宝共享单车押金怎么退. 支付宝共享单车目前只是两种押金方法,一种 ...
- 哈罗单车怎么关锁还车_记者体验临沂共享单车定点还车 停错地方关不上锁
共享单车在给市民出行带来便利的同时,也引发了停放秩序混乱.妨碍市民通行等问题,为规范共享单车停放,兰山区在临沂市率先试点共享单车定点停放,并在特定区域施划共享单车定点停放区.据悉,临沂市兰山区第一批2 ...
- 共享单车拿车还车java模拟_共享单车停放管理系统及其还车方法与流程
本发明涉及一种共享单车停放管理系统及其使用方法,属于智能交通领域. 背景技术: 作为解决公共交通最后一公里的共享单车,其无锁桩式的设计以及互联网和智能移动设备的运用,解决了公共自行车的不便之处,使得自 ...
最新文章
- 句法模式识别(两)-正规文法、上下文无关文法
- java mqtt 断开连接,可以将MQTT Paho客户端断开连接吗?
- 一个比较牛的Js写的五子棋
- 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主
- 菜鸟车辆路径规划创造26项世界纪录 实际可降低10.3%配送成本
- python 图标题上移_Python-Matplotlib将图形标题移动到y轴
- android客户端从服务器端获取json数据并解析的实现代码
- 4比较三个数的大小输出最大的值并从小到大排序输出
- php变量值传递,PHP将值传递到包含文件中的变量
- Rtsp之海康设备预览回放url
- bash shell之数组使用
- JSON转换和序列化的区别
- 清明祭娭毑_原水_新浪博客
- 关于Kiosk模式修改
- 基于python的学生成绩管理系统毕业设计源码071143
- 自制p站小姐姐图片返回api.
- 表哥推荐python自学书籍:从入门到精通,读这十本书就够了!
- 部署Kubernetes时出现ImagePullBackOff或ErrImagePull情况
- python:将汉字转换为拼音
- hdu 3509 Buge's Fibonacci Number Problem(矩阵乘法+二项式)