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.安装依赖
- conda install 包名字
- 或者
- pip install 包名字
- #2.注意,使用pip时最好指定安装源
- 阿里云:https://mirrors.aliyun.com/pypi/simple/
- 豆瓣:https://pypi.douban.com/simple/
- 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
- #3.示例:通过阿里云镜像安装,安装命令和之前一样
- pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/
复制代码 虚拟环境
虚拟环境的作用:
- 很多开源库版本升级后API有变革,老版本的代码不能在新版本中运行
- 将差别Python版本/相同开源库的差别版本隔离
- 差别版本的代码在差别的虚拟环境中运行
Anaconda支持两种方式创建虚拟环境:
以可视化的方式创建虚拟环境,先点击左下角的Create按钮,在弹出的对话框中选择Python版本,点击Create按钮即可,如下:
除此之外,也支持命令的方式创建虚拟环境:
- #1.通过命令行创建虚拟环境
- #查看虚拟环境
- conda env list
- #创建虚拟环境
- conda create -n 虚拟环境名字 python=python版本
- #激活虚拟环境(进入虚拟环境)
- conda activate 虚拟环境名字
- #禁用虚拟环境(退出虚拟环境)
- conda deactivate 虚拟环境名字
- #删除虚拟环境
- conda remove -n 虚拟环境名字 --all
复制代码 备注:在本阶段课程中,我们使用默认的base环境即可。
【实现】NoteBook的先容及启动
- 目标:实现NoteBook的先容及安装
- 实施
- 先容
- 题目1:什么是jupyter notebook?
- 官方说
- Jupyter Notebook是一个开源Web应用程序,允许用户创建和共享包含实时代码,方程式,可视化和叙述文本的文档。用途包括:数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等等
复制代码 - 网友说
- Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释
复制代码 - 效果图
- 题目2:为什么要用Jupyter notebook?
- Jupyter notebook不仅功能全面而且更加方便、简洁、高效
- 方便:jupyter Notebook通过把所有和软件编写有关的资源全部放在一个地方。当打开一个jupyter notebook时,可以看到相应的文档、图表和相应的代码,为必要切换窗口找资料,会很方便的获得项目标所有信息
- 简洁:引进了Cell的概念,每次实验可以跑一个小Cell里的代码,并且,在代码的下面立刻可以看到效果。很强的互动性,为被繁杂的工具链所累,不消在命令行直接切换,所有科研工具可以jupyter上完成
- 高效:用 Jupyter Notebook,运行一遍代码以后变量占用的内存不会主动开释。模子加载的所有数据都在内存里,不覆盖变量就不必要重跑 ,因此只需将代码分段执行,灵活调整参数
- 安装:免安装,已经在Anaconda中自带了。
- 启动:
- #1.可以不执行(默认在base环境)
- conda activate 虚拟环境名字
- #2.输入命令
- jupyter 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》
- # 导入 pandas
- import pandas as pd
- # 读取 文件
- input_df = pd.read_csv('../data/1、1960-2019全球GDP数据.csv', encoding='gbk')
- # 打印 输出
- 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列表
- # 创建s1, 值为 banana和42,不同类型
- s1 = pd.Series(['banana', 42])
- print(s1)
- # 创建s2, 值为 banana和apple,字符串类型
- s2 = pd.Series(['banana', 'apple'])
- print(s2)
- # 创建s3, 值为 50和42,数值类型
- s3 = pd.Series([50, 42])
- print(s3)
- # 创建s4, 值为 小明和男,字符串类型
- s4 = pd.Series(['小明', '男'])
- print(s4)
- # 修改s4, 值为 小明和男,字符串类型,并指定索引值为Name和Gender
- s4 = pd.Series(['小明', '男'], index=['Name', 'Gender'])
- print(s4)
复制代码 在这里插入图片形貌
- 创建方式二:通过Dict字典或Tuple元组
- # 创建s5, 定义一个tuple
- tuple1 = (1, 2, 3)
- s5 = pd.Series(tuple1)
- print(s5)
- # 创建s6,定义一个字典 字典中的key值是Series对象的索引值, value值是Series对象的数据值
- dict1 = {'A': 1, 'B': 2, 'C': 3}
- s6 = pd.Series(dict1)
- print(s6)
复制代码
- 小结:理解Pandas基础:Series的创建
- #1.Series的创建可以有:
- (1)列表:
- 默认index从0开始,可以通过index参数指定。
- (2)元祖:
- 默认index从0开始,可以通过index参数指定。
- (3)字典:
- key就是index,value就是属性值。
复制代码 【理解】Pandas基础:Series的属性和方法
- 目标:理解Pandas基础:Series的属性和方法
- 实施
- Series常见属性
属性说明dtype或dtypesSeries内容的类型TSeries的转置矩阵shape数据的维度sizeSeries中元素的数量valuesSeries的值indexSeries的索引
- # 创建ss1对象
- ss1 = pd.Series(data=[1, 2, 3, 4, 2, 3], index=['A', 'B', 'C', 'D', 'E', 'F'])
- print(ss1)
- # 查看对象数据类型
- print("ss1的元素的类型:", ss1.dtypes)
- print("ss1的元素的类型:", ss1.dtype)
- # 查看转置后的效果
- print("ss1的元素的转置:")
- print(ss1.T)
- # 查看对象维度, 返回一个单个元素的元组, 元素个数代表维度数, 元素值代表值数量
- print("ss1的元素的形状:", ss1.shape)
- # 查看对象值数量
- print("ss1的元素的个数:", ss1.size)
- # 获取对象的数据值, 返回numpy的ndarray数组类型
- print("ss1的元素的值:", ss1.values)
- # 获取对象的索引
- 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个值
- # 查看ss1对象值数量
- print(len(ss1))
- # 查看ss1对象前5个值, n默认等于5
- print(ss1.head())
- print(ss1.head(n=5))
- # 查看ss1对象后5个值, n默认等于5
- print(ss1.tail())
- print(ss1.tail(n=5))
- # 获取ss1对象的索引
- print(ss1.keys())
- # ss1对象转换成python列表
- print(ss1.tolist())
- print(ss1.to_list())
- # ss1对象转换成df对象
- print(ss1.to_frame())
- # ss1对象中数据的基础统计信息
- print(ss1.describe())
- # ss1对象最大值、最小值、平均值、求和值...
- print(ss1.max())
- print(ss1.min())
- print(ss1.mean())
- print(ss1.sum())
- # ss1对象数据值去重, 返回s对象
- print(ss1.drop_duplicates())
- # ss1对象数据值去重, 返回数组
- print(ss1.unique())
- # ss1对象数据值排序, 默认升序
- print(ss1.sort_values(ascending=True))
- # ss1对象索引值排序, 默认升序
- print(ss1.sort_index(ascending=False))
- # ss1对象不同值的数量, 类似于分组计数操作
- print(ss1.value_counts())
复制代码
- 小结:理解Pandas基础:Series的属性和方法
【理解】Pandas基础:布尔索引及运算
- 目标:理解Pandas基础:布尔索引及运算
- 实施
- 布尔索引过滤
- 需求:查询出年龄高于平均年龄的年龄信息
- step1:加载数据
- # 加载数据
- df = pd.read_csv('../data/2、scientists.csv')
- print(df)
复制代码
- step2:取出年龄列,并获取平均年龄
- # 取出年龄列
- ages = df['Age']
- print(ages)
- # 获取年龄的平均值
- avg_age = ages.mean()
- print(avg_age)
复制代码
- step3:手动定义bool列表,获取高于平均年龄的数据及其索引
- # 手动定义一个bool类型的列表
- bool_list = [False, True, True, True, False, False, False, True]
- # 对Series进行筛选
- ages[bool_list]
复制代码
- step4:通过表达式来过滤,获取高于平均年龄的数据及其索引
- # 通过表达式构建bool_list
- bool_list = list(ages > avg_age)
- print(bool_list)
- # 对Series进行筛选
- ages[bool_list]
复制代码
结论:
- 布尔值=True,数据会被过滤出来(留下)。
- 布尔值=False,数据会被过滤掉。
复制代码
- Series运算
- 与数值运算:Series和数值型变量盘算时,变量会与Series中的每个元素逐一举行盘算
- # 原始
- print(ages)
- # 加法
- print(ages + 10)
- # 乘法
- print(ages * 2)
复制代码
- 与Series运算:两个Series之间盘算时,索引值相同的元素之间会举行盘算;索引值差别的元素的盘算效果会用NaN值(缺失值)添补
- # 原始
- print(ages)
- # 索引相同运算
- print(ages + ages)
- print('=' * 20)
- # 构建一个Series,两行
- print(pd.Series([1, 100]))
- print('=' * 20)
- # 索引不相同运算
- print(ages + pd.Series([1, 100]))
复制代码
- 小结:Pandas基础:布尔索引及运算
- Series:只是一列数据,没有列名。
- Series + 列名 = DataFrame。
复制代码 【模块三:Pandas基础:DataFrame】
【掌握】Pandas基础:DataFrame的创建
DataFrame=二维表,二维表就是由行和列构成。行大概列就是Series。
- 目标:掌握Pandas基础:DataFrame的创建
- 实施
- 概念:DataFrame是一个表格型的布局化数据布局,它含有一组或多组有序的列(Series),每列可以是差别的值类型数
- DataFrame是Pandas中的最根本的数据布局对象,简称df,可以以为df就是一个二维数据表,这个表有行有列有索引
- DataFrame是Pandas中最根本的数据布局,Series的很多属性和方法在DataFrame中也一样适用
- 创建方式一:读取文件
- # 方式一:读取文件
- df = pd.read_csv('../data/2、scientists.csv')
- print(df)
复制代码 - 创建方式二:Series转换
- # 方式二:Series转换
- df = ages.to_frame()
- print(df)
复制代码 在这里插入图片形貌
- 创建方式三:列表List、元组Tuple、字典Dict
- 字典
- # 方式三:字典
- # 定义一个字典
- dict_data = {
- 'id': [1, 2, 3],
- 'name': ['张三', '李四', '王五'],
- 'age': [18, 20, 22]
- }
- # 创建df, 字典中的key值是df对象的列名,value值是对应列的数据值
- df_dict_1 = pd.DataFrame(data=dict_data)
- print(df_dict_1)
- # 通过index参数指定索引, columns参数指定列的位置
- df_dict_2 = pd.DataFrame(data=dict_data, index=['A', 'B', 'C'], columns=['id', 'age', 'name'])
- print(df_dict_2)
复制代码
- 列表/元祖
- # 方式三:列表
- # 定义一个列表/元组
- list_data = [(1, '张三', 18),
- (2, '李四', 20),
- (3, '王五', 22)]
- # 创建df,指定行标签和列标签
- df_list = pd.DataFrame(data=list_data,
- index=['A', 'B', 'C'], # 手动指定索引
- columns=['id', 'name', 'age']) # 手动指定列名
- print(df_list)
复制代码
- 小结:掌握Pandas基础:DataFrame的创建
- #1.DataFrame的创建方式有三种:
- (1)读取文件/excel/数据库(必须掌握)
- (2)Series转换(仅做了解)
- (3)根据容器创建
- 列表
- 元祖
- 字典(必须掌握)
复制代码 【掌握】Pandas基础:DataFrame的属性和方法
- 目标:掌握Pandas基础:DataFrame的属性和方法
- 实施
- DataFrame常见属性
- # 加载数据集, 得到df对象
- df = pd.read_csv('../data/2、scientists.csv')
- # 查看维度, 返回元组类型 -> (行数, 列数), 元素个数代表维度数
- print(df.shape)
- # 查看数据值个数, 行数*列数, NaN值也算
- print(df.size)
- # 查看数据值, 返回numpy的ndarray类型
- print(df.values)
- # 查看维度数
- print(df.ndim)
- # 返回列名和列数据类型
- print(df.dtypes)
- # 查看索引值, 返回索引值对象
- print(df.index)
- # 查看列名, 返回列名对象
- print(df.columns)
复制代码 - DataFrame常用方法
- # 查看前5行数据
- print(df.head())
- # 查看后5行数据
- print(df.tail())
- # 查看df的基本信息
- df.info()
- # 查看df对象中所有数值列的描述统计信息
- print(df.describe())
- # 查看df的行数
- print(len(df))
- # 查看df各列的最小值
- print(df.min())
- # 查看df各列的非空值个数
- print(df.count())
- # 查看df数值列的平均值
- print(df.mean())
复制代码
- 小结:掌握Pandas基础:DataFrame的属性和方法
- #1.DataFrame属性小结:
- 结论:columns属性只有在DataFrame中才有。
- #2.DataFrame常见的方法:
- head()
- info()
- describe()
- len()
- #3.DataFrame方法小结:
- 结论:info方法只有在DataFrame中才有。
复制代码 【理解】Pandas基础:DataFrame的运算
- 目标:理解Pandas基础:DataFrame的运算
- 实施
- 布尔索引过滤
- # 需求:获取年龄大于平均年龄的数据
- # 获取bool列表
- bool_list = df['Age'] > df['Age'].mean()
- print(bool_list)
- # 筛选数据
- print(df[bool_list])
- # 合并
- print(df[df['Age'] > df['Age'].mean()])
复制代码
- DataFrame运算
- DataFrame和数值型变量盘算时,变量会与DataFrame中的每个元素逐一举行盘算,但df中存在非数值类型列时不能举行加减除运算;
- # 数值型变量计算
- # 加载数据集, 得到df对象
- df = pd.read_csv('../data/2、scientists.csv')
- print(df)
- print(df * 2)
复制代码
- 两个DataFrame之间、以及df和s对象举行盘算时,索引值相同的行之间会举行盘算;索引值差别的行的盘算效果会用NaN值(缺失值)添补。
- # DataFrame之间运算
- # 行相同:复制(非数值列)或者计算(数值列)
- print(df + df)
- # 行不同:做匹配(join的操作)
- df2 = df[df.index.isin(values=[0, 2, 4])]
- print(df2)
- print(df + df2)
复制代码
- 小结:理解Pandas基础:DataFrame的运算
- #1.DataFrame的运算和Series类似,布尔值和四则运算。
- 布尔值过滤必须掌握。
- 四则运算仅做了解。
复制代码 【模块四:Pandas基础:位置查询】
【掌握】行列读写根本概念
- 目标:掌握行列读写处理操纵
- 实施
- **题目:DataFrame是一张表,怎么从表中读写数据? **行标签、列标签、行编号、列编号
- # 读取数据
- China = pd.read_csv('../data/3、China.tsv', sep='\t')
- China
复制代码 - 行标签【行号】和列标签【列名】
- 行标签:就是DataFrame中每一行的行号,默认从0开始编号的数值
- 列标签:就是DataFrame中每一列的列名,默认就是列名
- 获取DataFrame中的行标签和列标签
- # 获取行标签:默认是数值,从0开始编号
- China.index
- # 获取列标签
- China.columns
复制代码
- 位置编号:二维列表的下标
- 行位置编号【行号】:从上到下,第1行编号为0,第二行编号为1,…,第n行编号为n-1
- 列位置编号【列号】:从左到右,第1列编号为0,第二列编号为1,…,第n列编号为n-1
- 小结:掌握行列读写概念
- DataFrame中,行可以称为索引或者标签,列也是如此。
- 默认行是以索引来显示的。
- 默认列是显示的标签。
复制代码 【实现】行列读写操纵loc函数
- 目标:实现行列读写根本操纵loc函数
- 实施
- 功能:通过行列标签获取DataFrame指定行列的数据
- 语法
- #loc:location,标签位置
- #iloc:index location,索引位置
- loc[ [行标签] , [列标签] ] # 获取哪些行的哪些列的数据
复制代码 - 示例
- #示例1:获取行标签为 0, 1, 6 行的 country、pop、gdpPercap 列的数据
- China.loc[[0, 1, 6], ['country', 'pop', 'gdpPercap']]
复制代码
- #示例2:获取行标签为 0, 1, 6 行的所有列的数据
- China.loc[[0, 1, 6]]
复制代码
- #示例3:获取所有行的 country、pop、gdpPercap 列的数据
- China.loc[:, ['country', 'pop', 'gdpPercap']]
复制代码
- #示例4:获取行标签为 7 行的所有列的数据
- China.loc[[7]]
复制代码
- #示例5:获取行标签为 7 行的 lifeExp 列的数据
- China.loc[[7], 'lifeExp']
复制代码
- 小结:实现行列读写根本操纵
【实现】行列读写操纵iloc函数
- 目标:实现行列读写根本操纵loc函数
- 实施
- iloc函数【index-location】
- 功能:通过行列位置编号获取DataFrame指定行列的数据
- 语法
- iloc[ [行的位置] , [列的位置] ] # 获取哪些行的哪些列的数据
复制代码 - 示例
- # 示例1:获取行位置为 0, 2, 4 行的 0、1、2 列的数据
- China.iloc[[0, 2, 4], [0, 1, 2]]
复制代码
- # 示例2:获取行位置为 0, 2, 4 行的所有列的数据
- China.iloc[[0, 2, 4]]
复制代码
- # 示例3:获取所有行的列位置为 0、1、2 列的数据
- China.iloc[:, [0, 1, 2]]
复制代码
- # 示例4:获取行位置为 1 行的所有列的数据
- China.iloc[[1]]
复制代码
- # 示例5:获取行位置为 1 行的列位置为 2 列的数据
- China.iloc[1, 2]
复制代码
- loc和iloc的切片操纵
- 功能:通过loc大概iloc获取DataFrame中一定范围的行大概列的数据
- 语法
- loc[起始行标签: 终止行标签, 起始列标签: 终止列标签 ]
- iloc[起始行位置: 终止行位置, 起始列位置: 终止列位置]
复制代码 - 示例:获取 China 中前三行的前三列的数据,分别使用上面先容的loc和iloc实现
- # loc行列标签实现:闭区间
- China.loc[0:2, 'country':'year']
复制代码
- # iloc行列位置实现:前闭后开
- China.iloc[0:3, 0:3]
复制代码
- 小结:实现行列读写根本操纵
- #1.loc是用标签进行切片,iloc是用索引进行切片。
- 标签:可以写列名
- 索引:只能写数字
- #2.loc在切片的时候是闭区间。iloc是左闭右开区间。
复制代码 【实现】行列读写操纵[]索引
- 目标:实现行列读写根本操纵loc函数
- 实施
- [] 语法
- 功能:通过行位置以及列标签获取DataFrame中的行列数据
- 语法
- DataFrame['列标签'] # 获取所有行对应的列:Series
- DataFrame[['列标签']] # 获取这一列的所有行:DataFrame
- DataFrame[['列标签1', '列标签2', ...]] # 获取指定列的所有行:DataFrame
- DataFrame[起始行位置:结束行位置] # 获取对应行的所有列:DataFrame
- DataFrame[起始行位置:结束行位置:步长] # 获取对应行的所有列:DataFrame
复制代码 - 示例
- # 示例1:获取所有行的 country、pop、gdpPercap 列的数据
- China[['country', 'pop', 'gdpPercap']]
复制代码
- # 示例2:获取所有行的 pop 列的数据
- China['pop'] # 返回值是Series
- 或者
- China[['pop']] # 返回值是DataFrame
复制代码
- # 示例4:从第一行开始,每隔一行获取一行数据,一共获取3行
- China[0:6:2]
复制代码
- 小结:实现行列读写根本操纵
- #1.这里的DataFrame的切片没有loc和iloc,就是自身的。
- #2.切片过程中,索引是左闭右开区间。
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |