Python数据分析_Pandas入门

打印 上一主题 下一主题

主题 873|帖子 873|积分 2619

Python数据分析_Pandas入门

【模块一:Python数据分析先容】

【理解】企业数据处理流程先容



  • 目标:理解企业数据处理流程先容
  • 实施

    • 题目1:我们到底是做什么的?

      • 岗位

        • 低级:BI工程师、数据库开辟工程师、数据分析师、ETL工程师

          • 数据库SQL + 高级语言Python + ETL工具 + 报表工具 + 项目业务履历

        • 中级:ETL工程师、数据堆栈工程师、数据开辟工程师、Spark开辟工程师
        • 高级:数据开辟工程师、实时开辟工程师

      • 本质:通过对公司数据的处理分析,提供数据支持,让公司实现更高条理的红利




    • 题目2:企业怎样才气基于数据实现数字化转型,实现降本增效?

      • Stage1:数据分析:数据分析侧重于数据的理解和挖掘

        • 定义:数据分析是指通过网络、处理和解释数据来展现信息、指导决定、以及验证假设的过程。数据分析旨在发现趋势、关联性和模式,通常使用统计学和呆板学习技术。
        • 应用:数据分析侧重于理解数据的含义和推断出结论,以指导业务运营和决定。


      • Stage2:数据堆栈:数据堆栈关注数据的存储和管理

        • 定义:数据堆栈是一个用于整合、存储和管理企业数据的会集式体系。它支持对大量汗青数据的高效访问,并提供数据清洗、转换和加载(ETL)本领,为报表、分析和决定支持提供数据来源。
        • 应用:数据堆栈重要用于保存和管理汗青数据,以供后续的数据分析和业务报表使用。
          在这里插入图片形貌


      • Stage3:数据中台:数据中台更专注于数据的活动性、共享性以及代价创造

        • 定义:数据中台是公司内部的数据管理平台,旨在通过数据治理、数据标准化以及数据服务的方式实现数据代价最大化。数据中台有助于构建数据互联,促进各个业务体系间数据共享和协作。
        • 应用:数据中台并不仅限于数据的存储和整合,更强调数据的活动性和代价实现,包罗数据产物化、数据服务化以及面向业务的数据应用。




  • 小结:理解企业数据处理流程先容
