之前我们学习了Numpy

Numpy系统学习(一)Numpy数组介绍数组的秩Qodi的博客-CSDN博客

Numpy系统学习(二)Numpy的数据类型_Qodi的博客-CSDN博客

Numpy系统学习(三)创建Ndarray数组对象创建ndarray对象Qodi的博客-CSDN博客

Numpy系统学习(四)数组元素操作_Qodi的博客-CSDN博客

Numpy系统学习(五)数组元素运算numpy 取反Qodi的博客-CSDN博客

而在Numpy的使用中,往往需要Pandas的配合,那么Numpy和Pandas的区别是什么呢?

  1. 数据结构:NumPy 主要支持数组和矩阵的运算,它的核心是 ndarray,这个数据结构支持多维数组和向量化运算。Pandas 则支持更多种类的数据结构,如 Series、DataFrame 和 Panel,其中最常用的是 DataFrame,它是由多个 Series 组成的表格型数据结构,适用于处理二维表格类型的数据。

  2. 数据类型:NumPy 数组中只能包含一种数据类型,如整数或浮点数,而 Pandas 中的 DataFrame 可以包含多种数据类型,如数字、字符串、布尔值等,这使得 Pandas 更加灵活。

  3. 数据处理:NumPy 适合处理数值计算和科学计算问题,如线性代数、傅里叶变换等数学问题,它提供了大量的数学函数和算法。Pandas 则适合处理结构化数据,如数据清洗、合并、分组、透视等数据处理操作,同时也支持一些简单的统计分析和可视化功能。

  4. 性能表现:由于 NumPy 的核心是 C 语言编写的数组计算,因此在处理大规模数据和数值计算问题时具有较高的性能表现。而 Pandas 中的 DataFrame 使用了一些 Python 的高级语法和操作,因此在处理大规模数据时性能表现相对较低。

综上所述,NumPy 和 Pandas 在数据处理方面各有优劣,需要根据实际需求选择合适的库。如果需要处理结构化数据,如表格型数据或时间序列数据等,可以使用 Pandas;如果需要进行数值计算、模型建立等科学计算问题,则可以使用 NumPy。在实际应用中,两者也可以结合使用,以充分发挥各自的优势。

目录

1 什么是pandas?

1.1 pandas 特点

1.2 pandas安装

2 pandas数据结构

2.1 一维数据 Series

2.1.1 Series的创建

2.1.2 Series 的数据检索

2.2 二维数据 DataFrame

2.2.1 DataFrame的创建

2.2.2 DataFrame 数据检索


1 什么是pandas?

封面与文不符合系列!!!

我们的pands可不是可爱的熊猫哦!!!!

pandas是一个python语言的扩展程序库,用于数据分析,它提供了一系列数据处理和分析的工具,使得数据处理变得更加简单和高效。Pandas 可以用于处理各种类型的数据,包括数字、文本、时间序列等,常用的数据结构包括 Series、DataFrame 和 Panel。

1.1 pandas 特点

  • pandas可以从各种文件格式比如CSV,JSON,SQL,Microsoft Excel导入数据

  • Pands可以对数据进行操作运算,对数据进行初始的处理,去掉我们不需要的数据

1.2 pandas安装

在Anaconda prompt中 输入

pip install pandas

安装成功后,我们可以通过如下命令检查是否正确

python   #打开python
>>> **import** pandas
>>> pandas.__version__  # 查看版本
'1.1.5'

2 pandas数据结构

2.1 一维数据 Series

pandas Series类似于表格中的一个列,类似于一维数组,可以保存任何的数据类型。

函数原型如下

pandas.Series( data, index, dtype, name, copy)

参数说明:

  • data:一组数据,ndarray 类型或普通列表等

  • index:数据索引标签,如果不指定,默认从 0 开始。

  • dtype:数据类型,默认会自己判断。

  • name:设置数据集名称。

  • copy:拷贝数据,默认为 False。

2.1.1 Series的创建

例1 设置一组数据,存储三个学生的名字,并输出观察

import pandas as pd
a=["Qodi","Jack","Lihua"]
myvar=pd.Series(a)
print(myvar)

输出

0 Qodi 1 Jack 2 Lihua dtype: object

可以看出他自动编排索引,默认索引从0 开始。

但我们发现这里的类型是object,可是我们明明输入的是字符型str呀,为什么会出现这个问题呢?原来呀,这根源在ndarray,在ndarray中,每个元素必须有相同的字节,如int64,float64等等他们都是八字节,但是我们的字符型长度是不固定的,因而他所占的字节也就不确定,所以在pands字符型就被变为了object型

接下来我们去使用参数,去对其做出修改,这次我们修改索引

例2 基于上面的例子,索引a,b,c,数据集名设为“student",且允许拷贝

import pandas as pd
a=["Qodi","Jack","Lihua"]
myvar=pd.Series(a,index=["a","b","c"],name="student",copy=1)
print(myvar)

