1.1 - Pandas简介
1.1.1 Pandas了解
Pandas 是 机器学习中进行数据分析和处理的一个扩展库,能够快速得从不同格式的文件中加载数据(比如 CSV 、Excel文件等),然后将其转换为可处理的对象。
Pandas 基于Numpy在 ndarray 的基础上构建出了两种更适用于数据分析的存储结构,分别是 Series(一维数据结构)和 DataFrame(二维数据结构)。在操作 Series 和 DataFrame 时,基本上可以看成是 NumPy 中的一维和二维数组来操作,数组的绝大多数操作它们都可以适用。
1.1.2 Pandas数据结构 - Series
Series类似于Numpy的一维数组,每个元素都有一个索引,且索引默认为整数,从0开始递增。
1)初始化Series以及获取Series元素
import pandas as pd ''' data:array-like,dict,scalar value index:必须是不可变类型。允许相同。默认从0开始的整数。 dtype:元素类型,会自动推断,可省略。 name:Series名称 ''' ser = pd.Series(data=[1, 2, 3], index=['a', 'b', 'b'], dtype=int, name='ser_1') # 方法一:通过自定义的索引获取Series数据 print(ser['b']) # 方法二:通过默认的0 1 2 ... 索引获取数据 print(ser[0])
2)Series的属性
import pandas as pd ser = pd.Series(data=[1, 2, 3], index=['a', 'b', 'b'], dtype=int, name='ser_1') # Series常用属性 print(ser.dtype) # Series元素的类型 print(ser.name) # Series的名称 print(ser.size) # Series的长度 print(ser.index) # Series的索引 print(ser.values) # 返回Series对应的numpy的一维数组格式 print(ser.empty) # 判断Series是否为空,返回bool值
1.1.3 Pandas数据结构 - DataFrame
DataFrame 是一种表格型的二维数据结构,既有行索引(index),又有列索引(columns),且默认都是从0开始递增的整数。DataFrame的每一个单列和每一个单行都是Series,如果数据中同时包含了多个行和列则是DataFrame。
1)初始化DataFrame
import pandas as pd import numpy as np ''' data: array-like, dict, DataFrame index: 行索引 columns: 列索引 dtype: 元素类型 ''' d = ['a', 'b', 'c'] d0 = [[1, 2, 3], [4, 5, 6]] d1 = ['Tom', 'Bob', 'Linda'] d2 = [['Tom', 17], ['Bob', 18], ['Linda', 26]] d3 = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26]} # 一般将字典的key作为列索引 d4 = [{'name': 'Tom', 'age': 17}, {'name': 'Bob', 'age': 18}, {'name': 'Linda', 'address': 'guangzhou'}] df = pd.DataFrame(data=d, index=['r1', 'r2', 'r3'], columns=['c'], dtype=np.str_) print(df)
列表初始化:列表下面的一维,每个元素作为一行存储。
字典初始化:默认将字典的key作为列索引,key对应的value作用该列的值
列表&字典联合初始化:如:d4,会将每个字典中的key作为一列,其余字典没有这个key的列默认值为 NaN。
2)DataFrame的索引
索引获取列数据,切片获取行数据;
loc指定标签获取数据,iloc指定下标获取数据;这二者都是最多接收两个参数,分别代表行和列的索引值。
import pandas as pd import numpy as np # DataFrame 的索引 d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]} df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3']) print(df) # 索引获取列 # print(df['name']) # 索引获取列 # print(df[['name', 'age']]) # 索引多个列用[]括起来 # 切片获取行 print(df[:2]) # 下标切片 前开后闭 print(df['p1':'p3']) # index索引切片 前闭后闭 # 索引和切片组合 print(df[['name', 'age']][::2]) print(df[::2][['name', 'age']])
import pandas as pd # DataFrame 的索引 d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]} df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3']) print(df) # loc和iloc接收两个参数,分别索引对 行和列 进行索引。 print(df.loc['p1', ['name', 'age']]) # loc只能通过索引名进行索引 print(df.iloc[0, [0, 1]]) # iloc只能通过下标进行索引
3)DataFrame修改
import pandas as pd import numpy as np d = {'name': ['Tom', 'Bob', 'Linda'], 'age': [17, 18, 26], 'height': [172, 176, 188]} df = pd.DataFrame(data=d, index=['p1', 'p2', 'p3']) print(df) # 修改单列数据 df['name'] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index) df['name'] = ['tom', 'bob', 'linda'] df.loc[:, 'name'] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index) df.iloc[:, :1] = pd.Series(data=['tom', 'bob', 'linda'], index=df.index) print(df) # 修改多列数据,单列为Series,多列为DataFrame。 df[['age', 'height']] = pd.DataFrame(data={'age': [18, 18, 18], 'height': [178, 178, 178]}, index=df.index) print(df) # 追加单列数据,对不存在的列索引赋值,则为追加 df['hobby'] = pd.Series(data=['sing', 'swip', 'rap'], index=df.index) print(df) # 修改单行数据 df[1:2] = ['Tony', 23, 178] df.loc['p2'] = pd.Series(['Tony', 23, 178], index=df.columns) print(df) # 修改多行数据 df[:2] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]] df.loc[:'p2'] = [['Jack', 27, 1.76], ['Tony', 19, 1.72]] print(df) # 追加单行数据,对不存在的行索引赋值,则为追加 df.loc['p4'] = ['Toby', 23, 178] print(df)
分类:
Panda学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)