【理解】Python数据分析简介



  • 目标:理解Python数据分析简介
  • 实施

    • 题目1:数据分析有很多的语言和工具,为什么选用Python
           方面Python 数据分析SQL 数据分析R 数据分析BI 可视化分析语言使用Python编程语言举行数据分析。使用SQL编程语言举行数据检索和处理。使用R编程语言举行数据分析。使用多种工具(好比FineBI、Tableau、Power BI等)举行数据可视化。长处功能强盛的数据处理库(例如Pandas、NumPy),得当大规模数据处理;可以或许举行呆板学习和深度学习。高效的数据查询和处理,尤其得当与数据库共同使用;易于理解和学习。专注于统计分析和可视化,拥有丰富的统计包和绘图库。提供直观的图表和仪表盘,使数据变得更容易理解和沟通。缺点对于简单数据查询来说大概比SQL语句繁琐;不如R生态圈在统计分析领域成熟;相对于BI工具,定制化较为复杂。重要用于数据库查询和管理,并不擅长数据统计和建模;不擅长数据分析的统计方法。在其他领域和领域集成方面没有Python广泛;语法布局相对灵活,导致学习曲线较陡。侧重于数据展示与交互,对于一些复杂统计分析大概必要借助其他工具完成。应用场景适用于大规模数据处理、呆板学习和深度学习等领域;数据挖掘和推测建模。重要用于数据库查询和管理,数据存储体系监控与维护等领域。适用于统计建模、数据挖掘与数据可视化等领域;专注于统计学术界和数据科学领域。用于创建仪表板、报告、数据分享和即时决定支持等业务场景。
    • 题目2:Python怎么实现数据分析?
           模块功能应用场景Pandas底层是基于NumPy构建的,提供数据布局和分析工具,用于数据整理、清洗、分组、分析等操纵。数据预处理、数据清洗、数据分析和建模。NumPy提供多维数组对象以及处理工具,用于科学盘算、数值盘算、大规模数据集的快速运算。科学盘算、数值盘算、大规模数据集的快速运算。Matplotlib用于创建二维图表和图形展示工具,支持可视化数据分析和效果展示。数据可视化、数据探索、数据分析效果展示。Seaborn基于Matplotlib,提供更多样式和效果的统计图表,简化了统计数据可视化的过程。统计数据可视化、数据探索、呈现统计数据特性。Scikit-learn提供了各种呆板学习算法和模子的工具,包罗分类、回归、聚类、降维等算法。呆板学习建模、数据挖掘、模式识别。Statsmodels提供统计模子估计和测试的工具,包罗回归分析、时间序列分析、假设检验等。经济统计分析、时间序列分析、回归分析等。
    • 题目3:Pandas是什么,有什么特点,为什么要学?

      • 概念

        • Pandas 是 Python 中的一个用于数据清洗、处理以及分析的第三方布局化数据处理开源库
        • 是用于商业和工程领域最流行的**布局化数据【表】**工具集
        • 大数据场景下,数据在流转的过程中,Pandas 中丰富的API可以或许更加灵活、快速的对数据举行清洗和处理

      • 理解:把Pandas当做一个数据库,里面的数据以表的形式存在,然后通过Python代码对表的数据举行处理

        • SQL:表:Table

          • 语法:select 1 from 2 where 3 group by 4 having 5 order by 6 limit 7
          • 长处:简单可读性强
          • 缺点:不够灵活

        • Pandas:表:DataFrame

          • 使用函数对数据做处理
          • 长处:灵活
          • 缺点:相对比力复杂


      • 长处

        • 性能高:底层是基于Numpy构建的,运行速度特殊的快
        • 功能全:专门为数据处理而设计,提供了各种强盛而灵活的分组、聚合、转换功能

      • 缺点

        • 只能用于单机数据处理,本身无法实现分布式处理,不能解决大数据平台处理题目

      • 应用

        • 数据分析领域中常用于数据量大到 Excel 严重卡顿,且又都是单机数据的时间,可以使用 Pandas分析
        • 可以使用 Pandas 在数据 ETL 中对各种数据源的数据举行清洗及处理

      • 目标

        • 掌握Python数据分析可以找数据分析、ETL等方向的岗位工作(核心)
        • Python开辟Spark与Pandas雷同,学习了Pandas的使用,可以更好的掌握PySpark的开辟



  • 小结:理解Python数据分析简介
【实现】Anaconda的先容及安装

Anaconda先容

Anaconda是最流行的数据分析平台,环球两千多万人在使用。


  • Anaconda 附带了一大批常用数据科学包
  • Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的
  • 可以帮助你在盘算机上安装和管理数据分析相干包
  • 包含了虚拟环境管理工具
简而言之,Anaconda是一个打包的集合,它里面预装好了conda、某个版本的python、浩繁packages、科学盘算工具、虚拟环境等等。
也就是说,它把很多库都给你提前预装好了,为用户提供极大的便利。
Anaconda下载及安装

Anaconda 可用于多个平台( Windows、Mac OS X 和 Linux),可以在官网上下载对应平台的安装包。
官网链接:https://www.anaconda.com/
如果盘算机上已经安装了某个版本的Python,依然不会影响到Anaconda的安装。
安装的过程很简单,一起下一步即可。

Anaconda使用

Anaconda可以通过向导(可视化)和命令行的方式来使用。
向导

Anaconda支持可视化,在开始菜单栏中:

点击Anaconda Navigator,进入初始化(稍等一会儿),初始化完毕后,会弹出如下内容
在这里插入图片形貌


命令

Anaconda和Python解释器一样,也支持命令的方式来管理已经安装好的第三方依赖。
不过Anaconda除了支持pip的方式,还支持conda的方式。
  1. #1.安装依赖
  2. conda install 包名字
  3. 或者
  4. pip install 包名字
  5. #2.注意,使用pip时最好指定安装源
  6. 阿里云:https://mirrors.aliyun.com/pypi/simple/
  7. 豆瓣:https://pypi.douban.com/simple/
  8. 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
  9. #3.示例:通过阿里云镜像安装,安装命令和之前一样
  10. pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/
复制代码
虚拟环境

虚拟环境的作用:


  • 很多开源库版本升级后API有变革,老版本的代码不能在新版本中运行
  • 将差别Python版本/相同开源库的差别版本隔离
  • 差别版本的代码在差别的虚拟环境中运行
