千家信息网

Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作 ",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Pandas怎么进行数据框
千家信息网最后更新 2025年12月02日Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作

本篇内容主要讲解"Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作 ",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作 "吧!

总括

pandas的索引函数主要有三种:
loc 标签索引,行和列的名称
iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
ix 是 iloc 和 loc的合体
at是loc的快捷方式
iat是iloc的快捷方式

建立测试数据集:

import pandas as pddf = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]})print(df)   a  b  c0  1  a  A1  2  b  B2  3  c  C

行操作

选择某一行

print(df.loc[1,:])a    2b    bc    BName: 1, dtype: object

选择多行

print(df.loc[1:2,:])#选择1:2行,slice为1   a  b  c1  2  b  B2  3  c  Cprint(df.loc[::-1,:])#选择所有行,slice为-1,所以为倒序   a  b  c2  3  c  C1  2  b  B0  1  a  Aprint(df.loc[0:2:2,:])#选择0至2行,slice为2,等同于print(df.loc[0:2:2,:])因为只有3行   a  b  c0  1  a  A2  3  c  C

条件筛选

普通条件筛选

print(df.loc[:,"a"]>2)#原理是首先做了一个判断,然后再筛选0    False1    False2     TrueName: a, dtype: boolprint(df.loc[df.loc[:,"a"]>2,:])   a  b  c2  3  c  C

另外条件筛选还可以集逻辑运算符 | for or, & for and, and ~for not

In [129]: s = pd.Series(range(-3, 4))In [132]: s[(s < -1) | (s > 0.5)]Out[132]: 0   -31   -24    15    26    3dtype: int64

isin

非索引列使用isin
In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')In [143]: s.isin([2, 4, 6])Out[143]: 4    False3    False2     True1    False0     Truedtype: boolIn [144]: s[s.isin([2, 4, 6])]Out[144]: 2    20    4dtype: int64
索引列使用isin
In [145]: s[s.index.isin([2, 4, 6])]Out[145]: 4    02    2dtype: int64# compare it to the followingIn [146]: s[[2, 4, 6]]Out[146]: 2    2.04    0.06    NaNdtype: float64
结合any()/all()在多列索引时
In [151]: df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': ['a', 'b', 'f', 'n'],   .....:                    'ids2': ['a', 'n', 'c', 'n']})   .....: In [156]: values = {'ids': ['a', 'b'], 'ids2': ['a', 'c'], 'vals': [1, 3]}In [157]: row_mask = df.isin(values).all(1)In [158]: df[row_mask]Out[158]:   ids ids2  vals0   a    a     1

where()

In [1]: dates = pd.date_range('1/1/2000', periods=8)In [2]: df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])In [3]: dfOut[3]:                    A         B         C         D2000-01-01  0.469112 -0.282863 -1.509059 -1.1356322000-01-02  1.212112 -0.173215  0.119209 -1.0442362000-01-03 -0.861849 -2.104569 -0.494929  1.0718042000-01-04  0.721555 -0.706771 -1.039575  0.2718602000-01-05 -0.424972  0.567020  0.276232 -1.0874012000-01-06 -0.673690  0.113648 -1.478427  0.5249882000-01-07  0.404705  0.577046 -1.715002 -1.0392682000-01-08 -0.370647 -1.157892 -1.344312  0.844885In [162]: df.where(df < 0, -df)Out[162]:                    A         B         C         D2000-01-01 -2.104139 -1.309525 -0.485855 -0.2451662000-01-02 -0.352480 -0.390389 -1.192319 -1.6558242000-01-03 -0.864883 -0.299674 -0.227870 -0.2810592000-01-04 -0.846958 -1.222082 -0.600705 -1.2332032000-01-05 -0.669692 -0.605656 -1.169184 -0.3424162000-01-06 -0.868584 -0.948458 -2.297780 -0.6847182000-01-07 -2.670153 -0.114722 -0.168904 -0.0480482000-01-08 -0.801196 -1.392071 -0.048788 -0.808838

DataFrame.where() differs from numpy.where()的区别

In [172]: df.where(df < 0, -df) == np.where(df < 0, df, -df)

当series对象使用where()时,则返回一个序列

In [141]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')In [159]: s[s > 0]Out[159]: 3    12    21    30    4dtype: int64In [160]: s.where(s > 0)Out[160]: 4    NaN3    1.02    2.01    3.00    4.0dtype: float64

抽样筛选

DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
当在有权重筛选时,未赋值的列权重为0,如果权重和不为1,则将会将每个权重除以总和。random_state可以设置抽样的种子(seed)。axis可是设置列随机抽样。

