• 020401——比较共享单车每季度的平均骑行时间


    一、基本流程

      1、明确任务

        明确目的

        明确思路

        ……

      2、数据收集

        网络爬虫

        公开数据集

        客户数据

        ……

      3、处理处理

        数据清洗

        数据规整

        ……

      4、数据分析

        数据统计

        探索性数据(EDA)

        数据建模

        ……

      5、结果展示

        数据可视化

        报表生成

        结果保存

        ……

    二、Numpy

      高性能科学计算和数据分析的基础包,提供多维数据对象(ndarray)

      具有矢量/向量化运算能力,快速、节省空间

      import numpy as np

      使用版本 >= 1.13.3

    三、Matplotlib

      用于创建出版质量图标的绘图工具库

      目的是为 Python 创建一个 Matlab 式的绘图接口

      import matplotlib.pyplot as plt

      使用版本 >= 2.0.0

    四、实例

      

    # coding=utf-8
    
    """
        明确任务:比较共享单车每个季度的平均骑行时间
    """
    import os
    import numpy as np
    import matplotlib.pyplot as plt
    data_path = './data/bikeshare'
    data_filenames = ['2017-q1_trip_history_data.csv', '2017-q2_trip_history_data.csv',
                      '2017-q3_trip_history_data.csv', '2017-q4_trip_history_data.csv']
    
    
    def collect_data():
        """
            Step 1: 数据收集
        """
        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)
            data_arr_list.append(data_arr)
        return data_arr_list
    
    
    def process_data(data_arr_list):
        """
            Step 2: 数据处理
        """
        duration_in_min_list = []
        for data_arr in data_arr_list:
            duration_str_col = data_arr[:,0]
            # 去掉双引号
            duration_in_ms = np.core.defchararray.replace(duration_str_col, '"', '')
    
            # 类型转换
            duration_in_min = duration_in_ms.astype('float')/1000/60
            duration_in_min_list.append(duration_in_min)
        return duration_in_min_list
    
    
    def analyze_data(duration_arr_list):
        """
            Step 3: 数据分析
        """
        duration_mean_list = []
        for i, duration in enumerate(duration_arr_list):
            duration_mean = np.mean(duration)
            print('第{}季度平均骑行时间:{:.2f}分钟'.format(i + 1, duration_mean))
            duration_mean_list.append(duration_mean)
        return duration_mean_list
    
    
    def show_results(duration_mean_list):
        """
            Step 4: 结果展示
        """
        plt.figure()
        plt.bar(range(len(duration_mean_list)), duration_mean_list)
        plt.show()
    
    
    def main():
        """
            主函数
        """
        # 数据获取
        data_arr_list = collect_data()
    
        # 数据处理
        duration_arr_list = process_data(data_arr_list)
    
        # 数据分析
        duration_mean_list = analyze_data(duration_arr_list)
    
        # 结果展示
        show_results(duration_mean_list)
    
    
    if __name__ == '__main__':
        main()

     

  • 相关阅读:
    推荐几款Silverlight Tools【转载】
    Emit Vs CodeDom
    Silverlight 中实现Service同步调用
    一个配置文件的Mapping
    Silverlight:获取ContentTemplate中的命名控件
    关于计划
    巧用异步委托解决异步并发问题
    我是如何学习NodeJs的 – 笔记1
    应用HttpHandler, Json, JQuery, ASP.Net UserControl等技术处理 Ajax 的解决方案
    关于程序员的那些事一个五年程序员的总结
  • 原文地址:https://www.cnblogs.com/Lamfai/p/9694312.html
Copyright © 2020-2023  润新知