bufferedreader读取中文乱码_pandas常用函数学习,从文件读取输出过程中学会处理数据

学习更多,欢迎关注微信公众号:Excel办公小技巧

上一篇文章通过一些简单的例子了解了pandas,今天将重点介绍下pandas读取数据常用的函数:read_csv,并通过to_csv函数输出数据到文件辅助理解。read_csv可用来读取url和带有分隔符csv格式文件等,参数如下:

pandas.read_csv(filepath_or_buffer:Union[str,pathlib.Path,IO[~AnyStr]],sep=',',delimiter=None,header='infer',names=None,index_col=None,usecols=None,squeeze=False,prefix=None,mangle_dupe_cols=True,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,skip_blank_lines=True,parse_dates=False,infer_datetime_format=False,keep_date_col=False,date_parser=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal:str='.',lineterminator=None,quotechar='"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,dialect=None,error_bad_lines=True,warn_bad_lines=True,delim_whitespace=False,low_memory=True,memory_map=False, float_precision=None)

充分理解读取函数的参数,有助于我们在第一步读取阶段,就可以将数据问题处理一大半。

一、数据读取看一下结构

参数先默认,直接使用read_csv函数读取全部数据,如下图(用截图excel文件内容展示):

data=pd.read_csv(r'C:甥敳獲guofengDesktop示例数据.csv')print (data)
c5156f5c7e0921e621f7a9f4fb341386.png

二、过滤多余行,获取红框中数据内容

除了红框内标准数据,前6行和后7行数据我们是不需要的。

2.1 先使用skiprows参数跳过前6行

data=pd.read_csv(r'C:甥敳獲guofengDesktop示例数据.csv',skiprows=6)data.to_csv(r'C:甥敳獲guofengDesktopskiprows_1.csv')#输出到excel方便大家阅读体验

结果如下:如红框中所示,乱码了

7f18d92eb8413599329ba5831ea94480.png

,咱接着往后看如何解决~

aba1c39944ca81e2119232366ed299e3.png

2.2 输出文件中文乱码

上面输出数据中文乱码,我们使用encoding参数将格式转成gbk,如下图黄框所示,中文内容输出后正常。

data=pd.read_csv(r'C:甥敳獲guofengDesktop示例数据.csv',skiprows=6)data.to_csv(r'C:甥敳獲guofengDesktopskiprows_1.csv',encoding='gbk')
1135894ec51b0d84f46320497fb5a33d.png

2.3 使用skipfooter过滤后7行

data=pd.read_csv(r'C:甥敳獲guofengDesktop示例数据.csv',skiprows=6,skipfooter=7,encoding='utf-8',engine='python')data.to_csv(r'C:甥敳獲guofengDesktopskiprows_2.csv',encoding='gbk')

嗯~又报错了

看上去还是编码问题~解决它!

UnicodeEncodeError: 'gbk' codec can't encode character '�' in position 23: illegal multibyte sequence

2.4 使用skipfooter报错解决

我们在读取时encoding='utf-8'再次尝试,没问题,不过出现了警告,根据警告提示,我们读取时限定下engine='python'即可。

ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support skipfooter; you can avoid this warning by specifying engine='python'.

data=pd.read_csv(r'C:甥敳獲guofengDesktop示例数据.csv',skiprows=6,skipfooter=7,encoding='utf-8',engine='python')data.to_csv(r'C:甥敳獲guofengDesktopskiprows_2.csv',encoding='gbk')

结果如下:

8f65cfb0fd5c5cba5bff7800a0d7f6a1.png

三 修改表结构

3.1 修改表头名

我们看到,表头还包含括号,不便于后续调用列,所以我们在读取时就处理好。

3.1.1 跳过原有标题行,自定义列名

因为之前输出文件名skiprows_2的文件时,编码是gbk,所以读取skiprows_2文件的时候,encoding=‘gbk'。

data=pd.read_csv(r'C:甥敳獲guofengDesktopskiprows_2.csv',skiprows=1,encoding='gbk',engine='python',names=['震级','时刻','纬度','经度','深度','位置'])data.to_csv(r'C:甥敳獲guofengDesktopskiprows_3.csv',encoding='gbk')
eed28f7b495fbd1836421ddf532a51d4.png

3.2 避免每次读取增加索引列

如上图前两列重复,我们最多需要一列这种索引列,如何去除多余列?

此次读取skiprows_2文件里,设置索引列为空,参数index_col=False即可。

data=pd.read_csv(r'C:甥敳獲guofengDesktopskiprows_2.csv',skiprows=1,encoding='gbk',engine='python',names=['震级','时刻','纬度','经度','深度','位置'])data.index_col=Falsedata.to_csv(r'C:甥敳獲guofengDesktopskiprows_3.csv',encoding='gbk')

四、数据处理

4.1 空值处理

如果源文件里空值存成了NULL,想显示空即可,参数na_values

data=pd.read_csv(r'C:甥敳獲guofengDesktopskiprows_3.csv',encoding='gbk',engine='python',na_values='')data.to_csv(r'C:甥敳獲guofengDesktopskiprows_4.csv',encoding='gbk')
53e5bbbe74ef83163c84af913965c750.png

4.2 大文件处理

当数据过大,导致读取过慢,可通过参数chunksize限制数据块大小。

data=pd.read_csv(r'C:甥敳獲guofengDesktopskiprows_3.csv',chunksize=10000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值