Anaconda支持两种方式创建虚拟环境:


  • 可视化
  • 命令行
以可视化的方式创建虚拟环境,先点击左下角的Create按钮,在弹出的对话框中选择Python版本,点击Create按钮即可,如下:

除此之外,也支持命令的方式创建虚拟环境:
  1. #1.通过命令行创建虚拟环境
  2. #查看虚拟环境
  3. conda env list
  4. #创建虚拟环境
  5. conda create -n 虚拟环境名字 python=python版本
  6. #激活虚拟环境(进入虚拟环境)
  7. conda activate 虚拟环境名字
  8. #禁用虚拟环境(退出虚拟环境)
  9. conda deactivate 虚拟环境名字
  10. #删除虚拟环境
  11. conda remove -n 虚拟环境名字 --all
复制代码
备注:在本阶段课程中,我们使用默认的base环境即可。
【实现】NoteBook的先容及启动



  • 目标:实现NoteBook的先容及安装
  • 实施

    • 先容

      • 题目1:什么是jupyter notebook?


        • 官方说
          1. Jupyter Notebook是一个开源Web应用程序,允许用户创建和共享包含实时代码,方程式,可视化和叙述文本的文档。用途包括:数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等等
          复制代码
        • 网友说
          1. Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释
          复制代码
        • 效果图


      • 题目2:为什么要用Jupyter notebook?

        • Jupyter notebook不仅功能全面而且更加方便、简洁、高效
        • 方便:jupyter Notebook通过把所有和软件编写有关的资源全部放在一个地方。当打开一个jupyter notebook时,可以看到相应的文档、图表和相应的代码,为必要切换窗口找资料,会很方便的获得项目标所有信息
        • 简洁:引进了Cell的概念,每次实验可以跑一个小Cell里的代码,并且,在代码的下面立刻可以看到效果。很强的互动性,为被繁杂的工具链所累,不消在命令行直接切换,所有科研工具可以jupyter上完成
        • 高效:用 Jupyter Notebook,运行一遍代码以后变量占用的内存不会主动开释。模子加载的所有数据都在内存里,不覆盖变量就不必要重跑 ,因此只需将代码分段执行,灵活调整参数


    • 安装:免安装,已经在Anaconda中自带了。
    • 启动

  1. #1.可以不执行(默认在base环境)
  2. conda activate 虚拟环境名字
  3. #2.输入命令
  4. jupyter notebook
复制代码


  • 小结:实现NoteBook的先容及安装
【掌握】NoteBook的界面及使用



  • 目标:掌握NoteBook的界面及使用
  • 实施

    • 创建目录





  • 创建Python文件

  • 修改文件名字

  • 编写代码

  • 常用快捷键

    • 模式划分

      • 命令模式:可以用于执行单元格的操纵命令
      • 编辑模式:可以对单元格中的内容举行编辑
      • 区分方式:看右上角的信托旁边是否有一个铅笔图案,有就是编辑模式,大概看选中框的颜色,绿色就是编辑模式,蓝色就是命令模式
      • 切换:命令模式下鼠标点入任何单元格中就进入编辑模式,编辑模式下按esc进入命令模式

    • 通用操纵

      • Shift+Enter:执行本单元代码,并跳转到下一单元格
      • Ctrl+Enter:执行本单元代码,留在本单元格

    • 命令模式

      • A:在当前cell的上面添加cell
      • B:在当前cell的下面添加cell
      • dd:删除当前cell
      • Y:cell切换到Code模式
      • M:cell切换到Markdown模式

    • 编辑模式

      • 多光标操纵/列式编辑:Ctrl键点击鼠标(Mac:CMD+点击鼠标)
      • 回退:Ctrl+Z(Mac:CMD+Z)
      • 重做:Ctrl+Y(Mac:CMD+Y)
      • 补全代码:变量、方法后跟Tab键
      • 为一行或多行代码添加/取消注释:Ctrl+/(Mac: CMD+/)


  • 小结:掌握NoteBook的界面及使用
【模块二:Pandas基础:Series】

