1、pandas对行列的基本操作命令:

import numpy as np
import pandas as pd
from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类型 data.w #选择表格中的'w'列,使用点属性,返回的是Series类型 data[['w']] #选择表格中的'w'列,返回的是DataFrame类型 data[['w','z']] #选择表格中的'w'、'z'列 data[0:2] #返回第1行到第2行的所有行,前闭后开,包括前不包括后 data[1:2] #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
#如果采用data[1]则报错 data.ix[1:2] #返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同 data['a':'b'] #利用index值进行切片,返回的是**前闭后闭**的DataFrame,
#即末端是包含的
data.irow(0) #取data的第一行
data.icol(0) #取data的第一列 data.head() #返回data的前几行数据,默认为前五行,需要前十行则data.head(10)
data.tail() #返回data的后几行数据,默认为后五行,需要后十行则data.tail(10) ser.iget_value(0) #选取ser序列中的第一个
ser.iget_value(-1) #选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这会引起歧义。 data.iloc[-1] #选取DataFrame最后一行,返回的是Series
data.iloc[-1:] #选取DataFrame最后一行,返回的是DataFrame data.loc['a',['w','x']] #返回‘a’行'w'、'x'列,这种用于选取行索引列索引已知 data.iat[1,1] #选取第二行第二列,用于已知行、列位置的选取。

2、对列的操作实战

import pandas as pd
import numpy as np
# 构建一个3*5的矩阵
data = pd.DataFrame(np.arange(1, 31, 2).reshape(3, 5),
index=['one', 'two', 'three'], columns=['a', 'b', 'c', 'd', 'e'])
print('index', data.index)
print('data', data)
'''
index Index(['one', 'two', 'three'], dtype='object')
data a b c d e
one 1 3 5 7 9
two 11 13 15 17 19
three 21 23 25 27 29
''' # 对列的操作如下: # 获取某一列
col_a = data.get('a')
col_a = data.a
col_a = data['a']
print('col_a', type(col_a), col_a)
col_a = data[['a']]
print('col_a', type(col_a), col_a)
'''
col_a <class 'pandas.core.series.Series'>
one 1
two 11
three 21
Name: a, dtype: int32
col_a <class 'pandas.core.frame.DataFrame'>
a
one 1
two 11
three 21
''' cols = data.ix[:, [0, 1, 2]] # 不知道列名只知道列的位置
print("cols1",cols)
cols = data.ix[1, [0]] # 选择第2行第1列的值
print("cols2",type(cols), cols)
cols = data.ix[1, 0]
print("cols3",type(cols), cols)
'''
cols1
a b c
one 1 3 5
two 11 13 15
three 21 23 25
cols2 <class 'pandas.core.series.Series'>
a 11
Name: two, dtype: int32
cols3 <class 'numpy.int32'> 11
'''
cols = data.ix[[1, 2], [0]] # 选择第2,3行第1列的值
print("cols4",type(cols), cols)
cols = data.ix[0:2, [0, 2]] # 选择第1-2行第1、3列的值,不包括2行
print("cols5",type(cols), cols)
cols = data.ix[1:2, 2:4] # 选择第2-3行,3-5(不包括5)列的值
print("cols6",type(cols), cols)
cols = data.ix[data.a > 5, 3] # 第1列中大于5所在的行第4列的值
print("cols7",type(cols), cols)
'''
cols4 <class 'pandas.core.frame.DataFrame'>
a
two 11
three 21
cols5 <class 'pandas.core.frame.DataFrame'>
a c
one 1 5
two 11 15
cols6 <class 'pandas.core.frame.DataFrame'>
c d
two 15 17
cols7 <class 'pandas.core.series.Series'>
two 17
three 27
Name: d, dtype: int32
''' cols = data.ix[1:3,['a','b']] # 还可以行数或列数跟行名列名混着用
print("cols8",type(cols), cols) cols = data.ix['one':'two',[0,1]] # 索引跟列用法类似,但包含开始、结束
print("cols9",type(cols), cols) cols = data.ix[['one','three'],[2,2]] # 索引跟列用法类似
print("cols10",type(cols), cols)
'''
cols8 <class 'pandas.core.frame.DataFrame'>
a b
two 11 13
three 21 23
cols9 <class 'pandas.core.frame.DataFrame'>
a b
one 1 3
two 11 13
cols10 <class 'pandas.core.frame.DataFrame'>
c c
one 5 5
three 25 25
'''

3、对行的操作实战

# 对行的操作,对行操作必须采用切片的方式例如data[1:2],而不能data[1]或者data['one']
rows = data.ix[1] # 获取第1行,错误用法rows = data[1] # 获取第1行
rows = data[1:2] # 获取第1行,等价rows = data.ix[1:2] # 获取第1行
print("rows1",type(rows), rows)
rows = data['one':'two'] # 当用已知的行索引时为前闭后闭区间,这点与切片稍有不同。
print("rows2",type(rows), rows)
'''
rows1 <class 'pandas.core.frame.DataFrame'>
a b c d e
two 11 13 15 17 19
rows2 <class 'pandas.core.frame.DataFrame'>
a b c d e
one 1 3 5 7 9
two 11 13 15 17 19
'''
#取DataFrame中最后一行,返回的是DataFrame类型,**注意**这种取法是有使用条件的,
# 只有当行索引不是数字索引时才可以使用,否则可以选用`data[-1:]`--返回DataFrame类型
# 或`data.irow(-1)`--返回Series类型
rows = data.ix[-1:]
print("rows3",type(rows), rows)
rows = data[-1:] #跟上面一样,取DataFrame中最后一行,返回的是DataFrame类型
print("rows4",type(rows), rows)
'''
rows3 <class 'pandas.core.frame.DataFrame'>
a b c d e
three 21 23 25 27 29
rows4 <class 'pandas.core.frame.DataFrame'>
a b c d e
three 21 23 25 27 29
'''
rows = data.head(1) #返回DataFrame中的第一行
print("rows5",type(rows), rows)
rows = data.tail(1) #返回DataFrame中的最后一行
print("rows6",type(rows), rows)
'''
rows5 <class 'pandas.core.frame.DataFrame'>
a b c d e
one 1 3 5 7 9
rows6 <class 'pandas.core.frame.DataFrame'>
a b c d e
three 21 23 25 27 29
'''

