这篇文章分享一下pandas常见的一些行、列操作方法,比较基础,感兴趣的童鞋可以看看。

首先,我们用 “random.seed(int i)” 生成一组测试数据。

对于random.seed()有兴趣进一步了解的,可以前往阅读 python -- numpy.random.seed()

如果“pip install pandas”遇到问题,可参考 python -- 解决"pip install pandas"时遇到的几个小问题(内含解决pip升级问题)

import pandas as pd
import numpy as np np.random.seed(1) #i取值1,保证代码每次运行都能得到相同的一组数据
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde"))
print(sample)

运行一下,看看生成的随机数组

          a         b         c         d         e
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815
4 -1.100619 1.144724 0.901591 0.502494 0.900856
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246
7 -0.012665 -1.117310 0.234416 1.659802 0.742044

一、单列查询(四种方式)

#方式一:选择列名
sample['a'] #方式二:使用iloc方法,基于位置的索引
sample.iloc[:1,0] #方式三:使用loc方法,基于标签的索引
sample.loc[:,'a'] #方式四:返回pandas数据框类
sample[['a']]

我们来看看代码分别执行这四种方式,效果是怎样的

import pandas as pd
import numpy as np np.random.seed(1) #保证代码每次运行都能得到相同的一组数据,设置随机数种子
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde")) #查询单列
#方式一:选择列名
print(sample['a']) #方式二:使用iloc方法,基于位置的索引,也可写为iloc[0:1, 1]
print(sample.iloc[:1, 0]) #方式三:使用loc方法,基于标签的索引,也可写为loc[0:1, 'a']
print(sample.loc[:1, 'a']) #方式四:返回pandas数据框类
print(sample[['a']])

运行一下,看看效果

#方式一:输出所有行,且列名为a的数据
0 1.624345
1 -2.301539
2 1.462108
3 -1.099891
4 -1.100619
5 -0.683728
6 -0.691661
7 -0.012665
Name: a, dtype: float64 #方式二:iloc[:1, 0]表示第0行开始,筛选出1行,且为第0列的数组
0 1.624345
Name: a, dtype: float64 #方式三:loc[:1, 'a']表示第0行到第1行,且列名为'a'的数组(与方式二有区别,请注意区分)
0 1.624345
1 -2.301539
Name: a, dtype: float64 #方式四:输出所有行,且列名为'a'的数组
a
0 1.624345
1 -2.301539
2 1.462108
3 -1.099891
4 -1.100619
5 -0.683728
6 -0.691661
7 -0.012665

注解:(温馨提示:数组的开始位置是0行、0列。)

1、iloc是基于位置索引,iloc[:1, 0](亦为写为iloc[0:1, 0]):表示第0行开始,筛选出1行,且为第0列的数组。

2、loc是基于标签索引,loc[:1,'a'](亦可写为loc[0:1,'a']):表示第0行到第1行,且列名为'a'的数组。

二、多列查询(两种方式)

#使用loc方法,标签索引
sample.loc[:3, :'c'] #使用iloc,位置索引
sample.iloc[1:, 1:]

注解:

ioc[r_begin:r_end, c_begin:c:end],iloc[r_begin:r_end, c_begin:c:end]中,r_begin、c_begin表示行、列开始的位置,r_end、c_end表示行、列结束的位置。

如果r_begin或c_end留空,表示从第0行或第0列开始;若r_end或c_end留空,表示到最尾行或最尾列。

敲敲代码,看看效果

import pandas as pd
import numpy as np np.random.seed(1) #保证代码每次运行都能得到相同的一组数据,设置随机数种子
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde"))
print(sample) #使用loc方法,标签索引,输出第0行到第3行,第0列到列名为c'的数组
print(sample.loc[:3, :'c'])
#使用iloc方法,位置索引,输出第1行到结尾行,第1列到结尾列的数组
print(sample.iloc[1:, 1:])

运行一下,看看输出

#完整数组
a b c d e
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815
4 -1.100619 1.144724 0.901591 0.502494 0.900856
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 #sample.loc[:3, :'c']
a b c
0 1.624345 -0.611756 -0.528172
1 -2.301539 1.744812 -0.761207
2 1.462108 -2.060141 -0.322417
3 -1.099891 -0.172428 -0.877858 #sample.iloc[1:, 1:]
b c d e
1 1.744812 -0.761207 0.319039 -0.249370
2 -2.060141 -0.322417 -0.384054 1.133769
3 -0.172428 -0.877858 0.042214 0.582815
4 1.144724 0.901591 0.502494 0.900856
5 -0.122890 -0.935769 -0.267888 0.530355
6 -0.396754 -0.687173 -0.845206 -0.671246
7 -1.117310 0.234416 1.659802 0.742044

三、新增列

sample['new_col'] = sample['a'] + sample['b']
print(sample)
          a         b         c         d         e   new_col
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975

使用assign方法赋值

#方式一
sample.assign(new_col2 = sample['a'] - sample['b'],
new_col3 = sample['c'] - sample['d'])
print(sample) #方式二
sample = sample.assign(new_col2 = sample['a'] - sample['b'],
new_col3 = sample['c'] - sample['d'])
print(sample)
#方式一:assign赋值后,没有被保存到原始数组中
a b c d e new_col
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975

