python 处理xml pandas_Python数据处理分析,解决pandas中所有的Excel疑难杂症(上)
发现许多小伙伴入门Python几个月,还是低效率做数据处理。这套课程以形象的示意图,精心安排的案例,循序渐进带你玩转数据处理分析神器——pandas,课程中还有分析案例噢,干货满满!
前言
经过前2个阶段,22节课的学习,相信大家已经能够应用 pandas 解决一些实际问题。
不过,前2个阶段算是入门内容,主要让你了解 pandas 的整体概念及其常用方法。
你会发现这些方法中有许多参数,看着就一头雾水,接下来第3阶段我们将深入每个应用场景,详细讲解这些方法的使用,首先讲解的是数据加载相关知识。
多种数据来源
有小伙伴会问:这课程的数据不是 csv 文件就是 excel 文件了,pandas 还可以从其他类型的文件获取数据吗
实际上,pandas 支持的数据源非常多,有一些你可能都没想到,先看看他的数据源支持列表:
可以看到有3种大类(文本、二进制、SQL)
其中有许多我们很少听说的格式(Feather Format、Parquet Format)
不仅是 csv ,网页数据和 json 文件都可以直接加载,就连本地的剪切板都能支持
此外,由于 pandas 可以通过 python 内置数据结构(字典、列表等)来构造 DataFrame,因此即使是上述列表没有支持的格式(比如 xml),我们也同样可以结合其他第三方库轻松实现
本专栏会详细讲解的数据源如下:
excel
csv
Feather Format
SQL
本文先讲解 excel 相关的。
小伙伴:'这么简单的内容也需要讲解?不就是一个 read_excel 就搞定的事情吗'
其实这加载方式的方法都有许多参数,同时也有一些坑,我们开始吧
案例1:加载数据
小伙伴:加载数据这么简单也好意思说?
'看下去你就知道里面存在很多小技巧'
从一个 Excel 文件加载一个工作表到 DataFrame 是非常容易:
pd.read_excel('data/data_sp4.xlsx','1')
第一参数是文件的所在路径(绝对路径或相对路径)
第二参数是 Excel 文件中的工作表名字,注意,名字总是字符串
关于相对路径等知识,请查看我的'Python入门必备系列'文章 建议大家使用此方法的前2个参数时,不要把参数名字写出来,因为在旧版本的 pandas 中,第二参数的名字有所不同,有时候会出现难以查错的情况
小伙伴:那么如果需要加载一个 Excel 的2个工作表,是不是就要写2次pd.read_excel ?
pandas 当然不会这么折磨人,直接看看代码:
当第二参数传入字符串列表时,他会同时加载指定的工作表
结果是一个有顺序的字典
为什么要强调 字符串列表 ?因为你也可以通过位置来指定工作表,比如:[0,1] 表示加载第一个和第二个工作表。位置总是用 数值列表 表示
那怎么访问每个工作表的数据呢:
df['1'],你就当作是普通的字典即可,通过工作表名字即可获得对应的数据 DataFrame
小伙伴:好吧,这样也算方便,但是我现在需要整个文件所有的工作表,但我不知道他们的名字呀。
pandas 当然也考虑到这点:
当第二参数设置为 None 时,他会加载所有的工作表
案例2:表头不在首行
Excel 的数据格式经常会让你有惊喜,比如有一次同事给你一个如下的数据表:
表格的前2行是一个大标题,对我们来说是没有用的数据。
有效的标题行在第3行
前2列是空列
面对这样的数据,如果只是简单调用 pd.read_excel() ,只能得到如下的效果:
默认情况下,pandas 会把首行作为 DataFrame 的表头(columns),这是 header 参数的作用,其值默认为0,表示第1行(0表示第一行,1表示第二行,以此类推)
所有的列都被加载
我们可以通过简单设置 header 参数,让其把第3行作为表头:
设置 header = 2,表示使用第3行作为表头,pandas 会自动跳过前2行
案例3:只加载部分列的数据
但是,上一个例子中的前2列仍然是没用的空列,我们可以通过参数 usecols 完成任务:
设置 usecols=['日期', '销量'],让其只保留 日期 与 销量 2列
有人抬杠说到:有时候我也不知道具体列的表头名字,反正我就是要加载第3和第4列。如下:
注意此时的表头不是叫 '日期' 与 '销量'
我们同样可以通过 usecols 完成:
usecols=[2, 3],当这参数设置为数值列表时,他就知道你要的是指定位置的列
当 usecols 指定为字符串列表时,他会认为你要指定列名字(名字都是字符串呀)
此外,我们还可以通过 Excel 的列号指定:
usecols='C,D' ,当参数设置为单个字符串时,就认为是 Excel 的列号,这表示读取 C 和 D 列
如果你熟悉 Excel 的公式,此方式还可以设置区间,比如 'A,C:E',表示读取 A,C至E 列,总共4列数据
有一次小伙伴真遇到大难题了,他发现拿到的 Excel 数据的有效列的位置不是固定的,如下:
有可能需要的数据是在不同的列上
那么有没有一种方法可以不管列在哪里,都只加载有效的列呢?
既然这里有提出来,自然就有办法解决,先看看如果不指定参数 usecols 的情况:
前4列的第3行由于是空值,因此 pandas 会默认使用 Unnamed:序号 作为这些表头的名字
那么我们可以通过这个逻辑去把这些列去掉:
usecols=lambda n: n.find('Unnamed') < 0,当 usecols 是一个可执行的对象时(任何的方法或 lambda),那么 pandas 就会把列名字逐一输入到这个方法中,当方法执行结果为 True,则保留此列
n.find('Unnamed') ,n 就是列名字,是一个字符串,调用其 find 方法查找字符串 Unnamed ,如果找不到,则此方法返回 -1
因此,整个 usecols 设置的语义是:名字中找不到 Unnamed 的列 ,给我保留下来吧
看看如下示意图:
总结
本节重点掌握以下知识:
pd.read_excel ,前2个参数分别是 Excel 文件路径、数据所在工作表名字
header 参数指定表头位置
usecols 指定加载的列名字(也可以是位置或自定义逻辑)
pd.read_excel 方法实际有多达10+个参数,但实际上常用的参数不多,以后我找到他们的实战应用案例再分享。
下一节讲解输出 Excel 的知识,看看怎么解决 to_excel 方法覆盖原文件内容的问题
python 处理xml pandas_Python数据处理分析,解决pandas中所有的Excel疑难杂症(上)相关推荐
- Python数据分析小技巧:如何在Pandas中实现数据透视表?
Python数据分析小技巧:如何在Pandas中实现数据透视表? 数据透视表是数据分析中非常有用的工具,可以帮助我们快速了解数据的结构.关联和趋势.在Pandas中,我们可以使用pivot_table ...
- 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')...
解决14中csv用excel打开乱码的问题 ,其实就是在写csv的时候把 utf-8 改成 utf-8-sig open('zhihu.csv','w',newline='',encoding='ut ...
- rank函数python_python pandas中如何实现excel中的rank函数
python pandas中如何实现excel中的rank函数mp.weixin.qq.com rank函数在excel中尝用来实现对数据的排名,在pandas中有同样的函数来实现同样的功能,下面我 ...
- python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容
在 Python 中做处理数据,那么必须要使用 pandas ,否则你根本做不到'人生苦短,我学Python'. 最近发生了一件小事情,让我意识到许多人没有系统掌握 pandas .我的一位同事在使用 ...
- python数据分析包pandas_Python 数据分析包:pandas 基础
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...
- python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示
数据源:Kaggle网站上一个"blackFriday.csv"文件(Kaggle网站是一个流行的数据科学竞赛平台),下载下来的数据字段如下: 2020-10-19 13:13:2 ...
- python常用模块(一) 数据处理 matplotlib numpy pandas
如果要批量安装库的话,可以建立一个requirements.txt文件,里面写上 matplotlib==2.2.2 numpy==1.14.2 pandas==0.20.3 ...
- 【Python基础】一文看懂 Pandas 中的透视表
作者:来源于读者投稿 出品:Python数据之道 一文看懂 Pandas 中的透视表 透视表在一种功能很强大的图表,用户可以从中读取到很多的信息.利用excel可以生成简单的透视表.本文中讲解的是如何 ...
- python科学计算笔记(九)pandas中DataFrame数据操作函数
Python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...
最新文章
- 1085 Perfect Sequence
- php 多维数组怎么去重,php多维数组去重,该如何解决
- linux脚本监控某一进程,linux监控某个进程的运行shell脚本
- gitlab用户,组,项目权限管控
- HTML特殊字符显示
- Swift调用微信支付宝SDK(Swift4.0)
- cocos2d(粒子效果编辑器)
- linux 解决Linux上解压jdk报错gzip: stdin: not in gzip format
- PDF控件Spire.PDF 3.9.584发布 | 附下载
- 李航统计学习方法 Chapter1 统计学习方法概论
- C#调用Bing的在线翻译接口Translator
- md5值是什么?md5值有什么用?
- 微信小程序腾讯服务器地址要购买吗,微信小程序JavaScript SDK
- 基于pion生态的SFU实时音视频发布服务(一)
- SQL 实验项目6_存储过程
- Clickhouse 分布式子查询——global in/join(慎用慎用)
- ITX-3568JQ四核ITX工业级主板
- 华为超融合FusionCube解决方案笔记
- 《L-谷氨酰胺和L-精氨酸发酵生产》全书阅读笔记
- 一、如何快速掌握数据库
热门文章
- wxWidgets:wxSocketBase类用法
- boost::python::register_ptr_to_python相关的测试程序
- boost::graph模块实现内部属性图的测试程序
- boost::geometry::detail::overlay::traverse用法的测试程序
- boost::function_types::result_type用法的测试程序
- boost::filesystem模块演示错误报告的工作原理的测试程序
- boost::posix_time模块用时间构造和计算的一些简单例子
- GDCM:生成标准SOP类的测试程序
- Boost:在GPU上对整数向量进行排序
- ITK:演示可用的阈值算法