数据分析--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






相关文章
|
11天前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
109 71
|
8天前
|
分布式计算 数据可视化 数据挖掘
Pandas数据应用:社交媒体分析
本文介绍如何使用Pandas进行社交媒体数据分析,涵盖数据获取、预处理、探索性分析和建模的完整流程。通过API获取数据并转换为DataFrame格式,处理缺失值和数据类型转换问题。利用Matplotlib等库进行可视化,展示不同类型帖子的数量分布。针对大规模数据集提供内存优化方案,并结合TextBlob进行情感分析。最后总结常见问题及解决方案,帮助读者掌握Pandas在社交媒体数据分析中的应用。
137 96
|
10天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
108 73
|
2天前
|
数据采集 机器学习/深度学习 搜索推荐
Pandas数据应用:推荐系统
在数字化时代,推荐系统是互联网公司的重要组成部分,Pandas作为Python的强大数据分析库,在数据预处理和特征工程中发挥关键作用。常见问题包括缺失值、重复值处理及数据类型转换,解决方案分别为使用`fillna()`、`drop_duplicates()`和`astype()`等函数。常见报错如KeyError、ValueError和MemoryError可通过检查列名、确保数据格式正确及分块读取数据等方式解决。合理运用Pandas工具,可为构建高效推荐系统奠定坚实基础。
32 18
Pandas数据应用:推荐系统
|
3天前
|
机器学习/深度学习 数据采集 自然语言处理
Pandas数据应用:情感分析
本文介绍了如何使用Pandas进行情感分析,涵盖数据准备、清洗、特征工程和模型构建。通过读取CSV文件、处理缺失值与重复项、转换文本格式,利用TF-IDF提取特征,并采用SVM等算法训练分类器。还讨论了内存不足、过拟合等问题的解决方案。旨在帮助读者掌握情感分析的基本流程与技巧。
51 35
|
1天前
|
数据可视化 数据挖掘 定位技术
Pandas数据应用:地理信息系统
本文介绍如何使用Pandas结合地理信息系统(GIS)进行空间数据分析与可视化。Pandas是Python强大的数据处理库,而GIS用于捕获、存储和分析地理数据。通过安装`geopandas`、`matplotlib`等库,可以实现数据加载、转换、空间索引查询、投影变换及可视化等功能。文章详细讲解了常见问题及解决方案,并提供代码案例,帮助读者高效处理地理数据,支持决策分析。
44 26
|
7天前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
51 22
|
4天前
|
机器学习/深度学习 运维 分布式计算
Pandas数据应用:异常检测
本文介绍如何使用Pandas进行异常检测,涵盖异常值定义及其对数据分析的影响。通过简单统计方法(如均值+3标准差)、箱线图法(基于四分位距IQR)和基于密度的方法(如DBSCAN),并提供代码案例。同时,针对数据类型不匹配、缺失值处理不当及大数据量性能问题等常见报错给出解决方案。掌握这些技术有助于提高数据分析的准确性和可靠性。
40 19
|
6天前
|
数据采集 数据挖掘 数据处理
Pandas数据应用:金融数据分析
本文介绍如何使用Pandas进行金融数据分析,涵盖数据导入、清洗、转换等基础操作。通过处理缺失值、重复值及数据类型不匹配等问题,结合时间序列分析和大规模数据处理技巧,帮助读者掌握常见问题的解决方案。案例分析展示了计算每日收益率并绘制图表的具体步骤。
37 14
|
4天前
|
存储 数据采集 数据挖掘
Pandas数据应用:用户行为分析
本文介绍了如何使用Pandas进行用户行为分析,涵盖从基础概念到实际应用的多个方面。首先简要介绍了Pandas的安装与基本功能,接着详细讲解了数据加载、初步探索及常见问题(如数据缺失、重复记录和时间戳格式不统一)的处理方法。随后探讨了用户活跃度和路径分析等模式挖掘技巧,并总结了常见报错及避免措施。通过掌握这些内容,读者可以更高效地进行用户行为分析,提升产品设计和用户体验。
46 8