数据分析--pandas 处理结构化数据

简介: 数据分析--pandas 处理结构化数据

基本数据结构


Series


类似于一维数组于字典的结合,是一个 有索引的一维数组。

values 一组数据(ndarray类型)

index 相关数据索引标签 用来显示索引 显示索引可以增加Series的可读性


Series对象的创建

索引可以选择性的输入

左侧为索引,右侧为值


96b9cba4ec23437c90047eacc4ad523f.png

通过字典创建Series对象


db9458747c7c468e9e969fd9b296ddab.png


Series对象的访问

通过iloc函数和loc函数直接访问,

通过类似于数组和属性的方式进行访问


3f2ffc42854e4903b7f714bce839ce3e.png


Series对象的操作

NumPy对ndarray对象进行的操作,对Series对象同同样可以。由于有索引的存在,在操作中存在索引对其的问题

Series对象的属性

索引 index

值 values


DataFrame


DataFrrame是一个表格型的数据结构,DataFrame由按一定顺序排列的多列数据组成,设计初衷是将Series的使用场景从一维拓展到多维,DataFrame既有行索引,也有列索引


行索引:index

列索引:columns

值 values

DataFrame的创建

创建DataFrame对象时可以接受多种输入包括一维的ndarray对象、列表、字典、Series对象的字典,二维的ndarray对象、Series对象,或者其他DataFrame,行索引,列索引可以通过index、columns参数指定,若没有名确的给出,则会设置默认值

通过值为列表的字典进创建DataFrame


e19f855814cf4882ace629d47d09da67.png


使用columns参数指定为列索引


0dc868b1000946c2b72d899c425ee8dc.png

DataFrame对象的columns、index、values属性


96f4ba6bf48f47209643925802eba2c7.png


通过值为Series对象的字典创建DataFrame对象

每一个Series为一列,

若不指定index。则所有Series对象的index属性的并集作为DataFrame的index。若某一个Series种不存在对应的index则赋值NaN;

若指定index,则会与指定索引相匹配,不能匹配的索引对应的值被标记为NaN


4e76bfd5cdca441ba29d1e451d36a585.png


通过元素为字典的列表创建DataFrame对象

每一个字典作为一列,键作为列名,键不存在色值设为NaN,若不指定index。则index为默认值


14e3bf125a824343874ed4c2c77c37a8.png


通过Series对象创建DataFrame对象

一个Series一列,name为其列名


55342333168047509ddff9917513b21c.png


DataFrame对象的访问

  • iloc 通过隐式索引取行
  • loc通过显示索引取行


714493f1ecdd4900b77cb16095d61dab.png

  • 直接通过列索引对DataFrame对象进行操作

直接取指定元素,第一个参数为行,第二个参数为列


deb3d2dae9184e5898b81533cd642c01.png

切片


9e69022ff09a46fa8ee8f1c22c07aa23.png


删除操作


# drop操作 对行或列进行删除操作,默认axis=0,表示对行进行操作,axis=1 表示对列进行操作,是否改变原数据根据inplace的参数,True或False
df = pd.DataFrame(np.random.randn(4,5),columns=list('ABCDE'),index=range(1,5))
df
df.drop(['A'],axis=1)  # 删除第一列,不改变原数据
df.drop(['A'],axis=1,inplace=True)    # 删除第一列,改变原数据
# del操作,对列进行删除操作
del df['B']
# pop操作,进行删除列的操作,并以Series对象返回被删除的列
column_B = df.pop('B')


基于pandas的index对象访问操作


pandas的index对象包括Series的index和DataFrame的index和columns


pandas的index对象


pandas中的Index对象负责管理轴标签和其他元素

Index对象的特性:不可修改性,有序性,可切片

不可修改性,能够保证在多个数据结构间的安全共享


索引的不同访问方式

调用方式


loc函数 显示索引

loc的访问方式是基于标签(label)的,包括行标签(index),列表签(columns),

表达式df.loc[index._argument<,col_argument>],首先是选择行,列可以省略

输入的参数可以是,单个标签,标签数组,或者标签的分片形式,布尔值组、接受参数为调用loc函数的对象的回调函数

iloc函数方式 隐式索引

iloc关注的是index的位置,用法和loc类似

输入的参数可以是单个整数,数组,位置的切片,布尔值数组接受参数为调用loc函数的对象的回调函数

类似字典方式的访问