【掌握】Pandas基础:数据概念先容



  • 目标:掌握Pandas基础:数据概念先容
  • 实施

    • 题目1:Pandas怎么读取数据?

      • step1:新建项目,在项目中新建data和 day01文件夹
      • step2:上传今日资料中数据文件到 data文件夹中
      • step3:上传代码中《Python数据分析_Pandas入门.ipynb》到 day01文件夹中
      • step4:使用 Pandas 读取数据 《1、1960-2019环球GDP数据.csv》
        1. # 导入 pandas
        2. import pandas as pd
        3. # 读取 文件
        4. input_df = pd.read_csv('../data/1、1960-2019全球GDP数据.csv', encoding='gbk')
        5. # 打印 输出
        6. input_df
        复制代码

    • 题目2:Pands读取到的数据是什么格式的?


      • DataFrame:用于Pandas中存储布局化数据的对象,可以理解为雷同于**表的概念**,由多行大概多列数据构成

        • DataFrame 是一个二维标记数据布局,雷同于电子表格或 SQL 表,其中每一列可以是差别的数据类型(整数、浮点数、字符串等)。
        • DataFrame 可以被看作是由多个 Series 对象构成的集合。每个 Series 共享相同的索引。

      • Series:用于Pandas中存储行列数据的对象,可以理解为**雷同于列的概念**

        • Series 是一种一维标记数组,雷同于Python中的列表大概一维数组。
        • 每个 Series 都有一个与之相干联的索引。默认情况下,这是从 0 到 N-1 的整数序列。




  • 小结:掌握Pandas基础:数据概念先容
【理解】Pandas基础:Series的创建



  • 目标:理解Pandas基础:Series的创建
  • 实施

    • 概念:Series也是Pandas中的最根本的数据布局对象,简称s对象,是DF的列对象大概行对象,Series本身也具有行索引。

      • values:一组包含N个值的数据,可以理解为数组中的值
      • index:行索引,如果没有为数据指定索引,于是会主动创建一个0到N-1的整数型索引,可以理解为数组的下标

    • 创建方式一:通过List列表
      1. # 创建s1, 值为 banana和42,不同类型
      2. s1 = pd.Series(['banana', 42])
      3. print(s1)
      4. # 创建s2, 值为 banana和apple,字符串类型
      5. s2 = pd.Series(['banana', 'apple'])
      6. print(s2)
      7. # 创建s3, 值为 50和42,数值类型
      8. s3 = pd.Series([50, 42])
      9. print(s3)
      10. # 创建s4, 值为 小明和男,字符串类型
      11. s4 = pd.Series(['小明', '男'])
      12. print(s4)
      13. # 修改s4, 值为 小明和男,字符串类型,并指定索引值为Name和Gender
      14. s4 = pd.Series(['小明', '男'], index=['Name', 'Gender'])
      15. print(s4)
      复制代码
      在这里插入图片形貌

    • 创建方式二:通过Dict字典或Tuple元组
      1. # 创建s5, 定义一个tuple
      2. tuple1 = (1, 2, 3)
      3. s5 = pd.Series(tuple1)
      4. print(s5)
      5. # 创建s6,定义一个字典 字典中的key值是Series对象的索引值, value值是Series对象的数据值
      6. dict1 = {'A': 1, 'B': 2, 'C': 3}
      7. s6 = pd.Series(dict1)
      8. print(s6)
      复制代码

  • 小结:理解Pandas基础:Series的创建
  1. #1.Series的创建可以有:
  2. (1)列表:
  3. 默认index从0开始,可以通过index参数指定。
  4. (2)元祖:
  5. 默认index从0开始,可以通过index参数指定。
  6. (3)字典:
  7. key就是index,value就是属性值。
复制代码
【理解】Pandas基础:Series的属性和方法



  • 目标:理解Pandas基础:Series的属性和方法
  • 实施

    • Series常见属性
           属性说明dtype或dtypesSeries内容的类型TSeries的转置矩阵shape数据的维度sizeSeries中元素的数量valuesSeries的值indexSeries的索引

  1. # 创建ss1对象
  2. ss1 = pd.Series(data=[1, 2, 3, 4, 2, 3], index=['A', 'B', 'C', 'D', 'E', 'F'])
  3. print(ss1)
  4. # 查看对象数据类型
  5. print("ss1的元素的类型:", ss1.dtypes)
  6. print("ss1的元素的类型:", ss1.dtype)
  7. # 查看转置后的效果
  8. print("ss1的元素的转置:")
  9. print(ss1.T)
  10. # 查看对象维度, 返回一个单个元素的元组, 元素个数代表维度数, 元素值代表值数量
  11. print("ss1的元素的形状:", ss1.shape)
  12. # 查看对象值数量
  13. print("ss1的元素的个数:", ss1.size)
  14. # 获取对象的数据值, 返回numpy的ndarray数组类型
  15. print("ss1的元素的值:", ss1.values)
  16. # 获取对象的索引
  17. print("ss1的元素的索引:", ss1.index)
