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

本文主要是介绍pandas常用函数学习,从文件读取输出过程中学会处理数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎关注微信公众号:excelwork

 上一篇文章通过一些简单的例子了解了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:\Users\king\Desktop\示例数据.csv')
print (data)

 

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

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

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

data=pd.read_csv(r'C:\Users\king\Desktop\示例数据.csv',skiprows=6)
data.to_csv(r'C:\Users\king\Desktop\skiprows_1.csv')#输出到excel方便大家阅读体验

    结果如下:如红框中所示,乱码了,咱接着往后看如何解决~

2.2 输出文件中文乱码

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

data=pd.read_csv(r'C:\Users\king\Desktop\示例数据.csv',skiprows=6)
data.to_csv(r'C:\Users\king\Desktop\skiprows_1.csv',encoding='gbk')

2.3 使用skipfooter过滤后7行​​​​​​​

data=pd.read_csv(r'C:\Users\king\Desktop\示例数据.csv',skiprows=6,skipfooter=7,encoding='utf-8',engine='python')
data.to_csv(r'C:\Users\king\Desktop\skiprows_2.csv',encoding='gbk')

    嗯~又报错了看上去还是编码问题~解决它!

UnicodeEncodeError: 'gbk' codec can't encode character '\ufffd' 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:\Users\king\Desktop\示例数据.csv',skiprows=6,skipfooter=7,encoding='utf-8',engine='python')
data.to_csv(r'C:\Users\king\Desktop\kingskiprows_2.csv',encoding='gbk')

    结果如下:

 

三 修改表结构

3.1 修改表头名

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

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

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

data=pd.read_csv(r'C:\Users\king\Desktop\skiprows_2.csv',skiprows=1,encoding='gbk',engine='python',names=['震级','时刻','纬度','经度','深度','位置'])
data.to_csv(r'C:\Users\king\Desktop\skiprows_3.csv',encoding='gbk'

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

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

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

data=pd.read_csv(r'C:\Users\king\Desktop\skiprows_2.csv',skiprows=1,encoding='gbk',engine='python',names=['震级','时刻','纬度','经度','深度','位置'])
data.index_col=False
data.to_csv(r'C:\Users\king\Desktop\skiprows_3.csv',encoding='gbk')

四、数据处理

4.1 空值处理

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

data=pd.read_csv(r'C:\Users\king\Desktop\skiprows_3.csv',encoding='gbk',engine='python',na_values='')data.to_csv(r'C:\Users\king\Desktop\skiprows_4.csv',encoding='gbk')

4.2 大文件处理

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

 

data=pd.read_csv(r'C:\Users\king\Desktop\skiprows_3.csv',chunksize=10000)

这篇关于pandas常用函数学习,从文件读取输出过程中学会处理数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855864

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号