关于数据科学的学习,咸鱼也进行了一段时间,但是光学不练是学一点忘一点,所以咸鱼找了一些某共享单车的数据进行一点简单的数据分析。
思路整理
咸鱼也是第一次动手写数据分析相关的代码,所以咸鱼上网找了一张大致的流程图,且以此整理思路,分隔代码。
图 | 源自网络
在企业实际开发中各个步骤的代码不会像咸鱼下面的代码一样各块分隔的那么清楚,肯定是相互交织且复杂的。
实战分析目的
看标题就知道了,分析各季度共享单车的骑行时间。
数据收集
因为这次的数据源自网络,所以先简单看下数据的结构:
可以看到数据有9个字段:
按照我们的目标,我们只需要第一个字段。
所以第一步先读取已经下载好的数据之后在第二步数据清洗中取出需要的字段:
这里关于numpy的用法,可以参考之前的几篇关于numpy的文章:
数据清洗
因为数据是整理后导出的数据所以不需要清洗缺失值等操作,我们直接取出需要的字段,做一些处理即可。
这里骑行时间单位为ms,所以需要转化为min需要/1000/60。
数据分析
计算平均值在numpy中提供了计算函数,直接调用即可。
结果展示
这里可视化展示使用的是matplotlib.pyplot库,咸鱼目前还没有写相关的入门文章,可以上网看下文档学习下简单使用即可,之后会有系列文章写可视化的内容。
成果展示
单单从上面的图可以看到以炎热的夏季和凉爽的秋季为主调的二三季度的骑行时间要高于春冬为主调的一四季度,以此判断气温变化对人们使用的共享单车的影响。
一些踩过的坑关于数据读取(一)
在python中字符串是有字节字符串和文本字符串之分的,我们通常说的字符串是指文本字符串。而使用numpy的loadtxt函数读取的字符串默认是字节字符串,输出的话字符串前面会有个b,形如b’……’。通常是需要转换的,如果不转换将会出现问题。
在部分如果不注意这一点,在部分,字段的格式就会因为的值多了一个转化上就会报错。
处理方式:
numpy.loadtxt读入的字符串总是bytes格式,总是在前面加了一个b
原因:np.loadtxt and np.genfromtxt operate in byte mode, which is the default string type in Python 2. But Python 3 uses unicode, and marks bytestrings with this b. numpy.loadtxt中也声明了:Note that generators should return byte strings for Python 3k.解决:使用numpy.loadtxt从文件读取字符串,最好使用这种方式np.loadtxt(filename, dtype=bytes).astype(str)
作者:Cameron
链接:https://www.zhihu.com/question/28690341/answer/164344688
来源:知乎
关于数据读取上的坑(二)
可以看到咸鱼在读取数据的时候使用的是numpy.loadtxt,这样的操作固然方便,但是代价就是内存直接爆掉,还好这次的数据才500M,所以不推荐大家使用我这个方法,之后会加以改进(如果我会的话)
这里分享一段代码,来自慕课网bobby老师的实战课,如何使用生成器读取大文本文件:
关于matplotlib.pyplot使用上的坑
在可视化的时候,柱状图的标识是中文,在显示的时候直接显示的是方块,无法显示中文。如下:
错误示范
处理方法:
如果感觉有帮助的话,不妨点个好看?
领取专属 10元无门槛券
私享最新 技术干货