可以直接将Series对象和DataFrame对象看作一个字典,而DataFarme对象相当于每一个元素都是Series对象的字典,所以可以用类似访问字典的方法进行访问

类似访问属性的方式

接受的参数类型有 单个变量、数组、布尔值类型数组或者回调函数


调用方式间的区别


loc函数与iloc函数的区别

都是对index的访问

loc接受的是Index对象(index和columns)的标签 显示

iloc结束的是Index对象(index和columns)的位置 隐式

通过loc函数和通过切片操作[]访问的区别

loc和切片操作都是基于标签的索引

loc函数首先对行标签(index)进行访问

切片操作是先对列标签(columns)的访问

两者在Series中没有差别


特殊参数类型


输入为布尔类型数组

输入为回调函数


数学统计和计算工具

统计函数,协方差、相关系数、排序


协方差协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。


cov函数:计算协方差,可以计算Series对象和另一个Series对象的协方差


495a5423507f47d38c473cab8dbbfd5a.png


DataFrame提供的cov函数,可以计算DataFrame对象各个列之间的协方差,得到一个协方差矩阵,当DataFrame对象中出现NaN,函数会排除它继续进行计算

协方差矩阵是一个对称矩阵


d59f7d3e8b8d439b9e2ab578deb0b929.png


有个空值得情况


ebf63a26ea3b44eb8a3cb9ddbd7023eb.png


相关系数

皮尔森相关系数

斯皮尔曼相关系数

肯德尔相关系数


窗口函数


Rolling对象

产生的是定长的窗口,需要通过参数window指定窗口大小,

通过参数指定窗口最小非NaN值的个数


Expanding对象

产生的是扩展窗口,第i个窗口的大小为i,可以将其看做特殊的window为数据长度、min_periods为1的Rolling对象·


EWM对象

产生的是加权窗口,其中需要定义衰减因子a

有很多定义衰减因子的方法。时间间隔、质心、指数权重减少到一半需要的时间,或者直接定义


数学聚合和分组运算


group by 包括三个阶段,

  • split阶段,通过一些原则将数据分组
  • apply阶段 每一个分组分别执行一个函数,产生一个新值
  • combine阶段 将各组的结果合并并分配到最终对象


agg函数的聚合操作


通过使用GroupBy对象的agg函数实现自定义函数,


d66bee0799d34bd9a06f69cf8dbf152e.png

通过agg函数还可以实现一次性应用多个函数,

3e90083153db4944a015b11f7acf20e6.png

通过agg函数还可以实现对不同列使用不同的函数

6a5fafb750484bf88d05092b13a5da74.png



transform函数的转换操作


将一个函数应用到每一个分组内,返回的结果长度和宽度和原来的数据长度相同,而不是每一个组只有一个结果

如果该函数作用于每一个组,计算得到的是一个标量,则它会被广播出去,使每一个组的成员得到相同的值


fabfb5e9188845d580fbf34d4a099e3a.png

transform函数的自定义函数

30803343bf0748e5afcff81dbab2564f.png

apply函数的一般操作


agg函数和transform函可以通过某些约束自定定义函数对GroupBy对象进行操作,有些 操作不符合这两类的约束,

apply函数将数据对象分成多个组,然后对每个组调用传入的函数,最后将其组合到一起

37ad193029984e71801e374ca8f5482c.png






相关文章
|
17天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
48 0
|
13天前
|
Python
|
13天前
|
Python
|
12天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
28 2
|
12天前
|
Python
Pandas 常用函数-数据合并
Pandas 常用函数-数据合并
29 1
|
13天前
|
索引 Python
Pandas 常用函数-数据排序
10月更文挑战第28天
8 1
|
13天前
|
Python
Pandas 常用函数-查看数据
Pandas 常用函数-查看数据
14 2
|
13天前
|
SQL JSON 数据库
Pandas 常用函数-读取数据
Pandas 常用函数-读取数据
12 2
|
17天前
|
Python
通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法
在金融分析领域,&quot;死叉&quot;指的是短期移动平均线(如MA5)下穿长期移动平均线(如MA10),而&quot;金叉&quot;则相反。本文介绍了一种利用Python编程语言,通过Pandas库处理股票收盘价数据,识别最近一次死叉后未出现金叉的具体位置的方法。该方法首先计算两种移动平均线,接着确定它们的交叉点,最后检查并输出最近一次死叉及其后是否形成了金叉。此技术广泛应用于股市趋势分析。
32 2
|
18天前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
31 2