Pandas学习(完成文件写入、追加写入、读取操作)

news2024/10/6 6:42:17

问题引入

现在有这么一个需求

我要对我的很多设备进行快照处理,打完快照之后需要记录我的设备IP和快照时间

当我们解决了需求的其他内容,只剩记录信息的时候,可以怎么做呢

这时候就可以引入我们的pandas模块啦,它对数据进行一系列的数据

现在我先讲步骤列出,我们带着步骤进行学习

步骤

  1. 获取数据并进行处理
  2. 生成pd对象
  3. 将内容写入SCV
  4. 追加写入内容
  5. 读取文件中内容

前期准备

安装pandas

pip install pandas

导入包

import pandas

数据结构

Series

类似于表格中的一个列或者说一维数组

构造函数

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

参数说明

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。

使用数组创建

a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar)

在这里插入图片描述

指定索引值

a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])
print(myvar)

在这里插入图片描述

根据索引值读取数据

a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])
print(myvar["y"])

使用字典创建

使用字典创建Series就不需要指定其索引值了,其字典中的key就变成了索引值

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites)	
print(myvar)

在这里插入图片描述

如果只需要字典中的一部分数据,只需要指定需要数据的索引即可

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2])	
print(myvar)

在这里插入图片描述

设置名称参数

sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2], name="RUNOOB-Series-TEST" )
print(myvar)

在这里插入图片描述

DataFrame

也是一个表格型的数据结构,它含有有一组有序的列,每列可以是不同的值类型。

它既有行索引也有列索引,可以看做是由Series组成的字典(共用一个索引)

在这里插入图片描述

参数说明

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

二维数组创建

data = [['Google',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'],dtype=float)
print(df)

在这里插入图片描述

使用 ndarrays 创建

data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data)
print (df)

在这里插入图片描述

使用字典创建

没有对应的部分数据为NaN

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)

在这里插入图片描述

获取行数据

使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1

返回结果也就是一个 Series 数据

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}

# 数据载入到 DataFrame 对象
df = pd.DataFrame(data)
# 返回第一行
print(df.loc[0])
# 返回第二行
print(df.loc[1])

在这里插入图片描述

也可以返回多行数据,使用 [[ … ]] 格式,… 为各行的索引,以逗号隔开

此处返回的是 DataFrame 数据

# 返回第一行和第二行
print(df.loc[[0, 1]])

在这里插入图片描述

指定索引

data = {
  "calories": [420, 380, 390],
  "duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])
print(df)

在这里插入图片描述

操作 CSV 文件

CSV文件多数以逗号分割,其文件以纯文本形式存储表格数据(数字和文本)

写入SCV文件

使用 pandas 的 to_csv 方法写入

# 三个字段 name, site, age
nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
   
# 字典
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# 保存 dataframe
df.to_csv('site.csv')

在这里插入图片描述

读取CSV文件

df = pd.read_csv('文件名')
print(df.to_string())

to_String() 用于返回 DataFrame 类型的数据

如果不使用该函数,则输出数据的前面5行和后面5行,中间部分以 … 代替。

读取前几行

使用head() 方法,中间可以写入读取的行数,不填默认读取5行

df = pd.read_csv('文件名')
print(df.head(10))

读取后几行

使用tail() 方法,中间可以写入读取的行数,不填默认读取5行

df = pd.read_csv('文件名')
print(df.tail(10))

返回表格基本信息

使用 info() 方法返回表格的一些基本信息

df = pd.read_csv('文件名')
print(df.info())

解决问题

# 首先构造我们获取到的数据
data = [
    {'ip':'192.168.1.4','time':'2023-8-10'},
    {'ip':'192.168.1.6','time':'2023-8-10'},
]
# 写入csv文件进行保存
df = pd.DataFrame(data)
# index_label 设置不包含行索引
df.to_csv('test1.csv',index_label=False)

此时我们需要考虑之前如果已经保存过这个文件,那么我们的写入动作就变为追加写入

data = [
    {'ip':'192.168.1.4','time':'2023-8-10'},
    {'ip':'192.168.1.6','time':'2023-8-10'},
]
df = pd.DataFrame(data)
# 获取文件路径
file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)),'test1.csv')
if os.path.exists(file_path):
    # 如果存在则追加写入
    df.to_csv('test1.csv', mode='a', index_label=False, header=False)
else:
    # 如果不存在则创建文件写入
    df.to_csv('test1.csv', index_label=False)
# 打印输出结果
df = pd.read_csv('test1.csv')
print(df.to_string())
# 查看 ip 列属性
list = df["ip"].tolist()
print(list)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker常用操作命令(一)

Docker常用操作命令 1、搜索镜像 docker search命令搜索存放在 Docker Hub中的镜像,此命令默认Docker会在Docker Hub中搜索镜像,可以配置了其他镜像仓库 [rootzch01 ~]# docker search centos NAME:镜像仓库名称DESCRIPTION:镜像仓库描述STARS:镜像仓…

spring cloud 之 dubbo nacos整合

整体思路: 搭建本地nacos服务,详见docker安装nacos_xgjj68163的博客-CSDN博客 共三个工程,生产者服务、消费者服务、生产者和消费者共同依赖的接口工程(打成jar,供生产者和消费者依赖); …

【面试题】前端面试复习6---性能优化

前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 性能优化 一、性能指标 要在 Chrome 中查看性能指标,可以按照以下步骤操作: 打开 Chrome 浏览器,并访问你想要测试…

【 欧凯 网页 test】

