一、基本流程
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()