DataFrame对行列的基本操作实战的更多相关文章

  1. Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)

    本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1.  Trandform ...

  2. pandas DataFrame(2)-行列索引及值的获取

    pandas DataFrame是二维的,所以,它既有列索引,又有行索引 上一篇里只介绍了列索引: import pandas as pd df = pd.DataFrame({'A': [0, 1, ...

  3. 第32讲:List的基本操作实战与基于模式匹配的List排序算法实现

    今天来学习一下list的基本操作及基于模式匹配的排序操作 让我们从代码出发 val bigData = List("hadoop","spark") val d ...

  4. DataFrame 行列数据的筛选

    一.对DataFrame的认知 DataFrame的本质是行(index)列(column)索引+多列数据. DataFrame默认索引是序号(0,1,2…),可以理解成位置索引. 一般我们用id标识 ...

  5. Python 数据科学系列 の Numpy、Series 和 DataFrame介绍

    本課主題 Numpy 的介绍和操作实战 Series 的介绍和操作实战 DataFrame 的介绍和操作实战 Numpy 的介绍和操作实战 numpy 是 Python 在数据计算领域里很常用的模块 ...

  6. dataframe常用处理

    获取列名:data.columns.values.tolist() 复制列: out['serial_number'] = out['2']这样就是新增了一列,复制了‘2’这一列,然后再del out ...

  7. dataframe基础

    1 df[i]   其中i是0,1,2,3,...  此时选中的是dataframe的第i列 2 dataframe查看每一列是否有缺失值 temp = data.isnull().any() #列中 ...

  8. Python for Data Analysis 学习心得(二) - pandas介绍

    一.pandas介绍 本篇程序上篇内容,在numpy下面继续介绍pandas,本书的作者是pandas的作者之一.pandas是非常好用的数据预处理工具,pandas下面有两个数据结构,分别为Seri ...

  9. 王家林 大数据Spark超经典视频链接全集[转]

    压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan ...

随机推荐

  1. poj1002总结

    1.之前一直是runtime error,没有找出具体原因,把冒牌排序改成了合并排序,当输入是100000行时,从大约10s变到1s内 2.感觉是atoi指针导致的,当判断atoi的入参不为NULL时 ...

  2. AJAX的简单示例:注册校验

    众所周知,我们每次需要注册一个网站的用户名时,都会校验该邮箱.用户名是不是正确的格式.是不是有被使用过,密码是否符合规则,二次确认是否符合. 如果这些校验都采用form表单提交的话,会给用户带来极不好 ...

  3. java基础知识—类和对象

    1.对象的特征---类的属性 每个对象的每个属性都有特定的值 对象的操作---类的方法 2.封装 对象同时具有属性和方法两项属性. 对象的属性和方法同时被封装在一起,共同体现事物的特性,二者相辅相成, ...

  4. require和load的不同之处

    require和load最大的不同之处在于,require就算调用多次也不会重新加载已经加载过的文件.Ruby会持续追踪已经被请求的那些文件而不会重复加载它们.而load命令总是会加载所请求的命令,不 ...

  5. 使用Babel将单独的js文件 中的 ES6转码为ES5

      如果你并没有接触过ES6,当你看到下面的代码时,肯定是有点懵逼的(这是什么鬼?心中一万头神兽奔腾而过),但是你没看错,这就是ES6.不管你看不看它,它都在这里. 1 2 3 4 5 6 7 8 9 ...

  6. C语言关键字分类整理

    C语言总览: 强类型,面向过程 简洁.灵活:32个关键字(C99标准新增5个,C11新增7个),9种控制语句,34种运算符 数据类型丰富,运算符丰富 结构化(控制语句).模块化(函数) 灵魂.特色:指 ...

  7. gulp的使用(三)之把gulp运用到项目实战中

    在了解了上面的gulp(一)(二)以后,我们就可以开始在项目中具体使用了,具体使用流程如下: 1. 创建一个project文件夹,然后里面首先创建一个src文件夹,里面放置开发要用到的文件夹: 2. ...

  8. Spring 基于构造函数的依赖注入

    基于构造函数依赖注入 sprig通过bean创建对象时,会通过bean提供的参数来选择调用某个构造函数.上例中, <constructor-arg ref="spellChecker& ...

  9. 2--TestNG 参数化

    (1)XML文件 public class ParameterTest{ @test @Parameters({"name","age"}) public vo ...

  10. mysqlQL 5.7 安装报错CMake Error at cmake/boost.cmake:81 (MESSAGE)

    CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BO ...