发现许多小伙伴入门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疑难杂症(上)相关推荐

  1. Python数据分析小技巧:如何在Pandas中实现数据透视表?

    Python数据分析小技巧:如何在Pandas中实现数据透视表? 数据透视表是数据分析中非常有用的工具,可以帮助我们快速了解数据的结构.关联和趋势.在Pandas中,我们可以使用pivot_table ...

  2. 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 ...

  3. rank函数python_python pandas中如何实现excel中的rank函数

    python pandas中如何实现excel中的rank函数​mp.weixin.qq.com rank函数在excel中尝用来实现对数据的排名,在pandas中有同样的函数来实现同样的功能,下面我 ...

  4. python神器pandas_Python数据处理神器,pandas入门必需理解的核心内容

    在 Python 中做处理数据,那么必须要使用 pandas ,否则你根本做不到'人生苦短,我学Python'. 最近发生了一件小事情,让我意识到许多人没有系统掌握 pandas .我的一位同事在使用 ...

  5. python数据分析包pandas_Python 数据分析包:pandas 基础

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...

  6. python电商用户购买力分析_Python + pandas + 不同客户购买力图形显示

    数据源:Kaggle网站上一个"blackFriday.csv"文件(Kaggle网站是一个流行的数据科学竞赛平台),下载下来的数据字段如下: 2020-10-19 13:13:2 ...

  7. python常用模块(一) 数据处理 matplotlib numpy pandas

    如果要批量安装库的话,可以建立一个requirements.txt文件,里面写上 matplotlib==2.2.2     numpy==1.14.2     pandas==0.20.3     ...

  8. ​【Python基础】一文看懂 Pandas 中的透视表

    作者:来源于读者投稿 出品:Python数据之道 一文看懂 Pandas 中的透视表 透视表在一种功能很强大的图表,用户可以从中读取到很多的信息.利用excel可以生成简单的透视表.本文中讲解的是如何 ...

  9. python科学计算笔记(九)pandas中DataFrame数据操作函数

    Python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数 ...

最新文章

  1. 1085 Perfect Sequence
  2. php 多维数组怎么去重,php多维数组去重,该如何解决
  3. linux脚本监控某一进程,linux监控某个进程的运行shell脚本
  4. gitlab用户,组,项目权限管控
  5. HTML特殊字符显示
  6. Swift调用微信支付宝SDK(Swift4.0)
  7. cocos2d(粒子效果编辑器)
  8. linux 解决Linux上解压jdk报错gzip: stdin: not in gzip format
  9. PDF控件Spire.PDF 3.9.584发布 | 附下载
  10. 李航统计学习方法 Chapter1 统计学习方法概论
  11. C#调用Bing的在线翻译接口Translator
  12. md5值是什么?md5值有什么用?
  13. 微信小程序腾讯服务器地址要购买吗,微信小程序JavaScript SDK
  14. 基于pion生态的SFU实时音视频发布服务(一)
  15. SQL 实验项目6_存储过程
  16. Clickhouse 分布式子查询——global in/join(慎用慎用)
  17. ITX-3568JQ四核ITX工业级主板
  18. 华为超融合FusionCube解决方案笔记
  19. 《L-谷氨酰胺和L-精氨酸发酵生产》全书阅读笔记
  20. 一、如何快速掌握数据库

热门文章

  1. wxWidgets:wxSocketBase类用法
  2. boost::python::register_ptr_to_python相关的测试程序
  3. boost::graph模块实现内部属性图的测试程序
  4. boost::geometry::detail::overlay::traverse用法的测试程序
  5. boost::function_types::result_type用法的测试程序
  6. boost::filesystem模块演示错误报告的工作原理的测试程序
  7. boost::posix_time模块用时间构造和计算的一些简单例子
  8. GDCM:生成标准SOP类的测试程序
  9. Boost:在GPU上对整数向量进行排序
  10. ITK:演示可用的阈值算法