复制代码
在这里插入图片形貌



  • Series常用方法
       方法说明append连接两个或多个Seriescorr盘算与另一个Series的相干系数describe盘算常见统计量drop_duplicates返回去重之后的Seriesequals判定两个Series是否相同get_values获取Series的值,作用与values属性相同hist绘制直方图isinSeries中是否包含某些值min返回最小值max返回最大值mean返回平均值median返回中位数mode返回众数quantile返回指定位置的分位数replace用指定值代替Series中的值sample返回Series的随机采样值sort_values对值举行排序to_frame把Series转换为DataFrameunique去重返回数组value_counts统计差别值数量keys获取索引值head检察前5个值tail检察后5个值
  1. # 查看ss1对象值数量
  2. print(len(ss1))
  3. # 查看ss1对象前5个值, n默认等于5
  4. print(ss1.head())
  5. print(ss1.head(n=5))
  6. # 查看ss1对象后5个值, n默认等于5
  7. print(ss1.tail())
  8. print(ss1.tail(n=5))
  9. # 获取ss1对象的索引
  10. print(ss1.keys())
  11. # ss1对象转换成python列表
  12. print(ss1.tolist())
  13. print(ss1.to_list())
  14. # ss1对象转换成df对象
  15. print(ss1.to_frame())
  16. # ss1对象中数据的基础统计信息
  17. print(ss1.describe())
  18. # ss1对象最大值、最小值、平均值、求和值...
  19. print(ss1.max())
  20. print(ss1.min())
  21. print(ss1.mean())
  22. print(ss1.sum())
  23. # ss1对象数据值去重, 返回s对象
  24. print(ss1.drop_duplicates())
  25. # ss1对象数据值去重, 返回数组
  26. print(ss1.unique())
  27. # ss1对象数据值排序, 默认升序
  28. print(ss1.sort_values(ascending=True))
  29. # ss1对象索引值排序, 默认升序
  30. print(ss1.sort_index(ascending=False))
  31. # ss1对象不同值的数量, 类似于分组计数操作
  32. print(ss1.value_counts())
复制代码


  • 小结:理解Pandas基础:Series的属性和方法
【理解】Pandas基础:布尔索引及运算



  • 目标:理解Pandas基础:布尔索引及运算
  • 实施

    • 布尔索引过滤

      • 需求:查询出年龄高于平均年龄的年龄信息
      • step1:加载数据
        1. # 加载数据
        2. df = pd.read_csv('../data/2、scientists.csv')
        3. print(df)
        复制代码

      • step2:取出年龄列,并获取平均年龄
        1. # 取出年龄列
        2. ages = df['Age']
        3. print(ages)
        4. # 获取年龄的平均值
        5. avg_age = ages.mean()
        6. print(avg_age)
        复制代码

      • step3:手动定义bool列表,获取高于平均年龄的数据及其索引
        1. # 手动定义一个bool类型的列表
        2. bool_list = [False, True, True, True, False, False, False, True]
        3. # 对Series进行筛选
        4. ages[bool_list]
        复制代码

      • step4:通过表达式来过滤,获取高于平均年龄的数据及其索引
        1. # 通过表达式构建bool_list
        2. bool_list = list(ages > avg_age)
        3. print(bool_list)
        4. # 对Series进行筛选
        5. ages[bool_list]
        复制代码

      结论:
      1. 布尔值=True,数据会被过滤出来(留下)。
      2. 布尔值=False,数据会被过滤掉。
      复制代码

    • Series运算

      • 与数值运算:Series和数值型变量盘算时,变量会与Series中的每个元素逐一举行盘算
        1. # 原始
        2. print(ages)
        3. # 加法
        4. print(ages + 10)
        5. # 乘法
        6. print(ages * 2)
        复制代码

      • 与Series运算:两个Series之间盘算时,索引值相同的元素之间会举行盘算;索引值差别的元素的盘算效果会用NaN值(缺失值)添补
        1. # 原始
        2. print(ages)
        3. # 索引相同运算
        4. print(ages + ages)
        5. print('=' * 20)
        6. # 构建一个Series,两行
        7. print(pd.Series([1, 100]))
        8. print('=' * 20)
        9. # 索引不相同运算
        10. print(ages + pd.Series([1, 100]))
        复制代码



  • 小结:Pandas基础:布尔索引及运算
  1. Series:只是一列数据,没有列名。
  2. Series + 列名 = DataFrame。
