其实每一篇博客我都要用很多琐碎的时间片段来学完写完,每次一点点,用到了就学一点,学一点就记录一点,要用上好几天甚至一两个礼拜才感觉某一小类的知识结构学的差不多了。

 

  Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。它的名字来源是由“ Panel data”(面板数据,一个计量经济学名词)两个单词拼成的。简单地说,你可以把 Pandas 看作是 Python 版的 Excel。

 

 

一.  数据结构介绍

在pandas中有两类非常重要的数据结构,即序列Series和数据框DataFrame。Series类似于numpy中的一维数组,除了通吃一维数组可用的函数或方法,而且其可通过索引标签的方式获取数据,还具有索引的自动对齐功能;DataFrame类似于numpy中的二维数组,同样可以通用numpy数组的函数和方法,而且还具有其他灵活应用

 

 1.Series的介绍

 

1)用一维数组创建序列

python  pandas 基础理解

 

 2)通过字典创建序列

python  pandas 基础理解

 

 

 

2.DataFrame

 

1)用字典创建DataFrame

python  pandas 基础理解

 

 

2)查 其中某一列

python  pandas 基础理解

 我们只获取一列,所以返回的就是一个 Series。可以用 type() 函数确认返回值的类型

python  pandas 基础理解

 

 

 3)查多列

python  pandas 基础理解

多列的是DataFrame

 

4)增加一个新列--------直接加

python  pandas 基础理解

 

 

5)增加一个新列--------用现有的列去产生新的列

python  pandas 基础理解

 

 6)从 DataFrame 里删除行/列

想要删除某一行或一列,可以用 .drop() 函数。在使用这个函数的时候,你需要先指定具体的删除方向,axis=0 对应的是行 row,而 axis=1 对应的是列 column 。

 python  pandas 基础理解

 

 查一下

python  pandas 基础理解

这是为了防止误删除

 

7) 真删除某列,再加个参数就好了

python  pandas 基础理解

 

 

8)获取某行,或者某几行

python  pandas 基础理解]

 

列是同一个道理

python  pandas 基础理解

 

 

9)加筛选条件

python  pandas 基础理解

 python  pandas 基础理解

 

 

 

  10)新加一列

python  pandas 基础理解

 

 

  11)重置索引

可以用 .reset_index() 简单地把整个表的索引都重置掉

python  pandas 基础理解

 

 和删除操作差不多,.reset_index() 并不会永久改变你表格的索引,除非你调用的时候明确传入了 inplace 参数,比如:.reset_index(inplace=True)

 

 

还可以用 .set_index() 方法,将 DataFrame 里的某一列作为索引来用

python  pandas 基础理解

 

 注意,不像 .reset_index() 会保留一个备份,然后才用默认的索引值代替原索引,.set_index() 将会完全覆盖原来的索引值。

 

 

12)创建多级索引ata

 多级索引其实就是一个由元组(Tuple)组成的数组,每一个元组都是独一无二的

 可以从一个包含许多数组的列表中创建多级索引(调用 MultiIndex.from_arrays ),

 也可以用一个包含许多元组的数组(调用 MultiIndex.from_tuples )

用一对可迭代对象的集合(比如两个列表,互相两两配对)来构建(调用MultiIndex.from_product )。

举个例子

python  pandas 基础理解

 

 

13) 获取多级索引中的数据,还是用到 .loc[]

 python  pandas 基础理解

 

 3.清洗数据

 

1)删除或者填充空值

在许多情况下,如果你用 Pandas 来读取大量数据,往往会发现原始数据中会存在不完整的地方。在 DataFrame 中缺少数据的位置, Pandas 会自动填入一个空值,比如 NaN或 Null 。因此,我们可以选择用 .dropna() 来丢弃这些自动填充的值,或是用.fillna() 来自动给这些空值填充数据。

 python  pandas 基础理解

 

 

 

当你使用 .dropna() 方法时,就是告诉 Pandas 删除掉存在一个或多个空值的行(或者列)。删除行用的是 .dropna(axis=0) ,删除列用的是 .dropna(axis=1) 。

