数据分析-pandas(一)

简介: pandas是Python的一个第三方开源库,是Python数据分析的必备高级工具,Pandas 这个名字来源于面板数据(Panel Data)与数据分析(data analysis)这两个名词的组合。在经济学中,Panel Data 是一个关于多维数据集的术语。Pandas 最初被应用于金融量化交易领域,现在它的应用领域更加广泛,涵盖了农业、工业、交通等许多行业。

 一,pandas简介:

       pandas是Python的一个第三方开源库,是Python数据分析的必备高级工具,Pandas 这个名字来源于面板数据(Panel Data)与数据分析(data analysis)这两个名词的组合。在经济学中,Panel Data 是一个关于多维数据集的术语。Pandas 最初被应用于金融量化交易领域,现在它的应用领域更加广泛,涵盖了农业、工业、交通等许多行业。

二,pandas数据结构Series简介:

Series是一个一维标记数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)。创建它的基本方法是调用Series

首先我们先导入pandas

import numpy as np
import pandas as pd
s = pd.Series(data, index=index)

image.gif

这里data可以有很多不同的东西:

       python字典

       一个ndarray

       标量值(如 5)

传递的索引是轴标签的列表,因此根据数据是什么,分为几种情况:

2.1 data为ndarray

如果 data 是 ndarray,则索引必须与数据长度相同。如果没有传递索引,则会创建一个具有 value 的索引。[0,..,len(data)-1]

这里我们先给出index

s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])

image.gif

a    0.469112
b   -0.282863
c   -1.509059
d   -1.135632
e    1.212112
dtype: float64

image.gif

s.index

image.gif

Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

image.gif

下面我们不给index

pd.Series(np.random.randn(5))

image.gif

0   -0.173215
1    0.119209
2   -1.044236
3   -0.861849
4   -2.104569
dtype: float64

image.gif

可以看到Python自动生成了一个索引

2.2 data为字典

Series可以从字典实例化:

d = {"b": 1, "a": 0, "c": 2}

image.gif

b    1
a    0
c    2
dtype: int64

image.gif

如果传递了索引,则将拉出索引中标签对应的数据中的值

d = {"a": 0.0, "b": 1.0, "c": 2.0}
pd.Series(d)
pd.Series(d, index=["b", "c", "d", "a"])

image.gif

a    0.0
b    1.0
c    2.0
dtype: float64
b    1.0
c    2.0
d    NaN
a    0.0
dtype: float64

image.gif

注意:NaN不是数字是pandas中使用的标准缺失数据标记

三,Serise切片操作:

Series与ndarray非常相似,并且是大多数Numpy函数的有效参数,Series也能对索引进行切片操作。

s[0]

image.gif

0.4691122999071863

image.gif

s[:3]

image.gif

a    0.469112
b   -0.282863
c   -1.509059
dtype: float64

image.gif

s[s > s.median()]

image.gif

a    0.469112
e    1.212112
dtype: float64

image.gif

s[[4, 3, 1]]

image.gif

e    1.212112
d   -1.135632
b   -0.282863
dtype: float64

image.gif

四,Series性质:

4.1 Series类似于numpy,字典

与numpy数组一样,pandas的Series也有一个dtype

s.dtype

image.gif

dtype('float64')

image.gif

这通常是NumPy dtype。然而,pandas和第3方库在几个地方扩展了NumPy的类型系统,在这种情况下,dtype将是ExtensionDtype.pandas中的一些示例是分类数据和可为空整数数据类型。

Series也类似于固定大小的字典,可以通过索引标签获取和设置值:

s["a"]
s["e"] = 12.0
"e" in s
"f" in s

image.gif

0.4691122999071863
a     0.469112
b    -0.282863
c    -1.509059
d    -1.135632
e    12.000000
dtype: float64
True
False

image.gif

如果索引中不包含标签则会引发异常。

使用Series.get()方法,丢失的标签将返回None或指定的默认值:

s.get("f", np.nan)

image.gif

nan

image.gif

4.2 矢量化操作和标签对齐系列:

使用原始Numpy数组时间,通常不需要逐值循环,在panda中使用Series时间也是如此,Series可以传递到大多数需要ndarray的Numpy方法中

s + s
s * 2
np.exp(s)

image.gif

a     0.938225
b    -0.565727
c    -3.018117
d    -2.271265
e    24.000000
dtype: float64
a     0.938225
b    -0.565727
c    -3.018117
d    -2.271265
e    24.000000
dtype: float64
a         1.598575
b         0.753623
c         0.221118
d         0.321219
e    162754.791419
dtype: float64

image.gif

Series和ndarray之间的一个关键区别是,Series会根据标签自动对齐数据,因此,在编写计算时无需烤炉Series的标签是否相同。

s[1:] + s[:-1]

image.gif

a         NaN
b   -0.565727
c   -3.018117
d   -2.271265
e         NaN
dtype: float64

image.gif

