Python数据分析_Pandas入门
【模块一:Python数据分析介绍】
【理解】企业数据处理流程介绍
-
目标:理解企业数据处理流程介绍
-
实施
-
问题1:我们到底是做什么的?
-
岗位
- 初级:BI工程师、数据库开发工程师、数据分析师、ETL工程师
- 数据库SQL + 高级语言Python + ETL工具 + 报表工具 + 项目业务经验
- 中级:ETL工程师、数据仓库工程师、数据开发工程师、Spark开发工程师
- 高级:数据开发工程师、实时开发工程师
- 初级:BI工程师、数据库开发工程师、数据分析师、ETL工程师
-
本质:通过对公司数据的处理分析,提供数据支持,让公司实现更高层次的盈利
-
-
-
-
问题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
- 利用函数对数据做处理
- 优点:灵活
- 缺点:相对比较复杂
- SQL:表:Table
- 优点
- 性能高:底层是基于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的介绍及安装
【掌握】NoteBook的界面及使用
-
目标:掌握NoteBook的界面及使用
-
实施
-
创建目录
-
-
创建Python文件
-
修改文件名字
-
编写代码
-
常用快捷键
-
模式划分
-
命令模式:可以用于执行单元格的操作命令
-
编辑模式:可以对单元格中的内容进行编辑
-
区分方式:看右上角的
信任
旁边是否有一个铅笔图案,有就是编辑模式,或者看选中框的颜色,绿色就是编辑模式,蓝色就是命令模式 -
切换:命令模式下鼠标点入任何单元格中就进入编辑模式,编辑模式下按esc进入命令模式
-
-
通用操作
Shift+Enter
:执行本单元代码,并跳转到下一单元格Ctrl+Enter
:执行本单元代码,留在本单元格
-
命令模式
A
:在当前cell的上面添加cellB
:在当前cell的下面添加celldd
:删除当前cellY
: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 的整数序列。
- DataFrame:用于Pandas中存储结构化数据的对象,可以理解为类似于**表的概念**,由多行或者多列数据组成
-
-
小结:掌握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或dtypes Series内容的类型 T Series的转置矩阵 shape 数据的维度 size Series中元素的数量 values Series的值 index Series的索引
-
# 创建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 连接两个或多个Series corr 计算与另一个Series的相关系数 describe 计算常见统计量 drop_duplicates 返回去重之后的Series equals 判断两个Series是否相同 get_values 获取Series的值,作用与values属性相同 hist 绘制直方图 isin Series中是否包含某些值 min 返回最小值 max 返回最大值 mean 返回平均值 median 返回中位数 mode 返回众数 quantile 返回指定位置的分位数 replace 用指定值代替Series中的值 sample 返回Series的随机采样值 sort_values 对值进行排序 to_frame 把Series转换为DataFrame unique 去重返回数组 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', ...]] # 获取指定列的所有行:DataFrameDataFrame[起始行位置:结束行位置] # 获取对应行的所有列:DataFrame DataFrame[起始行位置:结束行位置:步长] # 获取对应行的所有列:DataFrame
-
示例
# 示例1:获取所有行的 country、pop、gdpPercap 列的数据 China[['country', 'pop', 'gdpPercap']]
# 示例2:获取所有行的 pop 列的数据 China['pop'] # 返回值是Series 或者 China[['pop']] # 返回值是DataFrame
# 示例3:获取前三行的数据 China[0:3]
# 示例4:从第一行开始,每隔一行获取一行数据,一共获取3行 China[0:6:2]
-
-
-
小结:实现行列读写基本操作
#1.这里的DataFrame的切片没有loc和iloc,就是自身的。#2.切片过程中,索引是左闭右开区间。