In [105]: df2 = pd.DataFrame({'col1':[9,8,7,6], 'weight_column':[0.5, 0.4, 0.1, 0]})In [106]: df2.sample(n = 3, weights = 'weight_column')Out[106]:    col1  weight_column1     8            0.40     9            0.52     7            0.1

增加行

df.loc[3,:]=4 a  b  c0  1.0  a  A1  2.0  b  B2  3.0  c  C3  4.0  4  4

插入行

pandas里并没有直接指定索引的插入行的方法,所以要自己设置

line = pd.DataFrame({df.columns[0]:"--",df.columns[1]:"--",df.columns[2]:"--"},index=[1])df = pd.concat([df.loc[:0],line,df.loc[1:]]).reset_index(drop=True)#df.loc[:0]这里不能写成df.loc[0],因为df.loc[0]返回的是series a  b  c0  1.0  a  A1  --  -- --2  2.0  b  B3  3.0  c  C4  4.0  4  4

交换行

df.loc[[1,2],:]=df.loc[[2,1],:].values   a  b  c0  1  a  A1  3  c  C2  2  b  B

删除行

df.drop(0,axis=0,inplace=True)print(df)   a  b  c1  2  b  B2  3  c  C

注意

在以时间作为索引的数据框中,索引是以整形的方式来的。

In [39]: dfl = pd.DataFrame(np.random.randn(5,4), columns=list('ABCD'), index=pd.date_range('20130101',periods=5))In [40]: dflOut[40]:                    A         B         C         D2013-01-01  1.075770 -0.109050  1.643563 -1.4693882013-01-02  0.357021 -0.674600 -1.776904 -0.9689142013-01-03 -1.294524  0.413738  0.276662 -0.4720352013-01-04 -0.013960 -0.362543 -0.006154 -0.9230612013-01-05  0.895717  0.805244 -1.206412  2.565646In [41]: dfl.loc['20130102':'20130104']Out[41]:                    A         B         C         D2013-01-02  0.357021 -0.674600 -1.776904 -0.9689142013-01-03 -1.294524  0.413738  0.276662 -0.4720352013-01-04 -0.013960 -0.362543 -0.006154 -0.923061

列操作

选择某一列

print(df.loc[:,"a"])0    11    22    3Name: a, dtype: int64

选择多列

print(df.loc[:,"a":"b"])   a  b0  1  a1  2  b2  3  c

增加列,如果对已有的列,则是赋值

df.loc[:,"d"]=4   a  b  c  d0  1  a  A  41  2  b  B  42  3  c  C  4

交换两列的值

df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].valuesprint(df)   a  b  c0  a  1  A1  b  2  B2  c  3  C

删除列

1)直接del DF['column-name']

2)采用drop方法,有下面三种等价的表达式:

DF= DF.drop('column_name', 1);

DF.drop('column_name',axis=1, inplace=True)

DF.drop([DF.columns[[0,1,]]], axis=1,inplace=True)

df.drop("a",axis=1,inplace=True)print(df)   b  c0  a  A1  b  B2  c  C

还有一些其他的功能:
切片df.loc[::,::]
选择随机抽样df.sample()
去重.duplicated()
查询.lookup

到此,相信大家对"Pandas怎么进行数据框增、删、改、查、去重、抽样等基本操作 "有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

索引 选择 抽样 数据 权重 基本操作 方式 方法 条件 内容 学习 查询 实用 普通 更深 一行 位置 倒序 兴趣 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 联想自研服务器质量好吗 普陀区微型软件开发服务有哪些 网络安全术语拒绝服务是 玉林网络安全支队梁德初 数据库 对视图进行修改吗 电脑命令行进入数据库 杭州安卓软件开发哪家专业 网络安全意识形态宣传标语 爱可生 数据库 达梦数据库导入命令 企业数据库丢失 国服lol服务器哪个最大 服务器系统如何打开服务管理 微信收藏的文件是存在服务器上吗 猫和老鼠手游土豆服务器闪退 数据库最小逻辑单位是表吗 武林外传最近开的服务器 数据库工程师和运维工程师 利通区科技型网站服务器 乐视服务器异常无法登录怎么办 数据库中范围运算符 衡量软件开发人员质量 信友牛牛互联网科技有限公司 如何查看超级人类服务器 数据库管理系统tds centos服务器 软件开发需要风投 处于软件开发过程的核心位置 浙江惠普服务器虚拟化解决方案 服务器属于什么节点
0