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

Python-pandas-操作csv文件(读取数据/写入数据)及csv语法详细分享

Python-pandas-操作csv文件(读取数据/写入数据)

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。
所有文章都不会直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~

python语法-pandas第三节-附 :本小节是 DataFrame全系列分享(使用.特点.说明.外部文件数据.取值.功能函数.统计函数)的 csv文件操作:读取数据及写入数据

详细的 DataFrame:
DataFrame全系列分享(数据结构.使用.特点.说明.外部文件数据.取值.功能函数.统计函数)
链接: DataFrame全系列分享
【上榜文章】一文搞定,非常详细的Python-Pandas - DataFrame全系列分享。大量案例且晦涩难懂的有大白话解释。详细的扩展内容也额外写了其他更加细节全面的文章链接在里面,来保证DataFrame的全部内容,本文就是其中一个扩展读写数据csv篇


文章目录

  • Python-pandas-操作csv文件(读取数据/写入数据)
  • 前言
  • 一、读取数据
  • 二、写入数据
  • 其他csv操作函数
    • head()方法
    • tail()
    • info()
  • 总结


前言

CSV(Comma-Separated Values),其文件以纯文本形式存储的表格数据(数字和文本)。
CSV是表格格式的数据,有表头(列名),有一行一行的数据。
正好通过Pandas来操作这些数据的时候:DataFrame也是一种表格格式的数据类型
DataFrame系列分析见文件头部链接。

测试本文DataFrame操作csv代码之前,需要准备一个csv文件,如果没有怎么办?谁家好孩子自己创建一个空文件,后缀是csv,然后添数据呀,您可以复制下面代码:
Python文件操作的详细文章为:
链接: Python代码写入/读取文件语法

#快速预览整体  没数据版本代码
import csv#在同层级位置开启一个csv(没有就自动创建一个,有就打开)
#模式为 w(写入) 新行没有空行newline  编码utf-8 指定为别名 f
with open('data.csv','w',newline="",encoding='utf-8') as f:fwrite = csv.DictWriter(f,fieldnames=['id','name','age'])#指定csv列名fwrite.writeheader()  #文件里写上表头 listdata = [{},{},{}]   #列表里面有三个字典数据   fwrite.writerows(listdata)
#重点:就是把那三个字典 放到csv里面,目前语法csv也只认字典,因为:#writerows方法是需要传递list类型数据的  只能用[{}] 哪怕一个字典数据
#字典类型有key~  key就对应csv的表头
import csvwith open('data.csv','w',newline="",encoding='utf-8') as f:#声明写入器fwrite  传入f变量,且声明列名为:'id','name','age'fwrite = csv.DictWriter(f,fieldnames=['id','name','age'])#写入头部(csv文件就带表头)  这句代码不写,文件第一行就没有表头(影响看,不影响取值/写入。因为是写入器fwrite来决定 列,不是这句写入头部的代码)fwrite.writeheader()listdata = [{'id':1,  #对应写入器的列名'name':'bangbangzhi', #三列'age':18  #我字典就三组 k-v},{'id':2, #一定要对应写入器的列名,不然它分不清楚,哪列放什么数据'name':'java','age':19},{'id':3, #您甚至可以把 这个字典的name Python 删了。 'name':'python',  #它会在csv里面空一列'age':20  #就是为什么 必须对应上 写入器 列的原因}]fwrite.writerows(listdata)#这个方法 传列表类型,但是我们列表里面有带数据的字典#它就根据字典的key  对应放在csv的对应列里面#如:

运行,控制台没有反应的,毕竟我没有写print().。它会在当前层级位置,生成一个新的csv文件:data.csv
在这里插入图片描述
双击打开csv文件(您开发工具如果有csv插件,打开就是一个表格):
在这里插入图片描述


一、读取数据

使用pandas来读取csv,方法:
pd.read_csv(参数)

常用参数为:filepath_or_buffer (路径或文件对象),sep (分隔符),header (行标题),names (自定义列名),dtype (数据类型),index_col (索引列)

参数为:

参数名字解释
filepath_or_bufferCSV 文件的路径或文件对象(支持 URL、文件路径、文件对象等) 必需参数
sep定义字段分隔符,默认是逗号(,),可以改为其他字符,如制表符(\t) ‘,’
header指定行号作为列标题,默认为 0(表示第一行),或者设置为 None 没有标题 0
names自定义列名,传入列名列表 None
index_col用作行索引的列的列号或列名 None
usecols读取指定的列,可以是列的名称或列的索引 None
dtype强制将列转换为指定的数据类型 None
skiprows跳过文件开头的指定行数,或者传入一个行号的列表 None
nrows读取前 N 行数据 None
na_values指定哪些值应视为缺失值(NaN) None
skipfooter跳过文件结尾的指定行数 0
encoding文件的编码格式(如 utf-8,latin1 等) None

哪来这么多参数?pandas的这个DataFrame本身就可以指定很多指标数据。毕竟最终您读取了csv文件,是要在pandas里面去做数据分析的。没有指定好,后面数据分析的代码没法写,那读csv有什么用,对吧~可以看看文章最开始的那个链接DataFrame介绍 ღ( ・ᴗ・) 比心

import pandas as pd# 读取 CSV 文件,并自定义列名  分隔符  每列的类型
df = pd.read_csv('data.csv', sep=',', header=0, names=['id', 'name', 'age'],dtype={'id': int, 'name': str, 'age': float})
print(df)#names=['id', 'name', 'age']是DataFrame的列名(和csv无关),但是一般都遵守标准命名规范
#所以都是和csv的列一样
#这里列名也是可以看需求改的

