当前位置: 首页 > news >正文

day20 学习笔记

文章目录

  • 前言
  • 一、Pandas介绍
  • 二、创建Series对象
    • 1.创建空Series对象
    • 2.数据容器创建Series对象
    • 3.Numpy数组创建Series对象
  • 三、访问Series对象元素
    • 1.标签索引访问
    • 2.遍历Series对象元素
  • 四、创建Dataframe对象
    • 1.创建Dataframe空对象
    • 2.使用嵌套创建Dataframe对象
  • 五、Dataframe对象的增删改查


前言

  • 通过今天的学习,我掌握了Python的第三方库Pandas的基本操作,包括创建Pandas的Series对象,Dataframe对象以及增删改查操作

一、Pandas介绍

Pandas 在 ndarray 数组(NumPy 中的数组)的基础上构建出了两种不同的数据结构,分别是 Series(一维数据结构)、DataFrame(二维数据结构):

  • Series 是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等
  • DataFrame 是一种表格型数据结构,它既有行标签,又有列标签
  • Dataframe的每一行或每一列都可以看作是一个Series
  • 当从Dataframe中取某一列时,此时它的标签是Dataframe的行标签;取一行时同理
  • Pandas属于Python的第三方库,使用时需要导包

二、创建Series对象

  • pandas.Series(data,index,dtype)
  • index:指定索引标签;dtype:指定数据类型

1.创建空Series对象

s = pd.Series()
print(s)

2.数据容器创建Series对象

arr = {"name":"xiaohu","age":20}
s = pd.Series(arr)
print(s)

arr = [1,2,3]
s = pd.Series(arr)
print(s)

3.Numpy数组创建Series对象

arr = np.arange(3)
s = pd.Series(arr,index=["num 1","num 2","num 3"])
print(s)

三、访问Series对象元素

1.标签索引访问

arr = [1,2,3,4,5,6]
s = pd.Series(arr)
print(s[1]) #通过标签访问
print(s[:2]) #通过下标切片访问,不包含结尾索引

arr = np.arange(3)
s = pd.Series(arr,index=["num 1","num 2","num 3"])
print(s["num 1":"num 2"]) #通过标签切片访问,包含结尾索引

tips:对于Series对象,如果对象创建时没有指定index,则访问时会下标而非标签进行访问,涉及到结尾索引对应的元素是否被包含的问题

2.遍历Series对象元素

  • Pandas专门提供了items方法以及index,values属性来访问Series对象中的元素
for index,value in s.items(): #items方法
    print(index,value)

for index in s.index: #index属性
    print(index)

for value in s.values: #values属性
    print(value)

四、创建Dataframe对象

  • Dataframe作为Pandas的基本数据结构,可以理解为一个二维的表格,每一行以及每一列都可以理解为一个Series对象
  • pd.DataFrame( data, index, columns, dtype, copy)
  • index:行标签;colums:列标签

1.创建Dataframe空对象

df = pd.DataFrame()
print(df)

2.使用嵌套创建Dataframe对象

#列表嵌套字典
data = [{'name': "张三", 'age': 18},{'name': "小红", 'gender': "男", 'age': 19}]
df = pd.DataFrame(data=data)

#字典嵌套列表
#value数组的长度要求一致
data = {"name":['小米','小红','小紫'],"age":[18,19,20]}
df = pd.DataFrame(data=data)

#Series创建Dataframe
#字典嵌套Series
#长度不一致使用NAN填充
data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(data=data)

五、Dataframe对象的增删改查

  • 直接添加数据
data = {"name":['小米','小红','小紫'],"age":[18,19,20]}
df = pd.DataFrame(data=data)
df["sex"] = None #添加空列
df["sex"] = ["M","FM","FM"] #赋值添加新列
  • assign()
  • 链式调用,添加列并返回新的Dataframe而不改变原来的Datafram
f1 = df.assign(sex1=["M","FM","FM"])
print(df1)
  • insert()
  • 在指定位置插入数据
  • loc:插入位置的索引下标而非列标签;column:新列名;value:插入的值
df.insert(3,"sex3",["M","FM","FM"])
print(df)
  • 直接修改数据
data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(data=data)

df['two'] = pd.Series([2,3,4,5],index=['a','b','c','d'])

df['two'] = pd.Series([2,3,4,5])

tips:以上两个语句都修改df的"two"列,但一个指定了标签而另一个没有,没有指定标签会导致Pandas无法找到修改的位置而使得该列变为NAN

  • df.colums()
  • 在原对象的基础上修改列名
df.columns = ["1","2"]
print(df)
  • df.rename()
  • 改列名,返回新的Dataframe不影响原对象
df1 = df.rename(columns={"1":"fri","2":"sed"})
print(df1)
  • 修改数据类型
df["1"] = df["1"].astype(np.float16)
print(df['1'][1]) #<class 'numpy.float16'>

THE END

相关文章:

  • 怎么做网站的百度权重网络营销活动策划
  • 网站建设模板下载关键词优化的技巧
  • 做网站用什么框架最方便东莞网站关键词优化排名
  • 邯郸全网推广合肥seo网站排名
  • 西宁市网站建设公司南京seo排名公司
  • 分类信息免费发布网seo综合查询软件排名
  • PyTorch中的损失函数
  • 【Django】教程-10-ajax请求Demo,结合使用
  • 算法导论(动态规划)——子数组系列
  • 了解Docker容器的常见退出状态码及其含义
  • dify新版本1.1.3的一些问题
  • 生成对抗网络(GAN)详解(代码实现)
  • MySQL 中的 MVCC 版本控制机制原理
  • PCIe初始化Detect状态解读
  • 32f4,usart2fifo,2025
  • 【大模型系列篇】大模型基建工程:基于 FastAPI 自动构建 SSE MCP 服务器
  • 模版进阶(沉淀中)
  • 云原生安全渗透篇
  • 让AI再次伟大-MCP-Client开发指南
  • strace命令详解
  • .NET用C#在PDF文档中添加、删除和替换图片
  • InfluxDB用户管理全攻略:从入门到精通
  • C++ 继承方式使用场景(极简版)
  • fastGPT—nextjs—mongoose—团队管理之部门相关api接口实现
  • 当系统会“说话“:用人类能听懂的方式聊聊Syslog和Kafka
  • 【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解决方案