pandas常用技巧:筛选、拼接、多级索引、数据透视

在python中,我们常用的数据分析库莫过于pandas,而数据分析中,我们常用的方法莫过于筛选、拼接、多级列表和数据透视了,下面我将通过四个板块对这四个方面进行介绍。

目录

  1. 筛选
  2. 拼接(连接)
  3. 多级列表
  4. 数据透视
  5. 完整代码

首先创建一个10*6的Dataframe,用到的库有pandas、numpy

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randint(50,100, (10, 6)),columns=['A',"B",'C','D','E','F'])
df

在这里插入图片描述

一、 筛选

对于excel的常用就是对某列进行筛选操作了,那么我们在pandas中如何进行呢?其实pandas给我们提供了多个方法,不过最常用的还是lociloc,这两个方法的筛选逻辑不一样,简单的理解来说就是:loc是关注于列的筛选,iloc关注的行的筛选,两者的功能没有区别下面我分别介绍两种方法。

1.1、loc

上面已经创建好了df,下面我们开始利用df进行讲解
df.loc[a,b]
a表示行,b表示列,注意b只能为字符或者列表,不能为数字,否则报错,下面是相关的方法运用。

单列数据筛选

>>> df.loc[:,"A"]
0    77
1    84
2    56
3    90
4    55
5    52
6    57
7    93
8    78
9    81
Name: A, dtype: int32

多列数据筛选

 df.loc[:,["A","B"]] 
    A   B
0  77  96
1  84  93
2  56  92
3  90  66
4  55  74
5  52  79
6  57  99
7  93  77
8  78  99
9  81  68

也可以用:来进行引用,如下

>>> df.loc[:,"A":"E"]   
    A   B   C   D   E
0  77  96  72  92  92
1  84  93  51  62  68
2  56  92  79  61  52
3  90  66  87  79  83
4  55  74  90  75  55
5  52  79  81  74  89
6  57  99  90  56  63
7  93  77  85  54  62
8  78  99  54  62  57
9  81  68  97  58  90

上面简单的介绍了loc方法筛选列,下面来介绍筛选行
对多行的单列值进行筛选:

>>> df.loc[df['B']==99] 
    A   B   C   D   E   F
6  57  99  90  56  63  69
8  78  99  54  62  57  91

对B列进行筛选筛选其值等于99的数据。
对多行数据的多列值进行筛选:


>>> df.loc[(df['B']==99)&(df['C']==90)] #注意细节,这里需要加(),否则会报错
    A   B   C   D   E   F
6  57  99  90  56  63  69

这里有个细节,对列的数据进行并列筛选时,注意细节,这里需要加(),否则会报错

1.2、iloc

下面来介绍iloc,用法大概如下
df.iloc[a,b]
这个地方a和b都必须是intege。iloc的列参数只能是整数;
a代表的行,b代表的列
列筛选:

>>> df.iloc[2,:] 
A    56
B    92
C    79
D    61
E    52
F    84
Name: 2, dtype: int32
>>> df.iloc[2,3:5] 
D    61
E    52
Name: 2, dtype: int32

如果发现这个取数的格式不是我们想的那样,想要如df格式那样,如下:

>>> df.iloc[2:3,3:5] 
    D   E
2  61  52

这里进行总结一下,loc和iloc的主要区别有两个

1、两者参数都是[行,列],但是loc的列参数不能为数字,必须为columns,否则会报错
iloc的参数为数字,否则也会报错
2、:   loc的带:参数实行的左闭右闭规则,但是iloc实行的是左闭右开规则,所以取数逻辑不一样。

二、拼接

拼接,又称作连接,对于df的绘制非常的重要,一般常用的有append、merge、concat,在这里,主要讲解merge和concat

2.1、merge

merge的产生主要如下:

pd.merge(left, right, 
		how='inner', 
		on=None, 
		left_on=None, 
		right_on=None,
        left_index=False, 
        right_index=False, sort=True,
        suffixes=('_x', '_y'), 
        copy=True, 
        ind
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值