未对齐之间的运算结果Series将包含所涉及索引的并集。Series如果在其中一个或另一个中找不到标签,结果将被标记为丢失NaN。能够在不进行任何显式数据对齐的情况下编写代码,为交互式数据分析和研究提供了巨大的自由度和灵活性。pandas数据结构的集成数据对齐功能使pandas与大多数处理标记数据的相关工具区分开来。

注意:一般来说,我们选择使不同索引对象之间的操作的默认结果产生索引的并集,以避免信息丢失。尽管缺少数据,但拥有索引标签通常是计算过程中的重要信息。您当然可以选择通过dropna函数删除丢失数据的标签。

4.3 name属性:

Series还有一个name属性:

s = pd.Series(np.random.randn(5), name="something")
s.name

image.gif

0   -0.494929
1    1.071804
2    0.721555
3   -0.706771
4   -1.039575
Name: something, dtype: float64
'something'

image.gif

另外还能又pandas.Series.rename()来重命名

s2 = s.rename("different")
s2.name

image.gif

'different'

image.gif

4.4,基本属性

属性 用途
s.shape 查看数据行列
s.ndim 查看维度,Series 是一维,ndim 恒等于1
s.size 查看数据总数
s.index 查看索引
s.values 查看数据值
s.name 查看 Series 对象的 name,若未设定则为空

(1)

s = pd.Series(np.random.randint(1,10,size=(10,)))

s.head() # 默认是前五行数据,可自定义行数,比如想要十行的话,s.head(10)

(2)isnull(),notnull()函数检测缺失数据

 一,pandas简介:

       pandas是Python的一个第三方开源库,是Python数据分析的必备高级工具,Pandas 这个名字来源于面板数据(Panel Data)与数据分析(data analysis)这两个名词的组合。在经济学中,Panel Data 是一个关于多维数据集的术语。Pandas 最初被应用于金融量化交易领域,现在它的应用领域更加广泛,涵盖了农业、工业、交通等许多行业。

二,pandas数据结构Series简介:

Series是一个一维标记数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)。创建它的基本方法是调用Series

首先我们先导入pandas

import numpy as np
import pandas as pd
s = pd.Series(data, index=index)

image.gif

这里data可以有很多不同的东西:

       python字典

       一个ndarray

       标量值(如 5)

传递的索引是轴标签的列表,因此根据数据是什么,分为几种情况:

2.1 data为ndarray

如果 data 是 ndarray,则索引必须与数据长度相同。如果没有传递索引,则会创建一个具有 value 的索引。[0,..,len(data)-1]

这里我们先给出index

s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])

image.gif

a    0.469112
b   -0.282863
c   -1.509059
d   -1.135632
e    1.212112
dtype: float64

image.gif

s.index

image.gif

Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

image.gif

下面我们不给index

pd.Series(np.random.randn(5))

image.gif

0   -0.173215
1    0.119209
2   -1.044236
3   -0.861849
4   -2.104569
dtype: float64

image.gif

可以看到Python自动生成了一个索引

2.2 data为字典

Series可以从字典实例化:

d = {"b": 1, "a": 0, "c": 2}

image.gif

b    1
a    0
c    2
dtype: int64

image.gif

如果传递了索引,则将拉出索引中标签对应的数据中的值

d = {"a": 0.0, "b": 1.0, "c": 2.0}
pd.Series(d)
pd.Series(d, index=["b", "c", "d", "a"])

image.gif

a    0.0
b    1.0
c    2.0
dtype: float64
b    1.0
c    2.0
d    NaN
a    0.0
dtype: float64

image.gif

注意:NaN不是数字是pandas中使用的标准缺失数据标记

三,Serise切片操作:

Series与ndarray非常相似,并且是大多数Numpy函数的有效参数,Series也能对索引进行切片操作。

s[0]

image.gif

0.4691122999071863

image.gif

s[:3]

image.gif

a    0.469112
b   -0.282863
c   -1.509059
dtype: float64

image.gif

s[s > s.median()]

image.gif

a    0.469112
e    1.212112
dtype: float64

image.gif

s[[4, 3, 1]]

image.gif

e    1.212112
d   -1.135632
b   -0.282863
dtype: float64

image.gif

四,Series性质:

4.1 Series类似于numpy,字典

与numpy数组一样,pandas的Series也有一个dtype

s.dtype

image.gif

dtype('float64')

image.gif

这通常是NumPy dtype。然而,pandas和第3方库在几个地方扩展了NumPy的类型系统,在这种情况下,dtype将是ExtensionDtype.pandas中的一些示例是分类数据和可为空整数数据类型。

Series也类似于固定大小的字典,可以通过索引标签获取和设置值:

s["a"]
s["e"] = 12.0
"e" in s
"f" in s

image.gif

0.4691122999071863
a     0.469112
b    -0.282863
c    -1.509059
d    -1.135632
e    12.000000
dtype: float64
True
False

image.gif

