用Python做数据处理常常会将数据写到文件中进行保存,又或将保存在文件中的数据读出来进行使用。通过Python将列表中的数据写入到csv文件中很多人都会,可以通过Python直接写文件或借助pandas很方便的实现将列表中的数据写入到csv文件中,但是写进去以后取出有些字段会有变化有些坑还是要避免。本文通过实例来介绍如何将列表中的数据写入文件如csv并正确解析出来使用。
示例数据如下:
data = [['John', '25', 'Male',[99,100,98]],
['Emily', '22', 'Female',[97,99,98]],
['Michael', '30', 'Male',[97,99,100]]]
通过pandas将数据写入csv
import pandas as pd
df = pd.DataFrame(data,columns=['Name', 'Age', 'Gender','Score'])
filename = 'data\pd_data.csv'
df.to_csv(filename, index=False)
df
我们对原始的数据中的分数Score字段进行求和统计总分TotalScore
df['TotalScore']=df['Score'].apply(sum)
df
通过pandas将csv文件中的数据读出
用pandas将csv文件将数据读出也是非常方便的一行代码就可以搞定
df_read_csv=pd.read_csv(filename)
df_read_csv
但是会发现从csv文件中读出数据后形成的dataframe数据集对数据中的分数Score字段进行求和统计总分TotalScore会报错!
df_read_csv['TotalScore']=df_read_csv['Score'].app
TypeError: unsupported operand type(s) for +: 'int' and 'str'
原因是原数据中Score字段中的数据是list但是报错至文件读出来后这个字段变成了字符串,字符串不能求和。
解决方案
将字段中为字符串的值进行转换,转换成list,numpy提供了string转list的方法,当然也可以自己写。
import numpy as np
def makeArray(text):
#return [int(item) for item in text[1:-1].split(',')] #将字串转换成列表
return np.fromstring(text[1:-1], sep=',') #用numpy提供的方法将字串转换成列表
df_read_csv['Score']=df_read_csv['Score'].apply(makeArray) #将Score由字符串转成列表
df_read_csv['TotalScore']=df_read_csv['Score'].apply(sum)
df_read_csv
可以看到这下Score字段可以正常的进行求和统计总分TotalScore了。
相关文章
Go 是否有三元运算符?Rust 和 Python 是怎么做的?
本文主要就 Go 中三元运算符展开讨论,从简单if-else语句、到基于匿名函数的单行表达式、及泛型抽象 If 函数等方式来实现类似的功能。当然,我没有建议使用这些方式,在没有内置支持的情况下,if-else的写法就挺好的。Go 中如何实现三元运算符?Rust 和 Python 是怎么做的?
编程日记 2024/02/21 09:46:19
Python3基础之import和from import的用法和区别
一个 python 的文件就叫做模块(module),如 xxx.py。模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能。
编程日记 2024/02/20 22:34:44
Python和Java的区别(不断更新)
运行效率:一般来说,Java的运行效率要高于Python,这主要是因为Java是编译型语言,其代码在执行前会进行预编译,而Python是解释型语言,边解释边执行。而Python没有类似的强大虚拟机,但它的核心是可以很方便地使用C语言函数或C++库,这使得Python可以轻松地与底层硬件进行交互。**类型系统:**Java是一种静态类型语言,所有变量需要先声明(类型)才能使用,且类型在编译时就已经确定。总的来说,Python和Java各有其优势和特点,选择哪种语言取决于具体的项目需求、开发环境以及个人偏好。
编程日记 2024/02/11 20:37:25
梯度是什么,为什么联邦学习传递这个就可以更新模型?
梯度是数学和机器学习领域中的一个基本概念,它表示的是一个函数在给定点处沿着不同方向的变化率或斜率。在多维空间中,梯度是一个向量,指向函数增长最快的方向,并且其大小表示在该方向上函数增长的速度。
编程日记 2024/02/08 18:09:30
VSCode python插件:找不到自定义包导致语法解析失败
vscode的默认python插件可没法聪明到根据这句话去找这个包,这就会导致后续代码中使用了这个库的部分无法享受自动补全、语法高亮等功能的便利性
编程日记 2024/02/07 09:14:30
人工智能与机器学习——开启智能时代的里程碑
人工智能是指使计算机系统表现出类似于人类智能的能力。其目标是实现机器具备感知、理解、学习、推理和决策等智能行为。人工智能的发展可以追溯到上世纪50年代,随着计算机技术和算法的不断进步,人工智能得以实现。机器学习是人工智能的一个重要分支,它通过让计算机从数据中学习和改进性能,而不需要明确的编程指令。机器学习可以分为监督学习、无监督学习和强化学习三种主要类型。
AI专题 2024/01/31 20:40:59
解决Linux环境下gdal报错:ERROR 4: `/xxx.hdf‘ not recognized as a supported file format.
题外话:我发现linux系统和Windows系统下面,库的版本是有差异的。比如我的本机Windows上装的是gdal3.2.3和numpy1.19.1,linux服务器上装的却是gdal3.0.2和numpy1.21.5。这个是很常见的回复,网上许多回答都说低版本的 gdal 不支持 hdf5,让你重装高版本的gdal。我之前用pip安装了whl,暴力装上了,但用的时候就会有问题。安装了不冲突的gdal之后,就成功打开文件啦~一开始我是抱着试试的心态,用conda,不用pip,重新安装了一下我的gdal。
编程日记 2024/01/30 14:36:06
使用Opencv-python库读取图像、本地视频和摄像头实时数据
Python中使用OpenCV读取图像、本地视频和摄像头数据很简单,首先需要安装Python,然后安装Opencv-python库然后在PyCharm或者VScode等IDE中输入对应的Python代码。
编程日记 2024/01/28 17:48:47
大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解
卷积神经网络是一种前馈神经网络,它的人工神经元可以响应周围单元的局部区域,从而能够识别视觉空间的部分结构特征。卷积层: 通过卷积操作检测图像的局部特征。激活函数: 引入非线性,增加模型的表达能力。池化层: 减少特征维度,增加模型的鲁棒性。全连接层: 在处理空间特征后,全连接层用于进行分类或回归。卷积神经网络的这些组件协同工作,使得CNN能够从原始像素中自动学习有意义的特征层次结构。随着深度增加,这些特征从基本形状和纹理逐渐抽象为复杂的对象和场景表现。
大数据 2024/01/18 09:46:23
详解动态网页数据获取以及浏览器数据和网络数据交互流程-Python
动态网页是一种在用户浏览时实时生成或变化的网页。。相比之下,动态网页可以根据用户的互动、请求或其他条件在浏览器端或服务器端生成新的内容。而且现在的网页一般都是采用前后端分离的架构,前端负责展示和用户交互,后端负责数据处理。这种架构使得前端可以更加灵活地实现动态内容的加载和展示。所以说以后想要获取到数据,动态网页数据获取会成为我们主流获取网页数据的技术。所以在动态网页数据获取这方面我们需要下足功夫了解动态网页数据交互形式、数据存储访问模式等方方面面的知识,我们才好更加灵活的获取到数据。
编程日记 2024/01/13 17:46:53
学习如何使用 Python 连接 MongoDB: PyMongo 安装和基础操作教程
Python 可以用于数据库应用程序。最流行的 NoSQL 数据库之一是 MongoDB MongoDB MongoDB 将数据存储在类似 JSON 的文档中,使数据库非常灵活和可扩展。 您可以在 MongoDB 官网 上下载免费的 MongoDB 数据库 PyMongo Python 需要一个 M
编程日记 2024/01/13 10:25:09
C# Onnx Chinese CLIP 通过一句话从图库中搜出来符合要求的图片
C# Onnx Chinese CLIP 通过一句话从图库中搜出来符合要求的图片
编程日记 2024/01/06 21:02:14
详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python
在网站设计领域,基于纯HTML格式构建的网页通常定义为静态网页,这种类型的网页是早期网站建设的主要形式。对于网络爬虫来说,抓取静态网页中的数据相对较为简单,因为所需的所有信息都直接嵌入在网页的HTML代码里。然而,对于那些利用AJAX技术动态加载数据的网页,其数据并不总是直接出现在HTML代码中,这对爬虫的抓取工作造成了一定的难度。在静态网页的数据抓取过程中,Requests库显示出其卓越的实用性。这个库不仅功能全面,而且操作简洁直观。
编程日记 2024/01/05 10:50:34
感知与认知的碰撞,大模型时代的智能文档处理范式
第十九届中国图象图形学学会青年科学家会议上,合合信息带来了关于多模态大模型赋能文档处理的相关内容,欢迎感兴趣的同学了解~
编程日记 2024/01/04 10:10:05
OpenCV:计算机视觉的强大工具库
计算机视觉的强大工具库一、什么是OpenCV?二、OpenCV的功能和特点三、OpenCV的应用领域四、OpenCV在实践中的重要性五、OpenCV的未来展望
编程日记 2024/01/02 21:03:17
Jupyter Notbook+cpolar内网穿透实现公共互联网访问使用数据分析工作
在数据分析工作中,使用最多的无疑就是各种函数、图表、代码和说明文档,这些复杂的内容不仅让使用的人头晕脑胀,也让普通的聊天工具一脸蒙圈。沟通工具不给力,就没法协同办公,可数据分析又离不开多人配合,所以Jupyter Notebook就成为大部分数据工作人员的必备工具。正如之前所说,Jupyter Notebook很适应复杂内容的沟通,因此现在也在机器学习、深度学习和教育工作中获得广泛应用。但Jupyter Notebook也有缺陷,就是被局限在局域网范围。
编程日记 2023/12/29 09:56:39
如何在Spring Boot中优雅地进行参数校验
在Java中,注解(Annotation)是一种代码标记,通常用于提供元数据,这些元数据可以被编译器或运行时环境使用。这些注解通常用于框架和库中,以实现更加灵活和可配置的代码。
编程日记 2023/12/25 10:15:17
大数据告诉你新能源汽车哪家强?
随着双碳战略的提出和电池技术、电动机技术等的不断进步,新能源汽车最近几年势头很猛,借着一份汽车销售数据一起来了解一下新能源汽车目前的市场情况,大家买电车的说不定可以用上,毕竟这可是。
大数据 2023/12/24 22:34:30
Python使用多线程解析超大日志文件
使用Python的多线程技术可以有效地提高处理超大日志文件的效率。但在实际应用中需要注意多线程编程中的各种问题,如线程管理、资源管理、错误处理等。通过合理的优化和调整可以提高程序的性能和稳定性。
编程日记 2023/12/24 11:16:35
基于Python Django的内容管理系统Wagtail CMS部署与公网访问
Wagtail是一个用Python编写的开源CMS,建立在Django Web框架上。Wagtail是一个基于Django的开源内容管理系统,拥有强大的社区和商业支持。它专注于用户体验,并为设计人员和开发人员提供精确控制。它能快速实现页面的表达,对于我这种对新实现的功能想要找到地方进行展示,但前端能力又不太行的同学基于django 一直会对django的稳定版本进行支持Wagtail由开发人员为开发人员构建。
编程日记 2023/12/19 13:27:23
深度解析 PyTorch Autograd:从原理到实践
本文深入探讨了 PyTorch 中 Autograd 的核心原理和功能。从基本概念、Tensor 与 Autograd 的交互,到计算图的构建和管理,再到反向传播和梯度计算的细节,最后涵盖了 Autograd 的高级特性。
编程日记 2023/12/14 22:38:54
【Java 基础篇】Java TCP通信详解
本文介绍了Java中如何使用TCP协议进行网络通信,包括TCP的基础知识、TCP编程的基本步骤、创建TCP服务器和客户端、数据传输等内容。通过学习本文,您可以开始使用TCP协议来构建自己的网络应用程序,实现可靠的数据传输。希望本文能够帮助您更好地理解和应用Java中的TCP通信。
编程日记 2023/09/24 00:01:55
【Java 基础篇】Java网络编程实战:P2P文件共享详解
P2P(Peer-to-Peer)文件共享是一种分布式计算模型,其中每个计算机或设备都可以充当客户端和服务器。这意味着每台计算机都可以上传和下载文件,而不仅仅是从一个中心服务器获取文件。P2P文件共享有许多优势,包括更快的下载速度、更高的可用性和更好的容错性。P2P文件共享是一种强大的分布式文件共享模型,可以提供更快的下载速度和更好的可用性。通过使用Java网络编程,我们可以实现P2P文件共享,让不同的客户端之间可以方便地共享文件。
编程日记 2023/09/24 00:01:45
【Java 基础篇】Java实现文件搜索详解
本文介绍了如何使用Java实现文件搜索功能。我们讨论了文件搜索的基本概念,以及使用递归和广度优先搜索两种常见的搜索方法。此外,还介绍了一些进阶功能,如搜索文件内容和过滤文件类型。在实际应用中,您可以根据需要定制和扩展文件搜索功能,以满足特定的要求。希望本文对您在Java文件搜索方面的工作和学习有所帮助。
编程日记 2023/09/24 00:01:39