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 csv
    
    with 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_buffer CSV 文件的路径或文件对象(支持 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_buffer CSV 文件的路径或文件对象(支持文件路径、文件对象) 必需参数
    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 pd
    
    df = 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 pd
    
    df = pd.read_csv('data.csv')
    
    print(df.tail()) #返回最后5行在控制台  
    print(df.tail(10)) #返回最后10行在控制台  
    
    #和head很像
    

    info()

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

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

    总结

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

    作者:帮帮志

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Pandas操作CSV文件详解:数据读取、写入及CSV语法分享

    发表回复