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% 的工作量.优化通常包含两方 ...
随机推荐
- 痞子衡嵌入式:我当选了2019年度官方论坛i.MXRT板块的顶级贡献者
痞子衡桌上有一个联邦快递公司件,放了近一个月了,是同事代领的,痞子衡一直没有拆开.今天心血来潮,决定拆开瞧一瞧,这一拆就拆出了一天的好心情. 原来快递里面是一件i.MXRT产品纪念T-shirt,还有 ...
- 灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报
前言 哈喽各位开发者,「RTE NG-Lab 双周报」如期而至! 近两周,我们更新了一些新的实时互动场景和产品,也举办了代码实验室的第一次线下活动,与大家一起体验了声网最新的 4.0 SDK. 灵感宝 ...
- BGF bivariate generating function 双变量生成函数
目录 定义 BGF bivariate generating function horizonal GF 和 vertical GF 例子 组合数 horizonal GF vertical GF ( ...
- 如何在mac上使用idea做大数据开发
1 软件包下载 jdk1.8 (jdk1.8.0_231) idea(包括2018,2019) (ideaIC-2019.3.3/ideaIC-2018.3.5) 汉化包:汉化包.rar maven3 ...
- 你可能需要的 6 个 React 开发小技巧
这是一个可怕的问题,在React中,我们经常会编写条件语句来显示不同的视图,比如这个简单的例子. const App = () => { return ( <> { loadin ...
- TCC 分布式事务解决方案
更多内容,前往 IT-BLOG 一.什么是 TCC事务 TCC 是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try.确认Confirm.撤销Canc ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门python代码解释应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- ColorWell - web 颜色代码取色工具,Mac 上的优秀调色板
ColorWell 是 Mac 上的一款非常优秀的颜色取色工具,她具有历史记录.调色板同步等功能,非常适合 web 或 App 开发人员使用 下载 ► ColorWell 下载安装 ⇲ 详细介绍 美丽 ...
- 记某gov门户网站渗透测试(已修复)
前言: 免责声明:涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透.否则产生的一切后果自行承担! 该渗透测试项目为已授权项目,本文已对敏感部分做了相关处理. 正文: SQL注入( ...
- Redis系列12:Redis 的事务机制
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...