共享单车骑行时间

学习目标:

熟悉数据分析的基本流程

初步掌握Numpy中数组与向量化操作

使用Matplotlib进行简单的数据可视化

一、数据分析的流程

1.明确任务:明确目的,确定思路。

2.数据收集:网络爬虫,公开数据集,客户数据。

3数据处理:数据清洗,数据规整。

4数据分析:数据统计,探索性数据分析(EDA),数据建模。

5结果展示:数据可视化,报表生成,结果保存。

二、Numpy

高性能科学计算和数据分析的基础包,提供多维数组对象(ndarry)

具有矢量/向量化运算能力,快速、节省空间

import numpy as np

使用版本>=1.13.3

三、Matplotlib

用于创建出版质量图表的绘图工具库

目的是为Python创建一个Matlab式的绘图接口

import matplotlib.pyplot as plt

使用版本>=2.0.2

四、共享单车季度平均骑行时间

import numpy as np
import matplotlib.pyplot as plt
import os

data_path = 'D:/BaiduNetdiskDownload/MOBIKE_CUP/'
data_filenames =['2017_01.csv','2017_02.csv','2017_03.csv','2017_04.csv']

#数据收集
def collect_data():
    data_arr_list = []
    for data_filename in data_filenames:
        data_file = os.path.join(data_path,data_filename)
        data_arr = np.loadtxt(data_file,delimiter=',',dtype='str',skiprows=1)#读取数据
        data_arr_list.append(data_arr)
    return data_arr_list
    

#数据清洗
def prodess_data(data_arr_list):
    duration_in_min_list = []
    for data_arr in data_arr_list:
        #读取数据所有行第0列
        duration_str_col = data_arr[:,1]
        #去掉双引号
        duration_in_ms = np.core.defchararray.replace(duration_str_col,'"','')
        #类型转换
        duration_in_min = duration_in_ms.astype('float') / 1000 /60 #向量化操作将所有的ms转换为分钟
        duration_in_min_list.append(duration_in_min)
    return duration_in_min_list

#数据分析
def analyze_data(duration_in_min_list):
    duration_mean_list = []
    for i,duration in enumerate(duration_in_min_list):
        duration_mean = np.mean(duration)
        print('第{}季度平均骑行时间:{:.2f}分钟'.format( i + 1 , duration_mean))
        duration_mean_list.append(duration_mean)
    return duration_mean_list

#结果展示
def show_result(duration_mean_list):
    plt.figure()
    plt.bar(range(len(duration_mean_list)),duration_mean_list)
    plt.show()

#主函数
def main():
    #数据获取
    data_arr_list = collect_data()
    #数据处理
    duration_in_min_list = prodess_data(data_arr_list)
    #数据分析
    duration_mean_list = analyze_data(duration_in_min_list)
    #结果展示
    show_result(duration_mean_list)

if __name__ == '__main__':
    main()

 

posted @ 2021-05-18 16:54  bellin124  阅读(115)  评论(0编辑  收藏  举报