数据分析 | 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()
相关文章
|
15天前
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
20天前
|
SQL JSON 数据可视化
基于 DIFY 的自动化数据分析实战
本文介绍如何使用DIFY搭建数据分析自动化流程,实现从输入需求到查询数据库、LLM分析再到可视化输出的全流程。基于经典的employees数据集和DIFY云端环境,通过LLM-SQL解析、SQL执行、LLM数据分析及ECharts可视化等模块,高效完成数据分析任务。此方案适用于人力资源分析、薪酬管理等数据密集型业务,显著提升效率并降低成本。
1776 8
|
4月前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
82 2
|
4月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
134 3
|
4月前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
147 2
|
4月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
172 5
|
4月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
261 4
数据分析的 10 个最佳 Python 库
|
4月前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
57 3