标准的DataFrame结构(行索引从0开始~):
行索引是啥?然后怎么操作,怎么取值,emmmmm,哦。: DataFrame全系列分享
在这里插入图片描述


二、写入数据

使用pandas来写入csv文件来存储,方法:
pd.to_csv(参数)
我现在演示的代码,csv文件和代码文件同层级,但是数据放到csv里面了,关机开机啥的,csv里面的东西一直在,csv就像txt一样的

参数为:

参数名字解释
path_or_bufferCSV 文件的路径或文件对象(支持文件路径、文件对象) 必需参数
sep定义字段分隔符,默认是逗号(,),可以改为其他字符,如制表符(\t) ‘,’
index是否写入行索引,默认 True 表示写入索引 True
columns指定写入的列,可以是列的名称列表 None
header是否写入列名,默认 True 表示写入列名,设置为 False 表示不写列名 True
mode写入文件的模式,默认是 w(写模式),可以设置为 a(追加模式) ‘w’
encoding文件的编码格式,如 utf-8,latin1 等 None
line_terminator定义行结束符,默认为 \n None
quoting设置如何对文件中的数据进行引号处理(0-3,具体引用方式可查文档) None
quotechar设置用于引用的字符,默认为双引号 " ‘"’
date_format自定义日期格式,如果列包含日期数据,则可以使用此参数指定日期格式 None
doublequote如果为 True,则在写入时会将包含引号的文本使用双引号括起来 True
import pandas as pd# 准备一些数据
name = ["hello", "python", "bangbangzhi", "emmm"]
bobby = ["eat", "sheep", "play", "what"]
age = [18, 19, 20, 100]
# 字典
dict = {'name': name , 'bobby': bobby, 'age': age}
df = pd.DataFrame(dict)
#随便写一个DataFrame
#至于怎么代码生成DataFrame 万一看不明白啥的~没事。 那个链接指向的文章很全的。
#本篇是  声明DataFrame语法模块内容里面的,,,小小分支 csv数据来源声明DataFrame额外分支篇文章# 保存 dataframe   
#主要就演示这句
df.to_csv('site.csv')  #还是一样的,当前代码文件的同层级位置生成新的csv

可以再来一个,懒得往上翻嘛:
详细的 DataFrame:
DataFrame全系列分享(数据结构.使用.特点.说明.外部文件数据.取值.功能函数.统计函数)
链接: DataFrame全系列分享


其他csv操作函数

head()方法

head( n ) 方法用于读取前面的 n 行,如果不填参数 n ,默认返回 5 行。

import pandas as pddf = pd.read_csv('data.csv')#我演示语法 ,数据总共才3行呢,我那个添加数据 字典篇幅不能太多了,哦~
print(df.head()) #返回前5行在控制台  
print(df.head(10)) #返回前10行在控制台  #也不用非得print(),没事儿输出前5行干啥,这个方法一般先取出一部分数据,来测试格式
#为数据分析 整篇csv全部内容 做铺垫准备

tail()

tail( n ) 方法用于读取尾部的 n 行,如果不填参数 n ,默认返回 5 行,空行各个字段的值返回 NaN。

import pandas as pddf = pd.read_csv('data.csv')print(df.tail()) #返回最后5行在控制台  
print(df.tail(10)) #返回最后10行在控制台  #和head很像

info()

方法返回表格的一些基本信息

import pandas as pddf = pd.read_csv('data.csv')
#查看信息
print(df.info())
#能看总行数  每列的名字 和数据类型

总结

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

相关文章:

  • python + segno 生成个人二维码
  • 模拟频谱分析仪(Linux c++ Qt)
  • Qt:(创建项目)
  • PageOffice在线打开word文件,并实现切换文件
  • 【RustDesk 】中继1:压力测试 Python 版 RustDesk 中继服务器
  • 阿里云 ECS 服务器进阶指南:存储扩展、成本优化与架构设计
  • WPF之RadioButton控件详解
  • AI Agent新范式:FastGPT+MCP协议实现工具增强型智能体构建
  • 【Python学习路线】零基础到项目实战系统
  • 论文阅读:2024 ICML In-Context Unlearning: Language Models as Few-Shot Unlearners
  • 模型部署技巧(一)
  • WHAT - 《成为技术领导者》思考题(第四章)
  • Netflix系统架构解析
  • 基于Docker的Elasticsearch ARM64架构镜像构建实践
  • 解决GoLand无法Debug的问题
  • (Go Gin)Gin学习笔记(二):路由配置、基本路由、表单参数、上传单个文件、上传多个文件、浅扒路由原理
  • SMMU相关知识
  • 【蓝桥杯】第十六届蓝桥杯C/C++大学B组个人反思总结
  • 章越科技赋能消防训练体征监测与安全保障,从传统模式到智能跃迁的实践探索
  • (Go Gin)Gin学习笔记(四)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
  • 澎湃读报丨央媒头版集中刊发社论,庆祝“五一”国际劳动节
  • 三大猪企一季度同比均实现扭亏为盈,营收同比均实现增长
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 上海科创的三种品格
  • 船只深夜撞上海上风机后沉没1死1失踪,调查报告公布
  • 众信旅游:去年盈利1.06亿元,同比增长228.18%