python read_csv sep_Python学习——csv文件读取:read_csv()基本参数应用

(本文是笔者查阅一定资料整理原创所写,受知识面限制,如存在错误,欢迎指出)

Python作为一门年轻的计算机语言,在近些年来大数据与人工智能等前沿科技革命的推动下经历着高速发展,一度呈现赶超传统语言的趋势。

作为大数据分析领域的一个新人,python成为笔者当下最需要学好的一项技能,而大数据分析离不开数据清洗,数据清洗的第一步便是将数据读入,现就python中的read_csv()函数出发,通过分析最常使用的参数,熟悉其基本操作。

下表为笔者使用的数据:

下表为常见参数及其部分信息:

1.filepath_or_buffer

该参数是唯一不能缺失的参数,其目的是提供读取文件路径,对于大多数初学者而言,读取内容通常为电脑上对应文件,现读取笔者位于E:\MYWORK下的csv文件edu.csv

代码如下:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",encoding="gbk")

print(df)

Spyder环境显示如下:

2.sep demlimiter

两关键字分别表示分隔符和定界符,同时demlimiter还有备选分隔符的功能,且优先度高于sep,当指定delimiter参数时,sep参数就会失效。通常情况下csv文件以逗号作为分隔符。

3.header

header关键字的主要功能有两个:第一是将指定行的数据作为读取数据各列的列名,由最初读取数据显示出的信息表明,edu文件文件中第一排的“姓名”“居住地”“年级”“年龄”“是否住校”依次成为了各列的列名,这是因为header默认参数为0,即将edu文件中第一排作为列名的缘故。现我们修改参数:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",header=1,encoding="gbk")

print(df)

Spyder环境显示如下:

可以发现,原本在第一排的“阴晓彤”同学的数据变为了新读取数据的列名,同时我们也注意到了header参数的第二个功能,那就是确定数据开始行,在将“阴晓彤”同学的数据变为新列名的同时,原本的列名“姓名”“居住地”“年级”“年龄”“是否住校”这一行却因为将第一排(实际的第二排)作为列名而消失了,这是因为同时本行也成为了读取数据的开始行。

4.names

该参数的功能为对列名进行命名,输入如下代码:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",names=["第一列","第二列","第三列","第四列","第五列"],encoding="gbk")

print(df)

Spyder环境显示如下:

同时,为了去除原列命名的影响,我们可以设置参数header=0来进行消除

5.index_col

该参数的主要功能是利用读取数据中的内容建立行的索引,假设我们想将案例中各同学的姓名作为检索,输入如下代码:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",index_col=0,encoding="gbk")

print(df)码片

Spyder环境显示如下:

同时,index_col的参数还可以是序列,这表示同时存在多列作为索引。

6.usecols

当处理的数据量较为庞大,且我们需要处理的数据量仅为文件所提供数据的一部分时,我们会选择使用参数usecols来选定我们需要的对应列的数据,现我们仅需提取案例中的姓名与居住地这两列数据,我们进行如下输入:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",usecols=[0,1],encoding="gbk")

print(df)

Spyder环境显示如下:

7.prefix mangle_dupe_cols

这两个参数都是针对于列操作的基本参数,prefix是建立在没有列标题的基础上,给列添加前缀,而mangle_dupe_cols则是针对数据中存在重复列情况下的一种处理方法,当其参数为True时,会将重复的列进行标号处理,而其值为False的情况下则会将重名列进行覆盖。

8.engine

该参数的主要功能是选择使用的分析引擎,笔者目前接触到的就是c与python两种,两种引擎各有各的优势,c的高效和python的稳定,值得一提的是,特定参数所对应的功能只能在相应的分析引擎条件下使用通过。

9.skipinitialspace

功能为忽略分割符后面的空格,当参数为false,即默认状态下的时候,忽略不计。

10.skiprows

该参数与usecols参数在功能目的上是一致的,都是建立在选取部分数据基础上引入的,不同之处在于,usecols是选取读入的数据列标,而skiprows是选取不读入数据的行标,以本实例进行实验,假设我们要忽略名为“豆金”同学(数据中的第13列)的具体数据,输入如下代码:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",skiprows=[13],encoding="gbk")

print(df)

Spyder环境显示如下:

11.skipfooter

skipfooter在功能上与skiprows即存在一定的差异,在功能上又是殊途同归的,该参数的功能依旧部分选取数据进行读取,不同的是,该参数只能是部分取消读入,且只能从后向前地设定取消读入部分,同样以本案例进行实验,我们取消对于最后五位同学的信息读入,输入如下代码:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",skipfooter=5,encoding="gbk")

print(df)

Spyder环境显示如下:

12.nrows

该参数的功能与skipfooter的含义刚好完全相反,即按照正序的顺序读取选定数量行数的数据,因为该类操作上述已重复不少,故不再进行案例实验

13.keep_default_na

在数据分析的过程中,我们所获得的数据有时不可避免的会产生缺失,而在csv读取下的显示会出现代表空缺的NaN,对于部分人来说可能会在一定程度上影响阅读的美观,这时我们可以选择调用参数keep_default_na实现对于NaN的控制。

现我们删除“豆金”同学的居住地信息,结果显示如下:

输入下列代码:

import pandas as pd

df=pd.read_csv("E:/MYWORK/edu.csv",keep_default_na=False,encoding="gbk")

print(df)

得到如下显示:

可见原本的“NaN”值通过对于参数的控制而消失了。

14.na_filter

当处理数据量达到一定程度,如果我们建立在提前知道所研究对象数据的完整程度,或者数据的完整度并不会太过于影响工作的前提下,我们可以通过设定参数na_filter控制对于丢失值的检查,其值为False时,系统会自动忽略对于数据完善程度的检查,实现更高的处理效率。

15.encoding

指定字符集类型,通常指定为’utf-8’。由于笔者对于这方面的理解有限,故不过多进行赘述。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值