输出

a Qodi b Jack c Lihua Name: student, dtype: object

我们也可以利用key对象,类似字典的方式创建Series,

例3 类似字典的方式创建Series

import pandas as pd
sites = {1: "Qodi", 2: "Jack", 3: "Lihua"}
myvar = pd.Series(sites)
print(myvar)

输出

1 Qodi 2 Jack 3 Lihua dtype: object

2.1.2 Series 的数据检索

例4 通过索引来查询数据

import pandas as pd
sites = {1: "Qodi", 2: "Jack", 3: "Lihua"}
myvar = pd.Series(sites)
print(myvar[2])

输出

2 Jack

2.2 二维数据 DataFrame

DataFrame可以看做是由Series组成的字典。(共同用一个索引)

比如

Series1 — name

1 Qodi

2 Jack

3 LiHua

Series2 — socre

1 95

2 90

3 100

Series3 — id

1 100

2 101

3 102

3个series共同组成

name score id
1 Qodi 95 100
2 Jack 90 101
3 Lihua 100 102

如上,他们共用一个索引 1,2,3

2.2.1 DataFrame的创建

pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。

  • index:索引值,或者可以称为行标签。

  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。

  • dtype:数据类型。

  • copy:拷贝数据,默认为 False。

例5 将上述的三个series组成的学生信息输出

import pandas as pd
data=[["Qodi",95,100],["Jack",100,101],["Lihua",90,102]]
df=pd.DataFrame(data,index=[1,2,3],columns=["name","socre","id"])
#index 设置行标签,columns设置列标签
print(df)

输出

name socre id

1 Qodi 95 100

2 Jack 100 101

3 Lihua 90 102

同一维,我们也可以用字典创建

例6 使用字典的方式来创建实现例5

import pandas as pd
data=[{"name":"Qodi","score":95,"id":100},{"name":"Jack","score":100,"id":101},{"name":"Lihua","score":90,"id":102}]
df=pd.DataFrame(data,index=[1,2,3],columns=["name","socre","id"])
print(df)

2.2.2 DataFrame 数据检索

1 通过列名索引 

import pandas as pd
data=[{"name":"Qodi","score":95,"id":100},
      {"name":"Jack","score":100,"id":101},
      {"name":"Lihua","score":90,"id":102}]
df=pd.DataFrame(data,index=[1,2,3],columns=["name","score","id"])
print(df["score"])

输出

1     95
2    100
3     90
Name: score, dtype: int64

2 使用行索引loc  获取行数据:可以使用 DataFrame 的行索引获取对应行的数据,例如:

import pandas as pd
data=[{"name":"Qodi","score":95,"id":100},
      {"name":"Jack","score":100,"id":101},
      {"name":"Lihua","score":90,"id":102}]
df=pd.DataFrame(data,index=[1,2,3],columns=["name","score","id"])
print(df.loc[1])

注意loc这里的索引是从1开始的,和python中的其他不同、

这里的1就代表第一行,其他1往往代表第二行
输出

name     Qodi
score      95
id        100
Name: 1, dtype: object

3 通过iloc 获得行 或者特定单元格

import pandas as pd
data=[{"name":"Qodi","score":95,"id":100},
      {"name":"Jack","score":100,"id":101},
      {"name":"Lihua","score":90,"id":102}]
df=pd.DataFrame(data,index=[1,2,3],columns=["name","score","id"])
row_data = df.iloc[0]  # 获取第一行数据
cell_data = df.iloc[0, 1]  # 获取第一行第二列的数据
print("获取第一行数据")
print(row_data)
print(" 获取第一行第二列的数据")
print(cell_data)

输出

获取第一行数据
name     Qodi
score      95
id        100
Name: 1, dtype: object
 获取第一行第二列的数据
95

注意iloc这里的索引是从0开始的,和loc不同

---------------------------------------相关文章快速跳转----------------------------------------

Numpy系列

Numpy系统学习(一)Numpy数组介绍数组的秩Qodi的博客-CSDN博客

Numpy系统学习(二)Numpy的数据类型_Qodi的博客-CSDN博客

Numpy系统学习(三)创建Ndarray数组对象创建ndarray对象Qodi的博客-CSDN博客

Numpy系统学习(四)数组元素操作_Qodi的博客-CSDN博客

Numpy系统学习(五)数组元素运算numpy 取反Qodi的博客-CSDN博客

Pandas系列

Pandas系统学习(一)基本数据结构pandas架构Qodi的博客-CSDN博客

pandas系统学习(二)数据处理.md_Qodi的博客-CSDN博客

pytorch系列

从原理到实践 | Pytorch tensor 张量花式操作_Qodi的博客-CSDN博客

pytorch的自动微分、计算图 | 代码解析_Qodi的博客-CSDN博客

从原理到代码实践 | pytorch损失函数_Qodi的博客-CSDN博客

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