#方式二:用assign赋值后,重新赋予sample,保存到原始数组中
a b c ... new_col new_col2 new_col3
0 1.624345 -0.611756 -0.528172 ... 1.012589 2.236102 0.544797
1 -2.301539 1.744812 -0.761207 ... -0.556727 -4.046350 -1.080246
2 1.462108 -2.060141 -0.322417 ... -0.598033 3.522249 0.061637
3 -1.099891 -0.172428 -0.877858 ... -1.272319 -0.927463 -0.920072
4 -1.100619 1.144724 0.901591 ... 0.044105 -2.245343 0.399096
5 -0.683728 -0.122890 -0.935769 ... -0.806618 -0.560838 -0.667881
6 -0.691661 -0.396754 -0.687173 ... -1.088414 -0.294907 0.158033
7 -0.012665 -1.117310 0.234416 ... -1.129975 1.104646 -1.425386

注解:使用assign方法赋值,生成的新变量不会保留在原始表中,需要赋予新值。

四、删除

(1)列删除

#单列删除
sample = sample.drop(['new_col3'], axis=1, inplace=False)
print(sample) #多列删除
sample = sample.drop(['a', 'b'], axis=1, inplace=False)
print(sample)
#单列删除输出结果
a b c d e new_col new_col2
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589 2.236102
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975 1.104646 #多列删除输出结果
c d e new_col new_col2
0 -0.528172 -1.072969 0.865408 1.012589 2.236102
1 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646

(2)行删除

#单行删除
sample = sample.drop(0)
print(sample) #多行删除
sample = sample.drop([1, 5])
print(sample)
#删除第0行
c d e new_col new_col2
1 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646 #删除第1、5行
c d e new_col new_col2
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646

此篇暂时分享到此,后续再继续更新。

python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)的更多相关文章

  1. 关于Python pandas模块输出每行中间省略号问题

    关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...

  2. pandas取dataframe特定行/列

    1. 按列取.按索引/行取.按特定行列取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFram ...

  3. Python Pandas库 初步使用

    用pandas+numpy读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值.最小值

  4. 【跟着stackoverflow学Pandas】 - Adding new column to existing DataFrame in Python pandas - Pandas 添加列

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  5. Python 的 Pandas 对矩阵的行进行求和

    Python 的 Pandas 对矩阵的行进行求和: 若使用 df.apply(sum) 方法的话,只能对矩阵的列进行求和,要对矩阵的行求和,可以先将矩阵转置,然后应用 df.apply(sum) 即 ...

  6. 【Python】Python 读取csv的某行或某列数据

    Python 读取csv的某行 转载 2016年08月30日 21:01:44 标签: python / csv / 数据   站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Gith ...

  7. Pandas之csv文件对列行的相关操作

    1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...

  8. python如何输出矩阵的行数与列数?

    Python如何输出矩阵的行数与列数? 对于pyhton里面所导入或者定义的矩阵或者表格数据,想要获得矩阵的行数和列数有以下方法: 1.利用shape函数输出矩阵的行和列 x.shape函数可以输出一 ...

  9. Pandas 常见操作详解

    Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...

  10. Python 代码优化常见技巧

    代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方 ...

随机推荐

  1. ngix安装与使用

    主要是nginx的安装使用, 至于原理 1. 安装nginx(以及两个tomcat) 2. 使用nginx(测试负载均衡) 想要搭建的测试环境, 1.两个tomcat, 端口分别是80和8090(因为 ...

  2. 服务器资源监测脚本(网卡、MEM、CPU)

    #-*- coding: utf-8 -*- #!/usr/bin/python ''' 用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 主选项和报告: ...

  3. Redis-Cluster常用命令

    CLUSTER INFO 打印集群的信息 CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息. //节点 CLUSTER MEET <ip> < ...

  4. Java并发夺命50问

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  5. Java面试——RPC

    一.RPC 服务的原理 [1]Socket 套接字:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个链接的一端称为 Socket.可以实现不同计算机之间的通信,是网络编程接口的具体实现.So ...

  6. leader epoch

    更多内容,前往 IT-BLOG leader epoch 代表 Leader 的纪元信息(epoch),初始值为0.每当 Leader 变更一次,leader epoch 的值就会加1,相当于为 Le ...

  7. 探究for循环中的var与let的区别

    首先饮用一篇大佬写的博客:for循环中let与var的区别,块级作用域如何产生与迭代中变量i如何记忆上一步的猜想 这篇博客对我有所启发,但是有点抽象. 再借用<JavaScript高级程序设计& ...

  8. GaussDB(DWS)网络调度与隔离管控能力

    摘要:调度算法是调度器的核心,设计调度算法要充分考虑业务场景和用户需求,没有万能的调度算法,只有合适的调度算法. 本文分享自华为云社区<GaussDB(DWS)网络调度与隔离管控能力>,作 ...

  9. data.frame数据框操作——R语言

    统计分析中最常见的原始数据形式是类似于数据库表或Excel数据表的形式. 这样形式的数据在R中叫做数据框(data.frame). 数据框类似于一个矩阵,但各列允许有不同类型:数值型向量.因子.字符型 ...

  10. FormData收集表单信息&并且转化为Json格式进行提交验证

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...