如果索引中不包含标签则会引发异常。

使用Series.get()方法,丢失的标签将返回None或指定的默认值:

s.get("f", np.nan)

image.gif

nan

image.gif

4.2 矢量化操作和标签对齐系列:

使用原始Numpy数组时间,通常不需要逐值循环,在panda中使用Series时间也是如此,Series可以传递到大多数需要ndarray的Numpy方法中

s + s
s * 2
np.exp(s)

image.gif

a     0.938225
b    -0.565727
c    -3.018117
d    -2.271265
e    24.000000
dtype: float64
a     0.938225
b    -0.565727
c    -3.018117
d    -2.271265
e    24.000000
dtype: float64
a         1.598575
b         0.753623
c         0.221118
d         0.321219
e    162754.791419
dtype: float64

image.gif

Series和ndarray之间的一个关键区别是,Series会根据标签自动对齐数据,因此,在编写计算时无需烤炉Series的标签是否相同。

s[1:] + s[:-1]

image.gif

a         NaN
b   -0.565727
c   -3.018117
d   -2.271265
e         NaN
dtype: float64

image.gif

未对齐之间的运算结果Series将包含所涉及索引的并集。Series如果在其中一个或另一个中找不到标签,结果将被标记为丢失NaN。能够在不进行任何显式数据对齐的情况下编写代码,为交互式数据分析和研究提供了巨大的自由度和灵活性。pandas数据结构的集成数据对齐功能使pandas与大多数处理标记数据的相关工具区分开来。

注意:一般来说,我们选择使不同索引对象之间的操作的默认结果产生索引的并集,以避免信息丢失。尽管缺少数据,但拥有索引标签通常是计算过程中的重要信息。您当然可以选择通过dropna函数删除丢失数据的标签。

4.3 name属性:

Series还有一个name属性:

s = pd.Series(np.random.randn(5), name="something")
s.name

image.gif

0   -0.494929
1    1.071804
2    0.721555
3   -0.706771
4   -1.039575
Name: something, dtype: float64
'something'

image.gif

另外还能又pandas.Series.rename()来重命名

s2 = s.rename("different")
s2.name

image.gif

'different'

image.gif

4.4,基本属性

属性 用途
s.shape 查看数据行列
s.ndim 查看维度,Series 是一维,ndim 恒等于1
s.size 查看数据总数
s.index 查看索引
s.values 查看数据值
s.name 查看 Series 对象的 name,若未设定则为空

(1)

s = pd.Series(np.random.randint(1,10,size=(10,)))

s.head() # 默认是前五行数据,可自定义行数,比如想要十行的话,s.head(10)

(2)isnull(),notnull()函数检测缺失数据

创建一个测试集

obj = Series([10,4,np.nan])

image.gif

使用notnull查看

notnull = pd.notnull(obj)

image.gif

根据isnull()返回的结果,取不为空的数据

创建一个测试集

obj = Series([10,4,np.nan])

image.gif

使用notnull查看

notnull = pd.notnull(obj)

image.gif

根据isnull()返回的结果,取不为空的数据

相关文章
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
15 4
|
10天前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
25 3
|
22天前
|
数据采集 机器学习/深度学习 数据可视化
利用Python和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
1天前
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
7 0
|
3天前
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
|
10天前
|
存储 消息中间件 数据挖掘
Python实时数据分析:利用丰富的库(如Pandas, PySpark, Kafka)进行流处理,涵盖数据获取、预处理、处理、存储及展示。
【7月更文挑战第5天】Python实时数据分析:利用丰富的库(如Pandas, PySpark, Kafka)进行流处理,涵盖数据获取、预处理、处理、存储及展示。示例代码展示了从Kafka消费数据,计算社交媒体活跃度和物联网设备状态,并可视化结果。适用于监控、故障检测等场景。通过学习和实践,提升实时数据分析能力。
19 0
|
10天前
|
数据采集 数据挖掘 大数据
Pandas是Python数据分析的核心库,基于NumPy,提供DataFrame结构处理结构化数据
【7月更文挑战第5天】Pandas是Python数据分析的核心库,基于NumPy,提供DataFrame结构处理结构化数据。它支持缺失值处理(dropna()、fillna())、异常值检测(Z-Score、IQR法)和重复值管理(duplicated()、drop_duplicates())。此外,数据转换包括类型转换(astype())、数据标准化(Min-Max、Z-Score)以及类别编码(get_dummies())。这些功能使得Pandas成为大数据预处理的强大工具。
|
1月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【6月更文挑战第12天】在数字时代,Python因其强大的数据处理能力和易用性成为数据分析首选工具。结合Pandas(用于高效数据处理)和Matplotlib(用于数据可视化),能助你成为数据分析专家。Python处理数据预处理、分析和可视化,Pandas的DataFrame简化表格数据操作,Matplotlib则提供丰富图表展示数据。掌握这三个库,数据分析之路将更加畅通无阻。
|
1月前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
67 2