目录

  • 1 模块一  Python与机器学习概述
    • 1.1 Python与机器学习简介
    • 1.2 发展历程
    • 1.3 基本语法
    • 1.4 帮助
    • 1.5 应用
    • 1.6 示例源代码(食品识别小小专家系统)
    • 1.7 示例代码   蜡笔小新
    • 1.8 小结
    • 1.9 Python基础教程(教&学资料)
      • 1.9.1 安装Python
      • 1.9.2 第一个python程序
      • 1.9.3 Python基础
      • 1.9.4 函数
      • 1.9.5 高级特性
      • 1.9.6 函数式编程
      • 1.9.7 模块
      • 1.9.8 面向对象编程
      • 1.9.9 面向对象高级编程
      • 1.9.10 错误、调试和测试
      • 1.9.11 IO编程
      • 1.9.12 进程和线程
      • 1.9.13 正则表达式
      • 1.9.14 常用内建模块
      • 1.9.15 常用第三方模块
      • 1.9.16 图形界面
      • 1.9.17 网络编程
      • 1.9.18 电子邮件
      • 1.9.19 访问数据库
      • 1.9.20 Web开发
      • 1.9.21 异步IO
      • 1.9.22 使用MicroPython
      • 1.9.23 实战训练(day1~~day10)
        • 1.9.23.1 Day 1 - 搭建开发环境
        • 1.9.23.2 Day 2 - 编写Web App骨架
        • 1.9.23.3 Day 3 - 编写ORM
        • 1.9.23.4 Day 4 - 编写Model
        • 1.9.23.5 Day 5 - 编写Web框架
        • 1.9.23.6 Day 6 - 编写配置文件
        • 1.9.23.7 Day 7 - 编写MVC
        • 1.9.23.8 Day 8 - 构建前端
        • 1.9.23.9 Day 9 - 编写API
        • 1.9.23.10 Day 10 - 用户注册和登录
      • 1.9.24 Day 11 - 编写日志创建页
      • 1.9.25 Day 12 - 编写日志列表页
      • 1.9.26 Day 13 - 提升开发效率
      • 1.9.27 Day 14 - 完成Web App
      • 1.9.28 Day 15 - 部署Web App
      • 1.9.29 Day 16 - 编写移动App
    • 1.10 FAQ
    • 1.11 阶段总结
  • 2 PYthon程序示例
    • 2.1 程序示例(一)初识程序
    • 2.2 程序示例(二)查看今天是今年的第几天
    • 2.3 程序示例(三)if elif else语句
    • 2.4 程序示例(四)元组,列表, 堆栈,队列
    • 2.5 程序示例(五)学玩游戏《学色彩  神魔三龟玩变色》
    • 2.6 程序示例(六)函数
    • 2.7 程序示例(七)字符串
    • 2.8 程序示例(八)文件
    • 2.9 程序示例(九)排序
    • 2.10 程序示例-机器学习中英单词翻译小专家
    • 2.11 程序示例      画花朵  &  画佩奇
    • 2.12 程序示例   华夏时钟
    • 2.13 示例:  显示图片,响声
    • 2.14 播放声音视频文件mp3、wmv、wav、m4a等)
    • 2.15 Python WEB开发技术实战
  • 3 模块2 NumPy数值计算
    • 3.1 ndarray创建与索引
    • 3.2 ndarray的基础操作
    • 3.3 ufunc
    • 3.4 小结
    • 3.5 习题与实训
  • 4 模块3   pandas基础
    • 4.1 pandas常用类
    • 4.2 DataFrame基础操作
    • 4.3 其他数据类型操作
    • 4.4 小结
    • 4.5 习题与实训
    • 4.6 练习题
  • 5 模块4 pandas进阶
    • 5.1 数据读取与写出
    • 5.2 DataFrame进阶
    • 5.3 数据准备
    • 5.4 小结
    • 5.5 习题与实训
    • 5.6 练习习题及解答(参考)
  • 6 模块5 Matplotlib基础绘图
    • 6.1 Matplotlib绘图基础
    • 6.2 分析特征关系常用图形
    • 6.3 分析特征内部数据状态常用图形
    • 6.4 小结
    • 6.5 习题与实训
  • 7 模块6 机器学习库 scikit-learn
    • 7.1 数据准备
    • 7.2 降维
    • 7.3 分类
    • 7.4 回归
    • 7.5 聚类
    • 7.6 模型选择
    • 7.7 小结
    • 7.8 习题与实训
  • 8 模块7 餐饮企业综合分析
    • 8.1 (案例)餐饮企业分析需求
    • 8.2 数据准备
    • 8.3 使用K-means算法进行客户价值分析
    • 8.4 使用决策树算法实现餐饮客户流失预测
    • 8.5 小结
    • 8.6 习题与实训
  • 9 模块8  通信运营商客户流失分析与预测
    • 9.1 通信运营商客户流失分析需求
    • 9.2 数据准备
    • 9.3 特征工程
    • 9.4 使用多层感知器算法实现通信运营商 客户流失预测
    • 9.5 小结
    • 9.6 习题与实训
  • 10 学习参考资源
    • 10.1 机器学习的通俗讲解
    • 10.2 十大机器学习算法及其应用
    • 10.3 常用机器学习算法优缺点及其应用领域
    • 10.4 轻松学会 Python turtle 绘图
    • 10.5 Python 习题库
      • 10.5.1 习题1
    • 10.6 上机操作实训库
    • 10.7 面试准备题
    • 10.8 Python 程序扩展名 及发布程序时的选择
    • 10.9 计算机Python考试大纲
    • 10.10 Python  基础知识点梳理
    • 10.11 Python常用模块大全
    • 10.12 机器学习基本术语
    • 10.13 几个机器学习的成功案例
    • 10.14 60个机器学习算法应用场景实例
  • 11 章节测验(必测)
    • 11.1 测验一
    • 11.2 测验二
    • 11.3 测验三
    • 11.4 测验四
    • 11.5 测验五
    • 11.6 测验六
    • 11.7 测验七
    • 11.8 测验八
    • 11.9 测验九
    • 11.10 测验十
    • 11.11 编程专项测验
    • 11.12 填空题专项测验
    • 11.13 判断题专项测试
    • 11.14 简答题专项测试
    • 11.15 《机器学习技术》总复习
    • 11.16 书本--习题参考解答
  • 12 综合实训项目及展示
    • 12.1 项目(一)作品展示(1)
    • 12.2 项目(一)作品展示(2)
    • 12.3 团队项目实训(必作!)
