数据分析 | Numpy实战(二) - 分析各类用户平均骑行时间

简介: 数据分析 | Numpy实战(二) - 分析各类用户平均骑行时间

本次复习的知识点如下:

  • 布尔型数组及数据过滤
  • 多维数组的构造
  • 使用numpy保存文本文件
  • matplotlib折线图绘制
  • matplotlib图表常用属性的设置方法
  • 图表的保存

关于数据源

上次的文章发出之后发现忘了补充数据源的链接,之后咸鱼补充在留言区了,有需要动手实践的朋友可以自取,下面是直通车:

数据分析 | Numpy实战(一) - 分析某单车骑行时间

分析目标

观察上次的数据,数据中有的数据有会员与非会员两种用户类别。

这次我们主要分析一下两种类别用户的平均骑行时间对比。

数据读取与数据清洗

根据上次的流程示意图我们主要遵循下面几个步骤:

图 | 源自网络

但是在实际操作中发现,本次的实战数据非常干净,完全可以把我们的数据读取和数据清洗代码结合到一起来实现代码简化的目的。

此处代码可以简化为:

# 数据读取,数据清洗
def data_collection():
    clndata_arr_list = []
    for data_filename in data_filenames:
        file = os.path.join(data_path, data_filename)
        data_arr = np.loadtxt(file, skiprows=1, delimiter=',', dtype=bytes).astype(str)
        cln_data_arr = np.core.defchararray.replace(data_arr, '"', '')
        clndata_arr_list.append(cln_data_arr)
    return clndata_arr_list

在上一篇的文章中,具体的实现原理已经做过说明这里就不多做赘述。

数据分析

根据这次的分析目标,我们除了取出第一列的Duration (ms)同时还要取出最后一列Member type

我们可以使用布尔型数组对我们的数据进行过滤,具体的使用方法可以参考下面这篇文章:

Data Science | Numpy基础(二)

我们可以先看下完成后的这部分代码:

# 数据分析
def mean_data(clndata_arr_list, member_type):
    duration_mean_list = []
    for cln_data in clndata_arr_list:
        bool_arr = cln_data[:, -1] == member_type
        filter_arr = cln_data[bool_arr]
        duration_mean = np.mean(filter_arr[:, 0].astype('float')/ 1000 / 60)
        duration_mean_list.append(duration_mean)
    return duration_mean_list

这里我们传入一个member_type,用单个标量member_type和取出的向量cln_data[:, -1]做比较,以筛选出我们需要的数据。

在数学上标量和向量是没办法比对的,毕竟维度不同,但是在numpy中它的广播机制很好的为我们实现了这一需求,numpy可以将单个标量变成比对数据同样的数据维度,这样就可以进行一对一比对,达到使用布尔型数组筛选数据的需求了。

至于其余关于数据如何取出平均值等操作在上一篇文章已经做了介绍,接下来进入数据可视化展示的部分。

结果展示

生成的折线图:

生成的csv表格:

生成的数据图表上次美化不少,具体实现可以看下下面的代码,具体美化属性都标注在注释当中。

# 结果展示
def show_data(member_mean_duration_list, casual_mean_duration_list):
    # 构造多维数组
    # 使用fmt方式输出指定格式的数据格式,默认输出科学计数的格式
    mean_duraion_arr = np.array([member_mean_duration_list, casual_mean_duration_list]).transpose()
    np.savetxt('./mean_duration.csv', mean_duraion_arr, delimiter=',',
               header='Member Mean Duraion, Casual Mean Duraion', fmt='%.4f',
               comments='')
    # 生成空白画布
    plt.figure()
    # color指定显示的折线颜色
    # linestyle指定折线的样式
    # marker指定节点样式
    plt.plot(member_mean_duration_list, color='g', linestyle='-', marker='o', label='Member')
    plt.plot(casual_mean_duration_list, color='r', linestyle='--', marker='*', label='Casual')
    plt.title('Member vs Casual')
    # rotation指定下标的倾斜角度
    plt.xticks(range(0, 4), ['1st', '2nd', '3rd', '4th'], rotation=45)
    # xlabel x,y轴的标题
    plt.xlabel('Quarter')
    plt.ylabel('Mean duration (min)')
    plt.legend(loc='best')
    plt.tight_layout()
    plt.savefig('./duration_trend.png')
    plt.show()
相关文章
|
2天前
|
数据采集 数据可视化 数据挖掘
利用 DataFrame 进行数据分析:实战案例解析
【5月更文挑战第19天】DataFrame是数据分析利器,本文通过一个销售数据案例展示其使用:读取数据创建DataFrame,计算产品总销量,分析月销售趋势,找出最畅销产品,并进行数据可视化。此外,还提及数据清洗和异常处理。DataFrame为数据处理、分组计算和可视化提供便利,助力高效数据分析。
16 3
|
4天前
|
数据采集 人工智能 数据挖掘
「一行分析」利用12000条招聘数据分析Python学习方向和就业方向
「一行分析」利用12000条招聘数据分析Python学习方向和就业方向
|
6天前
|
SQL 数据采集 数据挖掘
构建高效的Python数据处理流水线:使用Pandas和NumPy优化数据分析任务
在数据科学和分析领域,Python一直是最受欢迎的编程语言之一。本文将介绍如何通过使用Pandas和NumPy库构建高效的数据处理流水线,从而加速数据分析任务的执行。我们将讨论如何优化数据加载、清洗、转换和分析的过程,以及如何利用这些库中的强大功能来提高代码的性能和可维护性。
|
6天前
|
算法 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
22 1
|
6天前
|
机器学习/深度学习 数据采集 算法
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
27 1
|
6天前
|
数据可视化 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(一)
67 1
|
6天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
6天前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
52 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
6天前
|
存储 机器学习/深度学习 数据处理
NumPy:从初识到实战,探索Python科学计算的无限可能
NumPy:从初识到实战,探索Python科学计算的无限可能
38 0
|
6天前
|
机器学习/深度学习 存储 算法
Python中的NumPy库:数值计算与科学计算的基石
【2月更文挑战第29天】NumPy是Python科学计算的核心库,专注于高效处理大型多维数组和矩阵。其核心是ndarray对象,提供快速数组操作和数学运算,支持线性代数、随机数生成等功能。NumPy广泛应用于数据处理、科学计算和机器学习,简化了矩阵运算、统计分析和算法实现,是数据科学和AI领域的重要工具。