python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)
这篇文章分享一下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常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)的更多相关文章
- 关于Python pandas模块输出每行中间省略号问题
关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...
- pandas取dataframe特定行/列
1. 按列取.按索引/行取.按特定行列取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFram ...
- Python Pandas库 初步使用
用pandas+numpy读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值.最小值
- 【跟着stackoverflow学Pandas】 - Adding new column to existing DataFrame in Python pandas - Pandas 添加列
最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...
- Python 的 Pandas 对矩阵的行进行求和
Python 的 Pandas 对矩阵的行进行求和: 若使用 df.apply(sum) 方法的话,只能对矩阵的列进行求和,要对矩阵的行求和,可以先将矩阵转置,然后应用 df.apply(sum) 即 ...
- 【Python】Python 读取csv的某行或某列数据
Python 读取csv的某行 转载 2016年08月30日 21:01:44 标签: python / csv / 数据 站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Gith ...
- Pandas之csv文件对列行的相关操作
1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...
- python如何输出矩阵的行数与列数?
Python如何输出矩阵的行数与列数? 对于pyhton里面所导入或者定义的矩阵或者表格数据,想要获得矩阵的行数和列数有以下方法: 1.利用shape函数输出矩阵的行和列 x.shape函数可以输出一 ...
- Pandas 常见操作详解
Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...
- Python 代码优化常见技巧
代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方 ...
随机推荐
- 使用MyBatis时需要注意到的事情------执行添加、修改和删除操作时,一定要记得提交事务
今天在重写添加操作代码时,发现自己写的代码没有任何报错,使用断点进行查询,发现一切正常,但是注册使用的数据就是无法添加到数据库里面 然后就去之前看过的视频里面去找错误,就发现这样一个小细节: 在视频里 ...
- 基于 Web SDK 实现视频通话场景 | 声网 SDK 教程
声网视频 SDK 被广泛应用于多种实时互动场景中,例如视频会议.视频通话.音视频社交.在线教育等.为了让刚刚接触声网 SDK 的开发者,可以更顺畅地实现基础的视频通话功能,我们基于声网 Web SDK ...
- Spring Bean 的生命周期(详细解读)
Spring Bean 的生命周期简单易懂.在一个 bean 实例被初始化时,需要执行一系列的初始化操作以达到可用的状态.同样的,当一个 bean 不再被调用时需要进行相关的析构操作,并从 bean ...
- Apinto Dashboad V2.0 发布:可视化控制台让配置更轻松!
大家好, Eolink 旗下开源网关 Apinto 本次带来了 Apinto Dashboad V2.0 的版本发布. Dashboad 需要与 Apinto 主版本一起使用,目前 Dashboad ...
- JVM加载中初始化时机?什么时候不会进行初始化?
初始化的过程是给静态变量赋予指定值以及执行静态代码块的过程. 当遇到new,getstatic,putstatic,invokestatic指令时要进行初始化,也就是new实例化对象,调用静态变量以及 ...
- 快收藏!最全GO语言实现设计模式
https://segmentfault.com/a/1190000042859564
- Unity3D中的Attribute详解(二)
上一篇文章我们初步了解了一下Attributes的含义,并且使用系统自带的Attributes写了点代码.在进一步解剖我们的代码之前,我觉得有个概念可能需要巩固一下:什么是元数据? 我们知道C#代码会 ...
- Apache Hudi 0.9.0版本重磅发布!更强大的流式数据湖平台
1. 重点特性 1.1 Spark SQL支持 0.9.0 添加了对使用 Spark SQL 的 DDL/DML 的支持,朝着使所有角色(非工程师.分析师等)更容易访问和操作 Hudi 迈出了一大步. ...
- 代码Bug太多?给新人Code Review头都大了?快来试试SpotBugs
如果你需要一个自动化的工具帮助你或者你的团队发现代码中的缺陷,在提升代码质量同时减少人工Code Review的成本,那这篇文章非常的适合你.本文围绕SpotBugs与Gradle集成,将相关配置和使 ...
- [云计算]概念辨析:云计算 [IaaS/PaaS/SaaS & 公有云/私有云/混合云]
1 云计算(Cloud Computing) 1.0 云计算的发展 1.1 概念 "云"实质上就是一个[网络], 狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取&quo ...