数据准备

一、外部文件读取

在实际数据挖掘分析中,其业务数据大多存储在外部文件中,比如Excel、TXT等。因此,需要将外部文件读取到Python中进行挖掘分析。Pandas包中提供了非常丰富的函数来读取各种类型的外部数据文件,下面主要介绍Excel和TxT外部文件的读取。

1、Excel文件读取

通过read_excel()函数读取Excel文件数据,可以读取指定的工作簿(sheet),也可以设置读取有无表头的数据表。示例代码如下:

path='一、车次上车人数统计表.xlsx';

data=pd.read_excel(path);

执行结果如图所示(下)。



读取Sheet2里的数据,示例代码如下:

data=pd.read_excel(path,'Sheet2')  #读取sheet里面的数据

执行结果图所示(下)。


有时候数据表中没有设置字段,即无表头,读取格式示例代码如下:

dta=pd.read_excel('dta.xlsx',header=None)  #无表头

执行结果如图所示(下)。


2、TXT文件读取

通过read_table()函数可以读取TXT文本数据。需要注意的是,TXT文本数据列之间会存在特殊字符作为分隔,常见的有Tab键、空格和逗号。同时还需注意有些文本数据文件是没有设置表头的。示例代码如下:

import pandas as pd

dta1=pd.read_table('txt1.txt',header=None)  #分隔默认为Tab键,设置无表头。

执行结果如图所示(下)。


dta2=pd.read_table('txt2.txt',sep='\s+')              #分隔为空格,带表头

执行结果如图所示(下)。


dta3=pd.read_table('txt3.txt',sep=',',header=None)  #分隔为逗号,设置无表头

执行结果如图所示(下)。

3 、CSV文件读取

CSV文件也是一类广泛使用的外部数据文件,特别是大规模的数据文件尤为常见。本节介绍一般的CSV数据文件读取方法,对于大规模的数据我们给出分块读取的技巧。可以通过read_csv()函数读取,示例代码如下:

import pandas as pd

A=pd.read_csv('data.csv',sep=',');#道号分隔

执行结果如图所示(下)。

可以看出,其读取方式与Excel、TXT没有多少区别,但是特别要注意的是,CSV文件可以存储大规模的数据文件,比如单个数据文件可以容量可以达几G、十几G之多,这时候可以采用分块的方式进行读取。示例代码如下:

import pandas as pd

reader=pd.read_csv('data.csv',sep=',',chunksize=50000,usecols=[3,4,10])

k=0

for A in reader:

    k=k+1

    print('第'+str(k)+'次读取数据规模为: ',len(A))


执行结果如下:

第1次读取数据规模为:  50000

第2次读取数据规模为:  50000

第3次读取数据规模为:  33699

