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


    学习目标:

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

    掌握如何构造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()
  • 相关阅读:
    【网络攻击】之防止短信验证码接口被攻击
    【支付专区】之检查微信预下单返回结果
    【mybatis】之批量添加
    【java】之转码
    【springmvc】之常用的注解
    数字信号处理MATLAB简单序列
    matlab中同一文件定义子函数的方法
    MATLAB 单变量函数一阶及N阶求导
    Android 学习笔记1
    java socket tcp(服务器循环检测)
  • 原文地址:https://www.cnblogs.com/bellin124/p/14783086.html
Copyright © 2020-2023  润新知