骨钙素(BGP) 抗体参数 名称抗人骨钙素抗体(BGP antibody)应用平台免疫荧光,化学发光货号K135c2K131c1推荐用途捕获检测来源鼠单抗,体外培养获得缓冲液1PBS纯度Protein A/G纯化,纯度>96%储存…

结构型(五) - 适配器模式

一、概念 适配器模式(Adapter Pattern):这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 应用场景:适配器模式是一种事后的补救策略…

分布式事务(4):两阶段提交协议与三阶段提交区别

1 两阶段提交协议 两阶段提交方案应用非常广泛,几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。 缺点: 如果协调者宕机,参与者没有协调者指…

通过springBoot自动装配实现api封装

1.在resource目录下创建META-INF目录,并在其中创建resources\META-INF\spring.factories org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.tanhua.autoconfig.TanhuaAutoConfiguration springBoot在启动之后会自动扫描这个文件,并…

SAP LTMC基础教程之物料主数据详细操作示例

SAP LTMC基础教程之物料主数据详细操作示例 SAP S/4HANA 1610版本的推出已经不再建议使用LSMW了,使用中会受到很多限制(比如特性、类的导入),而是推出了新工具LTMC。记录并分享LTMC的操作。 有几个注意点能够搞明白基本都能成功…

爱校对如何帮助企业和博客主提高在线可见性?

在数字化时代,内容质量已经成为增强在线曝光率的关键因素。企业和博客主经常面临挑战,如何制作高质量、无误的内容以吸引更多的在线用户。此文将详细分析“爱校对”如何帮助用户优化内容,从而提高在线可见性。 1.互联网内容的挑战 搜索引擎…

git介绍+集成到IDEA中+使用gitee

目录 git介绍 本地工作流程 IDEA集git 添加到暂存区 添加到本地仓库 gitee使用 添加到远程仓库 git介绍 git是一个开源的分布式版本控制工具,效率高。可以记录历史代码,多人代码共享 知识小点: 集中式版本控制:使用中央存…

在浏览器中打包 TypeScript 系列2:在浏览器中打包 TypeScript

原文地址 这是“在浏览器中打包 TypeScript 系列”的第 2 部分。 第 1 部分:ES 模块和导入映射import maps 打包和转译( Bundling & Transpiling ) 毫无疑问,打包和转译对于 Web 开发至关重要。在深入讨论该主题之前,让我们重申一下什…

Java动态代理、反射

文章目录 动态代理调用者--->代理--->对象为什么需要代理代理的详细实现过程代码详情 反射反射概念反射中常用的方法所有代码 动态代理 调用者—>代理—>对象 动态代理就是无侵入式的给代码增加新的功能,通过接口保证后面的对象和代理需要实现同一个接…

Kubernetes教程—查看 Pod 和节点

目标 了解 Kubernetes Pod。了解 Kubernetes 节点。对已部署的应用故障排除。 Kubernetes Pod 在模块 2 中创建 Deployment 时, Kubernetes 创建了一个 Pod 来托管你的应用实例。Pod 是 Kubernetes 抽象出来的, 表示一组一个或多个应用容器(如 Docker…

Nexus2迁移升级到Nexus3

与 Nexus 2.x 相比,Nexus 3.x 为我们提供了更多实用的新特性。SonaType 官方建议我们,使用最新版本 Nexus 2.x 升级到最新版本 Nexus 3.x,并在 Nexus 升级兼容性 一文中为我们提供了各个版本 Nexus 升级到最新版本 Nexus 3.x 的流程&#xff…

opencv如何调用YOLOv5(无pytorch)

目录 一、前言 二.正文 2.1定义颜色 2.2目标检测主代码详解 2.3读取视频or图片进行检测 注意:opencv-python 本文使用的版本为4.5.2.52 一、前言 YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且…

情人节特别定制:多种语言编写动态爱心网页(附完整代码)

写在前面案例1:HTML Three.js库案例2:HTML CSS JavaScript案例3:Python环境 Flask框架结语 写在前面 随着七夕节的临近,许多人都在寻找独特而令人难忘的方式来表达爱意。在这个数字时代,结合创意和技术&#xff0…

maven 从官网下载指定版本

1. 进入官网下载页面 Maven – Download Apache Maven 点击下图所示链接 2. 进入文件页,选择需要的版本 3. 选binaries 4. 选文件,下载即可

十亿次实验,用概率解读周易大衍筮法的奥秘

还记得封神电影里的文王占卜吗? 也就是著名的大衍筮法。 《易传》曰:大衍之数五十,其用四十有九。分而为二以象两,挂一以象三, 揲之以四以象四时,归奇于扐以象闰,五岁再闰,故再扐而…

苹果电脑怎么录屏?步骤详解,看到就是赚到

苹果电脑作为一款受欢迎的高性能设备,不仅在日常工作中发挥着重要作用,还可以用于创造内容,如录制屏幕内容。录屏功能能够帮助用户将屏幕上的活动记录成视频,方便分享、演示或存档。可是您知道苹果电脑怎么录屏吗?通过…

Lnton羚通云算力平台【PyTorch】教程:torch.nn.SiLU

torch.nn.SiLU 原型 CLASS torch.nn.SiLU(inplaceFalse) torch.nn.SiLU 是 PyTorch 深度学习框架中的一个激活函数,它代表 Sigmoid-Weighted Linear Unit(SiLU),也称为 Swish 激活函数。SiLU 激活函数在深度学习中被广泛使用&…