python  pandas 基础理解

 

 python  pandas 基础理解

 

 请注意,如果你没有指定 axis 参数,默认是删除行。

 

 

2)替换na

如果你使用 .fillna() 方法,Pandas 将对这个 DataFrame 里所有的空值位置填上你指定的默认值

python  pandas 基础理解

 

 4.数据描述

 

1) describe()

Pandas 的 .describe() 方法将对 DataFrame 里的数据进行分析,并一次性生成多个描述性的统计指标,方便用户对数据有一个直观上的认识。

生成的指标,从左到右分别是:计数、平均数、标准差、最小值、25% 50% 75% 位置的值、最大值。

 python  pandas 基础理解

 

 如果你不喜欢这个排版,你可以用 .transpose() 方法获得一个竖排的格式:

python  pandas 基础理解

 

 

2) 堆叠(Concat)

python  pandas 基础理解

 

 因为我们没有指定堆叠的方向,Pandas 默认按行的方向堆叠,把每个表的索引按顺序叠加。如果你想要按列的方向堆叠,那你需要传入 axis=1 参数:

 

 

 

3)归并(Merge)

 

使用 pd.merge() 函数,能将多个 DataFrame 归并在一起,它的合并方式类似合并 SQL 数据表的方式。

归并操作的基本语法是 pd.merge(left, right, how='inner', on='Key') 。其中 left 参数代表放在左侧的 DataFrame,而 right 参数代表放在右边的 DataFrame;how='inner' 指的是当左右两个 DataFrame 中存在不重合的 Key 时,取结果的方式:inner 代表交集;Outer 代表并集。最后,on='Key' 代表需要合并的键值所在的列,最后整个表格会以该列为准进行归并。

 

 python  pandas 基础理解

 

 其他的 就 不 一一举例了

同时,我们可以传入多个 on 参数,这样就能按多个键值进行归并python  pandas 基础理解

 

 

4)join

 

如果你要把两个表连在一起,然而它们之间没有太多共同的列,那么你可以试试 .join() 方法。和 .merge() 不同,连接采用索引作为公共的键,而不是某一列。

 python  pandas 基础理解

同样,inner 代表交集,Outer 代表并集

 

 

5.数值处理

 

1)查找不重复的值

 unique() 方法

 

python  pandas 基础理解

 

查个数

python  pandas 基础理解

 

 

 还可以用 .value_counts() 同时获得所有值和对应值的计数

 python  pandas 基础理解

 

2).apply() 方法,应用自定义函数

 

 用 .apply() 方法,可以对 DataFrame 中的数据应用自定义函数,进行数据处理

 python  pandas 基础理解

python  pandas 基础理解

python  pandas 基础理解

 

 

3)调用内置函数

python  pandas 基础理解

 

4) 用 lambda 表达式

 你定义了一个函数,而它其实只会被用到一次。那么,我们可以用 lambda 表达式来代替函数定义,简化代码

 python  pandas 基础理解

 

 

 5) DataFrame 的属性

 DataFrame 的属性包括列和索引的名字。假如你不确定表中的某个列名是否含有空格之类的字符,你可以通过 .columns 来获取属性值,以查看具体的列名。

 python  pandas 基础理解

 

 6)排序

 如果想要将整个表按某一列的值进行排序,可以用 .sort_values() :

python  pandas 基础理解

如上所示,表格变成按 col2 列的值从小到大排序。要注意的是,表格的索引 index 还是对应着排序前的行,并没有因为排序而丢失原来的索引数据。

 

 7)查找空值

 可以用 Pandas 的 .isnull() 方法,方便快捷地发现表中的空值

 

 python  pandas 基础理解

 

 

 

 

参考:

https://blog.csdn.net/qq_42156420/article/details/82813482

https://www.cnblogs.com/nxld/p/6058591.html

相关文章:

  • 2021-04-11
  • 2021-04-07
  • 2021-10-11
  • 2022-02-07
  • 2021-11-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2022-12-23
  • 2021-10-16
  • 2022-12-23
相关资源
相似解决方案