目录

  • 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 团队项目实训(必作!)
小结

本章介绍了Python数据处理与分析中最重要的包:Pandas,包括Pandas包的导入及使用方法,Pandas包中两个非常重要的数据结构序列(Series)和数据框(DataFrame),以及相关的数据访问、切片及计算。值得注意的是读者需要掌握数据框、序列和Numpy数组之间的关系。从数据框中取出一列,它变为序列,取序列中的values属性得到序列的值,它其实是Numpy数组。从数据框中切片出来多个数据列,它仍然是数据框。取数据框中的values属性得到数据框中的元素值,它是一个Numpy数组。如果数据框中的元素是纯数值类型,可以通过函数as_matrix()直接转换为Numpy数组,这样在进行计算和使用时更加方便。同时我们还应该注意数据框与外部文件的读写,特别是Excel、CSV文件,它为数据报表的产生提供了极大的便利。在程序编写过程中,我们还应该注意不同数据类型之间的转换。例如,通过字典可以转换为数据框,其中字典的键转化为数据框中的列名,字典的值转化为数据框中的元素值,而字典的值可以是列表或者数组。这样就实现了列表、字典、数组、序列、数据框等各种数据类型和数据结构之间的相互转化,从而完成各种计算任务。事实上,不同数据结构之间的相互转化也是一种非常重要的编程技能和应用技巧,后续在案例篇中会有具体应用,请读者们注意领会。在本章的最后还介绍了 Pandas 包中外部文件的读取方法和如何利用Pandas包中的函数完成数据计算与整合任务。Pandas包的内容非常丰富,本章只是介绍了基本内容,更多的内容请查找相关文献或者借助网络资源进行学习。


#python数据分析必备工具  pandas -  Dataframe

"""

Dataframe 是一个表格型的数据结构 ###带有标签的二维数组 index(行标签)

columns(列标签)

"""

#创建

"""

1. 由数组/list组成的字典: 

          columns 如果多添加,返回NaN  ;少添加,只显示添加的列

          index则必须和数据行数保持一致

           data1={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}

           d1=pd.DataFrame(data1,index=[])   ###columns 为字典的key

           d1  

              a  b  c

          0  1  4  7

          1  2  5  8

          2  3  6  9

      2.由Series组成的字典创建:

                  data1={'a':pd.Series(np.random.rand(2)),'b':pd.Series(np.random.rand(3)),'c':pd.Series(np.random.rand(2))}

                 d1=pd.DataFrame(data1)

                 columns为字典的key ,index为Series的标签(若未指定标签,采用默认index)

                 Series的长度可以不一样,会用NaN自动补齐

      3. 通过二维数组之间创建:

               ar=np.random.rand(9).reshape(3,3)

               df1=pd.DataFrame(ar,index=['a','b','c'],columns=[1,2,3])

               index与columns指定长度与原数组保持一致

      4.由字典组成的列表

               data=[{'one':1,'two':2},{'a':5,'b':8,'c':6}]  ####每个字典就是一行数据 , 字典的key为columns

               df1=pd.DataFrame(data)

       5. 由字典组成的字典:

                data={'a':{1:'A'},'b':{2:'B'}}

                df1=pd.DataFrame(data)  ####外层字典key a,b为columns; 内层字典key 1,2为index


"""

#  索引

"""

1.选择列:

                  data1={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}

                  d1=pd.DataFrame(data1)

                  d1['a']  ##返回类型为Series

                  d1[['a','b']] ##返回类型为DataFrame

                  ####df[列]

          2.选择行:

                 

                  data=d1.loc['0'] ##返回类型为Series

                  data=d1.loc[['0','1']]  ##返回类型为DataFrame

                  data=d1.loc[[0:2]]  ##切片索引 [0,2]  末端包含

                  data=d1.iloc[]    ###按照整数位置选择行,相当于列表索引

          3.布尔值索引:

                b1=df<20

                df[b1] | df[df<20]  ##保留所有为True的值,其它均为NaN

                df[df['a']>50]   ## 单列值判断 a列中数值大于50

                df.loc[['one','two']]>50 ##多行判断

           4. 多重索引:

                 df['a'].loc[['three','four']]

"""

#函数

"""

1.数据查看,转置

              df.head()  ##默认5条

              df.tail()

              df.T   ##转置


       2. 添加与修改:

              df['a']=1

              df.loc['one']=2

              df.drop() ##删除


       3.排序:

         按值排序

          df.sort_values(['列名'],ascending=True) 默认升序

          df.sort_values(['a','c'])  ##多列排序 先对a进行排序,再在a排序后的基础上对c进行排序       **注意**:适用于a中的多个重复值

          df.sort_index()  ##按照索引排序


       函数 描述

       count 统计非空值数量

       sum 汇总值

       mean 平均值

       mad 平均绝对偏差

       median 算数中位数

       min 最小值

       max 最大值

       mode 众数

       abs 绝对值

       prod 乘积

       std 贝塞尔校正的样本标准偏差

       var 无偏方差

       sem 平均值的标准误差

       skew 样本偏度 (第三阶)

       kurt 样本峰度 (第四阶)

       quantile 样本分位数 (不同 % 的值)

       cumsum 累加

       cumprod 累乘

       cummax 累积最大值

       cummin 累积最小值

       cumsum() 与 cumprod() 等方法保留 NaN 值的位置

       最大值与最小值对应的索引

      Series 与 DataFrame 的 idxmax() 与 idxmin() 函数计算最大值与最小值对应的索引

      多行或多列中存在多个最大值或最小值时,idxmax() 与 idxmin() 只返回匹配到的第一个值的 Index

       values_counts() ##返回一个包含唯一值的统计个数

"""

示例:

# 代码 4-5

df = pd.read_excel('20大数据1班_统计.xlsx')

# 描述性统计方法

df1=df['综合成绩']

print('20大数据1班_学生(线上)综合成绩 描述性统计数据:\n ')

print('最小值: \n',np.min(df1))

print('最大值: \n',np.max(df1))

print('平均值: \n',np.mean(df1))

print('中位数: \n',np.median(df1))

print('标准差: \n',np.std(df1))

print('方  差: \n',np.var(df1))


df2=pd.Series(df1)

print('极  差: \n',np.ptp(df2))   # np.ptp  仅适用于Series.


print("-"*50)

print('众  数: ',df1.mode())

print('样本偏差: ',df1.skew())

print('样本峰值: ',df1.kurt())

print('四分位数: ',df1.quantile())

print('非空值数目: ',df1.count())

print('平均绝对离差: ',df1.mad())



实训题

第一题    创建一个Python脚本,命名为test1.py,完成以下功能:

读取以下4位同学的成绩并用一个数据框变量pd来保存,其中成绩保存在一个TXT文件中,如下图所示:

pd进行切片操作,分别获得小红、张明、小江、小李各科成绩,它们是4个数据框变量,分别记为pd1、pd2、pd3、pd4。

第二题     利用数据框中自身的聚合计算方法,计算并获得每个同学各科成绩的平均分,记为M1、M2、M3、M4。

创建一个Python脚本,命名为test2.py,完成以下功能:

读取以下Excel表格数据并用一个数据框变量df来保存,数据内容如下表所示:

对df第3、4列进行切片,切片后为一个新的数据框记为df1,并对df1利用自身的方法转换为Numpy数组Nt。

基于df第2列,构造一个逻辑数组TF,即满足交易日期小于等于2017-01-16且大于等于2017-01-05为真,否则为假。

以TF为索引,取Nt中的第2列交易量数据并求和,记为S。