复制代码
【模块三:Pandas基础:DataFrame】

【掌握】Pandas基础:DataFrame的创建

DataFrame=二维表,二维表就是由行和列构成。行大概列就是Series。


  • 目标:掌握Pandas基础:DataFrame的创建
  • 实施

    • 概念:DataFrame是一个表格型的布局化数据布局,它含有一组或多组有序的列(Series),每列可以是差别的值类型数

      • DataFrame是Pandas中的最根本的数据布局对象,简称df,可以以为df就是一个二维数据表,这个表有行有列有索引
      • DataFrame是Pandas中最根本的数据布局,Series的很多属性和方法在DataFrame中也一样适用

    • 创建方式一:读取文件
      1. # 方式一:读取文件
      2. df = pd.read_csv('../data/2、scientists.csv')
      3. print(df)
      复制代码
    • 创建方式二:Series转换
      1. # 方式二:Series转换
      2. df = ages.to_frame()
      3. print(df)
      复制代码
      在这里插入图片形貌

    • 创建方式三:列表List、元组Tuple、字典Dict

      • 字典
        1. # 方式三:字典
        2. # 定义一个字典
        3. dict_data = {
        4.     'id': [1, 2, 3],
        5.     'name': ['张三', '李四', '王五'],
        6.     'age': [18, 20, 22]
        7. }
        8. # 创建df, 字典中的key值是df对象的列名,value值是对应列的数据值
        9. df_dict_1 = pd.DataFrame(data=dict_data)
        10. print(df_dict_1)
        11. # 通过index参数指定索引, columns参数指定列的位置
        12. df_dict_2 = pd.DataFrame(data=dict_data, index=['A', 'B', 'C'], columns=['id', 'age', 'name'])
        13. print(df_dict_2)
        复制代码

      • 列表/元祖
        1. # 方式三:列表
        2. # 定义一个列表/元组
        3. list_data = [(1, '张三', 18),
        4.              (2, '李四', 20),
        5.              (3, '王五', 22)]
        6. # 创建df,指定行标签和列标签
        7. df_list = pd.DataFrame(data=list_data,
        8.                    index=['A', 'B', 'C'],  # 手动指定索引
        9.                    columns=['id', 'name', 'age'])  # 手动指定列名
        10. print(df_list)
        复制代码



  • 小结:掌握Pandas基础:DataFrame的创建
  1. #1.DataFrame的创建方式有三种:
  2. (1)读取文件/excel/数据库(必须掌握)
  3. (2)Series转换(仅做了解)
  4. (3)根据容器创建
  5.         列表
  6.         元祖
  7.         字典(必须掌握)
复制代码
【掌握】Pandas基础:DataFrame的属性和方法



  • 目标:掌握Pandas基础:DataFrame的属性和方法
  • 实施

    • DataFrame常见属性
      1. # 加载数据集, 得到df对象
      2. df = pd.read_csv('../data/2、scientists.csv')
      3. # 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
      4. print(df.shape)
      5. # 查看数据值个数, 行数*列数, NaN值也算
      6. print(df.size)
      7. # 查看数据值, 返回numpy的ndarray类型
      8. print(df.values)
      9. # 查看维度数
      10. print(df.ndim)
      11. # 返回列名和列数据类型
      12. print(df.dtypes)
      13. # 查看索引值, 返回索引值对象
      14. print(df.index)
      15. # 查看列名, 返回列名对象
      16. print(df.columns)
      复制代码
    • DataFrame常用方法
      1. # 查看前5行数据
      2. print(df.head())
      3. # 查看后5行数据
      4. print(df.tail())
      5. # 查看df的基本信息
      6. df.info()
      7. # 查看df对象中所有数值列的描述统计信息
      8. print(df.describe())
      9. # 查看df的行数
      10. print(len(df))
      11. # 查看df各列的最小值
      12. print(df.min())
      13. # 查看df各列的非空值个数
      14. print(df.count())
      15. # 查看df数值列的平均值
      16. print(df.mean())
      复制代码

  • 小结:掌握Pandas基础:DataFrame的属性和方法
  1. #1.DataFrame属性小结:
  2. 结论:columns属性只有在DataFrame中才有。
  3. #2.DataFrame常见的方法:
  4. head()
  5. info()
  6. describe()
  7. len()
  8. #3.DataFrame方法小结:
  9. 结论:info方法只有在DataFrame中才有。
