Pandas系统学习(一)基本数据结构
主要围绕pandas的基本介绍,以及pandas中使用最广的两种基本数据类型。哈哈哈哈哈封面与文不符系列,虽然我们介绍的是pandas,但可不是我们可爱的大熊猫呀
之前我们学习了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的区别是什么呢?
-
数据结构:NumPy 主要支持数组和矩阵的运算,它的核心是 ndarray,这个数据结构支持多维数组和向量化运算。Pandas 则支持更多种类的数据结构,如 Series、DataFrame 和 Panel,其中最常用的是 DataFrame,它是由多个 Series 组成的表格型数据结构,适用于处理二维表格类型的数据。
-
数据类型:NumPy 数组中只能包含一种数据类型,如整数或浮点数,而 Pandas 中的 DataFrame 可以包含多种数据类型,如数字、字符串、布尔值等,这使得 Pandas 更加灵活。
-
数据处理:NumPy 适合处理数值计算和科学计算问题,如线性代数、傅里叶变换等数学问题,它提供了大量的数学函数和算法。Pandas 则适合处理结构化数据,如数据清洗、合并、分组、透视等数据处理操作,同时也支持一些简单的统计分析和可视化功能。
-
性能表现:由于 NumPy 的核心是 C 语言编写的数组计算,因此在处理大规模数据和数值计算问题时具有较高的性能表现。而 Pandas 中的 DataFrame 使用了一些 Python 的高级语法和操作,因此在处理大规模数据时性能表现相对较低。
综上所述,NumPy 和 Pandas 在数据处理方面各有优劣,需要根据实际需求选择合适的库。如果需要处理结构化数据,如表格型数据或时间序列数据等,可以使用 Pandas;如果需要进行数值计算、模型建立等科学计算问题,则可以使用 NumPy。在实际应用中,两者也可以结合使用,以充分发挥各自的优势。
目录
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博客

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