python中pandas什么意思_python pandas 基础理解

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

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

一. 数据结构介绍

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

1.Series的介绍

1)用一维数组创建序列

1303036-20190413164236095-1636338018.png

2)通过字典创建序列

1303036-20190413171614588-2110192405.png

2.DataFrame

1)用字典创建DataFrame

1303036-20190413173846093-748260031.png

2)查 其中某一列

1303036-20190415095522965-1740740037.png

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

1303036-20190415101704911-350897761.png

3)查多列

1303036-20190415101941113-1471956165.png

多列的是DataFrame

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

1303036-20190415151956989-1412175419.png

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

1303036-20190415152812488-1544818982.png

6)从 DataFrame 里删除行/列

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

1303036-20190415160844760-802724661.png

查一下

1303036-20190417143954236-1594773035.png

这是为了防止误删除

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

1303036-20190417144106845-2014048962.png

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

1303036-20190417145549080-23565928.png]

列是同一个道理

1303036-20190417154106397-96256520.png

9)加筛选条件

1303036-20190417153848220-158455530.png

1303036-20190417154120417-1932484436.png

10)新加一列

1303036-20190417154503439-705592061.png

11)重置索引

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

1303036-20190417154906421-281948436.png

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

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

1303036-20190417155127971-629663437.png

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

12)创建多级索引ata

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

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

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

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

举个例子

1303036-20190417161916834-1124957552.png

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

1303036-20190417162248925-1254481409.png

3.清洗数据

1)删除或者填充空值

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

1303036-20190418091331044-1173932304.png

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

1303036-20190418161012660-189264521.png

1303036-20190418161053930-1174290259.png

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

2)替换na

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

1303036-20190418164401734-443163613.png

4.数据描述

1) describe()

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

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

1303036-20190418165207696-1026260001.png

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

1303036-20190418165317668-1836885476.png

2) 堆叠(Concat)

1303036-20190418170055902-1079341713.png

因为我们没有指定堆叠的方向,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' 代表需要合并的键值所在的列,最后整个表格会以该列为准进行归并。

1303036-20190419170715775-1046427760.png

其他的 就 不 一一举例了

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

1303036-20190419170948692-1647559772.png

4)join

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

1303036-20190419171515716-619581806.png

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

5.数值处理

1)查找不重复的值

unique() 方法

1303036-20190419172256598-1675050873.png

查个数

1303036-20190419172323869-1348704357.png

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

1303036-20190419172444914-199472945.png

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

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

1303036-20190419172834460-1244434364.png

1303036-20190419172857324-2129453460.png

1303036-20190419172909955-1162258981.png

3)调用内置函数

1303036-20190419173107980-1736495786.png

4) 用 lambda 表达式

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

1303036-20190419173631237-1276556429.png

5) DataFrame 的属性

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

1303036-20190419173936083-1819352073.png

6)排序

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

1303036-20190419174314853-1986673156.png

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

7)查找空值

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

1303036-20190419175956352-359858658.png

参考:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值