比较共享单车各用户类别的平均骑行时间趋势

Posted bellin124

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较共享单车各用户类别的平均骑行时间趋势相关的知识,希望对你有一定的参考价值。

学习目标:

掌握使用布尔型数组进行数据过滤

掌握如何构造ndarry

熟悉Matplotlib中图像元素的相关操作

一、明确任务

比较共享单车各用户类别(会员/非会员)的平均骑行时间

二、数据过滤

Numpy中广播操作,Numpy会将标量扩展成与要比较的数组同形状的一个数组,然后就可以一一对比。

一列数据与一个数据匹配:广播

 共享单车会员/非会员的平均骑行时间import numpy as np

import matplotlib.pyplot as plt
import os

data_path = \'D:/BaiduNetdiskDownload/MOBIKE_CUP_2017/\'
data_filenames =[\'test.csv\',\'train.csv\']

#数据收集+数据清洗
def collect_process_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)#读取数据
        #去掉双引号
        cln_data_arr = np.core.defchararray.replace(data_arr,\'"\',\'\')
        data_arr_list.append(cln_data_arr)
    return data_arr_list
    
#数据分析
def get_mean_duration_by_type(data_arr_list,member_type):
    mean_duration = []
    #一列数据与一个数据匹配:广播
    for data_arr in data_arr_list:
        bool_arr = data_arr[:,-1] == member_type
        filtered_arr = data_arr[bool_arr]#过滤操作
        mean_duration = np.mean(filtered_arr[:,0].astype(\'float\') / 1000 / 60 )
    return mean_duration

#结果展示
def save_show_result(Member_mean_list,Casual_mean_list):
    #1信息输出
    for idx in range(len(Member_mean_list)):
        Member_mean_duration = Member_mean_list[idx]
        Casual_mean_duration = Casual_mean_list[idx]
        print(\'第{}个季度,会员平均骑行时长:{:.2f}分钟,非会员平均骑行时长:{:.2f}分钟\'.format(idx,Member_mean_duration,Casual_mean_duration))
    
    #2.构造多维数组  转置transpose()
    mean_duration_arr = np.array(Member_mean_duration,Casual_mean_duration).transpose()
    np.savetxt(\'./mean_duration.csv\',mean_duration_arr,delimiter=\',\',header=\'Member,Casual\',fmt=\'%.4f\',comments=\'\')
    
    #3.结果可视化
    plt.figure()
    plt.plot(Member_mean_duration, color=\'g\',linestyle=\'-\',maker =\'o\',lable =\'Member\')
    plt.plot(Casual_mean_duration, color=\'g\',linestyle=\'--\',maker =\'*\',lable =\'Casual\')
    plt.title(\'Member_vs_Casual\')
plt.xticks(range(0,4),[1,2,3,4],rotation=45)
plt.tight_layout() plt.legend() plt.show()
#主函数 def main(): #数据获取 data_arr_list = collect_process_data() #数据分析 Member_mean_list = get_mean_duration_by_type(data_arr_list,\'Member\') Casual_mean_list = get_mean_duration_by_type(data_arr_list,\'Casual\') #结果展示 save_show_result(Member_mean_list,Casual_mean_list) if __name__ == \'__main__\': main()

 

以上是关于比较共享单车各用户类别的平均骑行时间趋势的主要内容,如果未能解决你的问题,请参考以下文章

共享电单车是否只能在自己镇的范围内骑,不能骑到其他镇上去?

共享单车的锁是啥原理?共享单车的利弊都有哪些?

共享单车是如何将二维码与自行车联系在一起的

共享单车的定位系统芯片是放在单车的啥位置上

共享单车APP定制为什么深受大学生依赖?

共享单车需求分析