复制代码
【理解】Pandas基础:DataFrame的运算



  • 目标:理解Pandas基础:DataFrame的运算
  • 实施

    • 布尔索引过滤
      1. # 需求:获取年龄大于平均年龄的数据
      2. # 获取bool列表
      3. bool_list = df['Age'] > df['Age'].mean()
      4. print(bool_list)
      5. # 筛选数据
      6. print(df[bool_list])
      7. # 合并
      8. print(df[df['Age'] > df['Age'].mean()])
      复制代码

    • DataFrame运算

      • DataFrame和数值型变量盘算时,变量会与DataFrame中的每个元素逐一举行盘算,但df中存在非数值类型列时不能举行加减除运算
        1. # 数值型变量计算
        2. # 加载数据集, 得到df对象
        3. df = pd.read_csv('../data/2、scientists.csv')
        4. print(df)
        5. print(df * 2)
        复制代码

      • 两个DataFrame之间、以及df和s对象举行盘算时,索引值相同的行之间会举行盘算;索引值差别的行的盘算效果会用NaN值(缺失值)添补。
        1. # DataFrame之间运算
        2. # 行相同:复制(非数值列)或者计算(数值列)
        3. print(df + df)
        4. # 行不同:做匹配(join的操作)
        5. df2 = df[df.index.isin(values=[0, 2, 4])]
        6. print(df2)
        7. print(df + df2)
        复制代码



  • 小结:理解Pandas基础:DataFrame的运算
  1. #1.DataFrame的运算和Series类似,布尔值和四则运算。
  2. 布尔值过滤必须掌握。
  3. 四则运算仅做了解。
复制代码
【模块四:Pandas基础:位置查询】

【掌握】行列读写根本概念



  • 目标掌握行列读写处理操纵
  • 实施

    • **题目:DataFrame是一张表,怎么从表中读写数据? **行标签、列标签、行编号、列编号
      1. # 读取数据
      2. China = pd.read_csv('../data/3、China.tsv', sep='\t')
      3. China
      复制代码
    • 行标签【行号】和列标签【列名】

      • 行标签:就是DataFrame中每一行的行号,默认从0开始编号的数值
      • 列标签:就是DataFrame中每一列的列名,默认就是列名

           

      • 获取DataFrame中的行标签和列标签
        1. # 获取行标签:默认是数值,从0开始编号
        2. China.index
        3. # 获取列标签
        4. China.columns
        复制代码


    • 位置编号:二维列表的下标

      • 行位置编号【行号】:从上到下,第1行编号为0,第二行编号为1,…,第n行编号为n-1
      • 列位置编号【列号】:从左到右,第1列编号为0,第二列编号为1,…,第n列编号为n-1



  • 小结:掌握行列读写概念
  1. DataFrame中,行可以称为索引或者标签,列也是如此。
  2. 默认行是以索引来显示的。
  3. 默认列是显示的标签。
