05丨Python科学计算:Pandas
数据结构:Series 和 DataFrame
Series是个定长的字典序列。说是定长是因为在存储的时候,相当于两个 ndarray,这也是和字典结构最大的不同。因为在字典的结构里,元素的个数是不固定的。Series 有两个基本属性:index 和 values。在 Series 结构中,index 默认是 0,1,2,……递增的整数序列,当然我们也可以自己来指定索引,比如 index=[‘a’, ‘b’, ‘c’, ‘d’]。
DataFrame 类型数据结构类似数据库表。它包括了行索引和列索引,我们可以将 DataFrame 看成是由相同索引的 Series 组成的字典类型.
数据导入和输出
Pandas 允许直接从 xlsx,csv 等文件中导入数据,也可以输出到 xlsx, csv 等文件,非常方便。
数据清洗
数据清洗是数据准备过程中必不可少的环节,Pandas 也为我们提供了数据清洗的工具,在后面数据清洗的章节中会给你做详细的介绍,这里简单介绍下 Pandas 在数据清洗中的使用方法。
在数据清洗过程中,一般都会遇到以下这几种情况,下面我来简单介绍一下。
- 删除 DataFrame 中的不必要的列或行Pandas 提供了一个便捷的方法 drop() 函数来删除我们不想要的列或行。
- 重命名列名 columns,让列表名更容易识别如果你想对 DataFrame 中的 columns 进行重命名,可以直接使用 rename(columns=new_names, inplace=True) 函数
- 数据采集可能存在重复的行,这时只要使用 drop_duplicates() 就会自动把重复的行去掉。
- 格式问题更改数据格式这是个比较常用的操作,因为很多时候数据格式不规范,我们可以使用 astype 函数来规范数据格式
- 数据间的空格有时候我们先把格式转成了 str 类型,是为了方便对数据进行操作,这时想要删除数据间的空格,我们就可以使用 strip 函数:
- 大小写转换大小写是个比较常见的操作,比如人名、城市名等的统一都可能用到大小写的转换,在 Python 里直接使用 upper(), lower(), title() 函数:
- 查找空值数据量大的情况下,有些字段存在空值 NaN 的可能,这时就需要使用 Pandas 中的 isnull 函数进行查找。
使用 apply 函数对数据进行清洗
apply 函数是 Pandas 中自由度非常高的函数,使用频率也非常高。
数据统计在数据清洗后,我们就要对数据进行统计了。Pandas 和 NumPy 一样,都有常用的统计函数,如果遇到空值 NaN,会自动排除。常用的统计函数包括:
两个 DataFrame 数据表的合并使用的是 merge() 函数,有下面 5 种形式:
- 基于指定列进行连接
- inner 内连接
- left 左连接
- right 右连接
- outer 外连接
如何用 SQL 方式打开 PandasPandas
的 DataFrame 数据类型可以让我们像处理数据表一样进行操作,比如数据表的增删改查,都可以用 Pandas 工具来完成。不过也会有很多人记不住这些 Pandas 的命令,相比之下还是用 SQL 语句更熟练,用 SQL 对数据表进行操作是最方便的,它的语句描述形式更接近我们的自然语言。事实上,在 Python 里可以直接使用 SQL 语句来操作 Pandas。这里给你介绍个工具:pandasql。pandasql 中的主要函数是 sqldf,它接收两个参数:一个 SQL 查询语句,还有一组环境变量 globals() 或 locals()。这样我们就可以在 Python 里,直接用 SQL 语句中对 DataFrame 进行操作,