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