本案例介绍了对数据文件每次读取50000行记录,读取字段为指定的第3、4、10列,不足50000行的,按实际数据量读取。其中reader为一个数据阅读器,可以通过循环的方式依次把每次读取的数据取出来并进行处理。实际上,对于大规模的CSV数据文件,读取该文件的部分数据进行探索也是很有必要的,比如读取其前1000行,示例代码如下:

import pandas as pd

A=pd.read_csv('data.csv',sep=',',nrows=1000)。


3.5.1   常用函数--滚动计算函数

常用的滚动计算函数有滚动求和rolling_sum()、求平均值rolling_mean()、求最大值rolling_max()、求最小值rolling_min()等。滚动计算函数在金融数据处理中应用非常广泛,比如移动平均价、移动平均量等计算。下面我们对这几个函数进行详细介绍。

滚动求平均值函数的调用形式为:rolling_mean(P,N),其中P为待求的数据列,N为滚动计算的长度。这里P可以是Numpy数组或者序列数据结构,但是不能是列表或者元组,示例代码如下:

import pandas as pd

import numpy as np

L=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]  #列表

T=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)  #元组

A=np.array(L)                      #将列表L转换为数组,赋给变量A

S=pd.Series(L)                      #将列表L转换为序列,赋给变量S

#avg_L=pd.rolling_mean(L,10)   #报错

#avg_T=pd.rolling_mean(T,10)   #报错

avg_S=pd.rolling_mean(S,10)

avg_A=pd.rolling_mean(A,10)

执行结果如图所示(下)。



其中输入的数据结构为Numpy数组,其返回结果也为Numpy数组;如果输入的数据结构为序列形式,其返回结果也为序列。从返回的结果可以看出,不足滚动计算周期的数据,返回结果均采用nan(空值)来表示,在应用的过程中需要注意把这些数据清洗掉。

同理还有滚动求和函数rolling_sum(P,N)、滚动求最小值函数rolling_min(P,N)和滚动求最大值函数rolling_max(P,N)。示例代码如下:

sum_S=pd.rolling_sum(S,10)

sum_A=pd.rolling_sum(A,10)

Min_S=pd.rolling_min(S,10)

Min_A=pd.rolling_min(A,10)

Max_S=pd.rolling_max(S,10)

Max_A=pd.rolling_max(A,10)


3.5.2   常用函数--数据框合并函数

两个数据框之间的水平、垂直合并是数据处理与整合中经常发生的,这里介绍concat函数,可以通过设置轴(axis)为1和0实现。为了保持数据的规整性,一般情况下水平合并要求两个数据框的行数相同,而垂直合并要求两个数据框的字段名称相同,同时垂直合并后的数据框其index伴随原来的数据框,可以重新设置index而保障其连贯性。示例代码如下:

import pandas as pd

import numpy as np

dict1={'a':[2,2,'kt',6],'b':[4,6,7,8],'c':[6,5,np.nan,6]}

dict2={'d':[8,9,10,11],'e':['p',16,10,8]}

dict3={'a':[1,2],'b':[2,3],'c':[3,4],'d':[4,5],'e':[5,6]}

df1=pd.DataFrame(dict1)

df2=pd.DataFrame(dict2)

df3=pd.DataFrame(dict3)

del dict1,dict2,dict3

df4=pd.concat([df1,df2],axis=1)#水平合并

df5=pd.concat([df3,df4],axis=0)#垂直合并

df5.index=range(6) #重新修改index

执行结果如图所示(下)。

3.5.3   常用函数--数据框关联函数

前面介绍了两个数据框之间的水平、垂直合并操作方法。除此之外,在数据处理中也经常会遇到数据框之间的关联操作,它们类似于数据库中的SQL关联操作语句,比如指定关联字段之后进行的内连接(inner join)、左连接(left join)和右连接(right join)等数据操作。其中内连接,可以理解为对指定两个数据框中的关联字段取交集进行连接操作,而左(右)连接则是以左(右)边的数据框关联字段为基准的连接操作,示例代码如下:

import pandas as pd

#定义两个字典

dict1={'code':['A01','A01','A01','A02','A02','A02','A03','A03'],

       'month':['01','02','03','01','02','03','01','02'],

       'price':[10,12,13,15,17,20,10,9]}

dict2={'code':['A01','A01','A01','A02','A02','A02'],

       'month':['01','02','03','01','02','03'],

       'vol':[10000,10110,20000,10002,12000,21000]}

#对两个字典转换为数据框

df1=pd.DataFrame(dict1)

df2=pd.DataFrame(dict2)

del dict1,dict2

df_inner=pd.merge(df1,df2,how='inner',on=['code','month'])#内连接

df_left=pd.merge(df1,df2,how='left',on=['code','month'])  #左连接

df_right=pd.merge(df1,df2,how='right',on=['code','month']) #右连接

执行结果如图所示(下)。