复制代码
【实现】行列读写操纵loc函数



  • 目标实现行列读写根本操纵loc函数
  • 实施

    • 功能:通过行列标签获取DataFrame指定行列的数据
    • 语法
      1. #loc:location,标签位置
      2. #iloc:index location,索引位置
      3. loc[ [行标签] , [列标签] ]     # 获取哪些行的哪些列的数据
      复制代码
    • 示例
      1. #示例1:获取行标签为 0, 1, 6 行的 country、pop、gdpPercap 列的数据
      2. China.loc[[0, 1, 6], ['country', 'pop', 'gdpPercap']]
      复制代码

      1. #示例2:获取行标签为 0, 1, 6 行的所有列的数据
      2. China.loc[[0, 1, 6]]
      复制代码

      1. #示例3:获取所有行的 country、pop、gdpPercap 列的数据
      2. China.loc[:, ['country', 'pop', 'gdpPercap']]
      复制代码

      1. #示例4:获取行标签为 7 行的所有列的数据
      2. China.loc[[7]]
      复制代码

      1. #示例5:获取行标签为 7 行的 lifeExp 列的数据
      2. China.loc[[7], 'lifeExp']
      复制代码


  • 小结:实现行列读写根本操纵
【实现】行列读写操纵iloc函数



  • 目标实现行列读写根本操纵loc函数
  • 实施

    • iloc函数【index-location】

      • 功能:通过行列位置编号获取DataFrame指定行列的数据
      • 语法
        1. iloc[ [行的位置] , [列的位置] ]     # 获取哪些行的哪些列的数据
        复制代码
      • 示例
        1. # 示例1:获取行位置为 0, 2, 4 行的 0、1、2 列的数据
        2. China.iloc[[0, 2, 4], [0, 1, 2]]
        复制代码

        1. # 示例2:获取行位置为 0, 2, 4 行的所有列的数据
        2. China.iloc[[0, 2, 4]]
        复制代码

        1. # 示例3:获取所有行的列位置为 0、1、2 列的数据
        2. China.iloc[:, [0, 1, 2]]
        复制代码

        1. # 示例4:获取行位置为 1 行的所有列的数据
        2. China.iloc[[1]]
        复制代码

        1. # 示例5:获取行位置为 1 行的列位置为 2 列的数据
        2. China.iloc[1, 2]
        复制代码


    • loc和iloc的切片操纵

      • 功能:通过loc大概iloc获取DataFrame中一定范围的行大概列的数据
      • 语法
        1. loc[起始行标签: 终止行标签, 起始列标签: 终止列标签 ]
        2. iloc[起始行位置: 终止行位置, 起始列位置: 终止列位置]
        复制代码
      • 示例:获取 China 中前三行的前三列的数据,分别使用上面先容的loc和iloc实现
        1. # loc行列标签实现:闭区间
        2. China.loc[0:2, 'country':'year']
        复制代码

        1. # iloc行列位置实现:前闭后开
        2. China.iloc[0:3, 0:3]
        复制代码



  • 小结:实现行列读写根本操纵
  1. #1.loc是用标签进行切片,iloc是用索引进行切片。
  2. 标签:可以写列名
  3. 索引:只能写数字
  4. #2.loc在切片的时候是闭区间。iloc是左闭右开区间。
复制代码
【实现】行列读写操纵[]索引



  • 目标实现行列读写根本操纵loc函数
  • 实施

    • [] 语法

      • 功能:通过行位置以及列标签获取DataFrame中的行列数据
      • 语法
        1. DataFrame['列标签']                                                          # 获取所有行对应的列:Series
        2. DataFrame[['列标签']]                                                          # 获取这一列的所有行:DataFrame
        3. DataFrame[['列标签1', '列标签2', ...]]                        # 获取指定列的所有行:DataFrame
        4. DataFrame[起始行位置:结束行位置]                   # 获取对应行的所有列:DataFrame
        5. DataFrame[起始行位置:结束行位置:步长]                       # 获取对应行的所有列:DataFrame
        复制代码
      • 示例
        1. # 示例1:获取所有行的 country、pop、gdpPercap 列的数据
        2. China[['country', 'pop', 'gdpPercap']]
        复制代码

        1. # 示例2:获取所有行的 pop 列的数据
        2. China['pop']                                # 返回值是Series
        3. 或者
        4. China[['pop']]                                # 返回值是DataFrame
        复制代码

        1. # 示例3:获取前三行的数据
        2. China[0:3]
        复制代码

        1. # 示例4:从第一行开始,每隔一行获取一行数据,一共获取3行
        2. China[0:6:2]
        复制代码



  • 小结:实现行列读写根本操纵
  1. #1.这里的DataFrame的切片没有loc和iloc,就是自身的。
  2. #2.切片过程中,索引是左闭右开区间。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表