操作Series和DataFrame中的数据的常用方法:

导入python库:

import numpy as np
import pandas as pd

测试的数据结构:

Series:

>>> obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
>>> obj
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64

DataFrame:

>>> data = {
... 'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
... 'year': [2000, 2001, 2002, 2001, 2002],
... 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]
... }
>>> frame = pd.DataFrame(data)
>>> frame
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002

重新索引 reindex():

  创建一个适应新索引的新对象:

  对于Series来说,只有列索引(数据标签):

  调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值

  例:将 ['d', 'b', 'a', 'c'] 替换为 ['a', 'b', 'c', 'd', 'e']   e不存在 ,自动引入缺失值NaN,可以使用fill_value手动选择缺失值

>>> obj.reindex(['a', 'b', 'c', 'd', 'e'])
a -5.3
b 7.2
c 3.6
d 4.5
e NaN
dtype: float64
>>> obj.reindex(['a', 'b', 'c', 'd', 'e'],fill_value=666)
a -5.3
b 7.2
c 3.6
d 4.5
e 666.0
dtype: float64

  对于DataFrame来说,既有行索引也有列索引,默认是行索引,但也可同时进行重新索引(使用方法看例子和输出结果)。

  例:需要注意的是,int和str的区别,默认的索引类型是int型,

>>> frame
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
>>> frame.reindex([4,3,2,1,0])
pop state year
4 2.9 Nevada 2002
3 2.4 Nevada 2001
2 3.6 Ohio 2002
1 1.7 Ohio 2001
0 1.5 Ohio 2000
>>> frame.reindex(['','','','',''])
pop state year
4 NaN NaN NaN
3 NaN NaN NaN
2 NaN NaN NaN
1 NaN NaN NaN
0 NaN NaN NaN
>>> frame.reindex(['a', 'b', 'c', 'd', 'e'])
pop state year
a NaN NaN NaN
b NaN NaN NaN
c NaN NaN NaN
d NaN NaN NaN
e NaN NaN NaN
>>> frame.reindex([4,3,2,1,0],columns=['year', 'state', 'pop'])
year state pop
4 2002 Nevada 2.9
3 2001 Nevada 2.4
2 2002 Ohio 3.6
1 2001 Ohio 1.7
0 2000 Ohio 1.5
>>> frame.reindex(index=[4,3,2,1,0],columns=['year', 'state', 'pop'])
year state pop
4 2002 Nevada 2.9
3 2001 Nevada 2.4
2 2002 Ohio 3.6
1 2001 Ohio 1.7
0 2000 Ohio 1.5

删除指定行/列的项:

  对于Series来说,只有列的概念:

>>> obj
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
>>> obj.drop(['d','a'])
b 7.2
c 3.6
dtype: float64

  对于DataFrame来说,既有行也有列,默认是删除行,删除列时设置axis为1, 否则会报错(使用方法看例子和输出结果)。

   

>>> frame
pop state year
0 1.5 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
>>> frame.drop([0,1])
pop state year
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002
>>> frame.drop(['pop'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 2530, in drop
obj = obj._drop_axis(labels, axis, level=level, errors=errors)
File "/usr/local/lib/python3.6/site-packages/pandas/core/generic.py", line 2562, in _drop_axis
new_axis = axis.drop(labels, errors=errors)
File "/usr/local/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 3744, in drop
labels[mask])
ValueError: labels ['pop'] not contained in axis
>>> frame.drop(['pop'],axis=1)
state year
0 Ohio 2000
1 Ohio 2001
2 Ohio 2002
3 Nevada 2001
4 Nevada 2002

索引 ,选取,过滤:

  Series:

    选取:

      series的选取类似于list;不同的是 series既可以使用数字索引选取,也可以使用自定标签索引选取。

>>> obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d', 'b', 'a', 'c'])
>>> obj
d 4.5
b 7.2
a -5.3
c 3.6
dtype: float64
>>> obj['d']
4.5
>>> obj[0]
4.5

    赋值:赋值:

      与选取类似。

>>> obj['d'] = 0
>>> obj['d']
0.0
>>> obj
d 0.0
b 7.2
a -5.3
c 3.6
dtype: float64
>>> obj[0] = 88
>>> obj
d 88.0
b 7.2
a -5.3
c 3.6
dtype: float64

  DataFrame:

    选取:

      DataFrame默认的索引指的是列索引,并且只能使用列标签索引,不能使用数字索引会报错(返回Series对象)。

      DataFrame可以使用切片功能来进行 行索引选取(返回DataFrame对象)。

      DataFrame也可以使用DataFrame.ix[val]来进行具体选取(返回Series对象)。使用方法:frame.ix[0]返回第一行的Series对象。frame.ix[1,['year']]返回第二行,第year列的Series对象。

例:列索引

>>> frame
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
>>> frame['year']
0 2000
1 2001
2 2002
3 2001
4 2002
Name: year, dtype: int64
>>> frame[0]
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 2525, in get_loc
return self._engine.get_loc(key)
File "pandas/_libs/index.pyx", line 117, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 139, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/hashtable_class_helper.pxi", line 1265, in pandas._libs.hashtable.PyObjectHashTable.get_item
File "pandas/_libs/hashtable_class_helper.pxi", line 1273, in pandas._libs.hashtable.PyObjectHashTable.get_item
KeyError: 0

例:行索引

>>> frame
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
>>> frame[0:2]
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
>>> frame[0:1]
year state pop
0 2000 Ohio 1.5
>>> frame.ix[0]
year 2000
state Ohio
pop 1.5
Name: 0, dtype: object

例:ix索引

>>> frame.ix[0]
year 2000
state Ohio
pop 1.5
Name: 0, dtype: object
>>> frame.ix[1,['year']]
year 2001
Name: 1, dtype: object

例:返回格式

>>> type(frame['year'])
<class 'pandas.core.series.Series'> >>> type(frame[0:2])
<class 'pandas.core.frame.DataFrame'> >>> type(frame.ix[0])
<class 'pandas.core.series.Series'> >>> type(frame.ix[0,['year']])
<class 'pandas.core.series.Series'>

    赋值:

例:DataFrame赋值

#frame
>>> frame
year state pop
0 2000 Ohio 1.5
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9
#对frame列赋值非list是会对整列赋值
>>> frame['year'] = 5
>>> frame
year state pop
0 5 Ohio 1.5
1 5 Ohio 1.7
2 5 Ohio 3.6
3 5 Nevada 2.4
4 5 Nevada 2.9
>>> frame['year'] = 'test'
>>> frame
year state pop
0 test Ohio 1.5
1 test Ohio 1.7
2 test Ohio 3.6
3 test Nevada 2.4
4 test Nevada 2.9 #对frame列赋值进行list整列赋值是必须保证list长度等于行的长度。
>>> frame['year'] = range(5)
>>> frame
year state pop
0 0 Ohio 1.5
1 1 Ohio 1.7
2 2 Ohio 3.6
3 3 Nevada 2.4
4 4 Nevada 2.9
>>> frame['year'] = range(4)
Traceback (most recent call last):
ValueError: Length of values does not match length of index #行赋值
>>> frame.ix[0] = 5
>>> frame
year state pop
0 5 5 5.0
1 1 Ohio 1.7
2 2 Ohio 3.6
3 3 Nevada 2.4
4 4 Nevada 2.9

 算术运算:

      

pandas 数据结构的基本功能的更多相关文章

  1. pandas教程1:pandas数据结构入门

    pandas是一个用于进行python科学计算的常用库,包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单.pandas建造在NumPy之上,它使得以NumPy为中心的应用很容 ...

  2. 读书笔记一、pandas数据结构介绍

    pandas数据结构介绍 主要两种数据结构:Series和DataFrame.   Series   Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)+数据标签(即索引)组 ...

  3. Pandas数据结构

    Pandas处理以下三个数据结构 - 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构构建在Numpy数组之上,这意味着它们很快. 维数和描述 考虑这些数据结构的最 ...

  4. python之pandas学习笔记-pandas数据结构

    pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...

  5. 初探pandas——安装和了解pandas数据结构

    安装pandas 通过python pip安装pandas pip install pandas pandas数据结构 pandas常用数据结构包括:Series和DataFrame Series S ...

  6. 03. Pandas数据结构

    03. Pandas数据结构 Series DataFrame 从DataFrame中查询出Series 1. Series Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一 ...

  7. pandas 学习(1): pandas 数据结构之Series

    1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...

  8. pandas数据结构:Series/DataFrame;python函数:range/arange

    1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...

  9. pandas数据结构和介绍第一天

    pandans另种主要的数据结构Series和DateFranme 1,Series 仅由一组数据就而已产生简单的Series 2)Series 有index和values属性,表达索引对象 3)设置 ...

随机推荐

  1. 解题:SCOI 2008 天平

    题面 我们很容易想到差分约束,但是我们建出来图之后好像并不好下手,因为我们只能得到砝码间的大小关系,并不能容易地得到每个砝码的具体重量. 于是我们有了一种神奇的思路:既然得不到具体重量我们就不求具体重 ...

  2. 据说要写一个CTSC&APIO的收获

    就不写流水帐了,总的写一下吧.先从最浅显的地方开始——知识.大概被普及了一发带花树,算上自己的考试,还被普及了一发洲阁筛.当然更多的还是对于一些知识的强化,比如:乱搞(这东西真是太重点了啊).DP.数 ...

  3. 【单调栈】【CF5E】 Bindian Signalizing

    传送门 Description 给你一个环,环上有一些点,点有点权.定义环上两点能相互看见当且仅当两点间存在一个弧使得弧上不存在一个点的点权大于着两个点.求一共有多少个点能互相看到 Input 第一行 ...

  4. tableau学习

    一.维度 度量 1. 连接到新数据源时,Tableau 会将该数据源中的每个字段分配给“数据”窗格的“维度”区域或“度量”区域,具体情况视字段包含的数据类型而定. 例如: 2. tableau中的字段 ...

  5. Centos7.3 安装 OpenCV3.3.0

    一开始会出现这个错误: CMake Error at CMakeLists.txt: (message): FATAL: In-source builds are not allowed. You s ...

  6. Codeforces 938.C Constructing Tests

    C. Constructing Tests time limit per test 1 second memory limit per test 256 megabytes input standar ...

  7. dhtmlx3.6 grid列头合并

    mygrid.setHeader("序号,操作人员,发药,#cspan,审核,#cspan,数量小计,金额小计");mygrid.attachHeader(["#rspa ...

  8. 使用HTML5、CSS3和jQuery增强网站用户体验[留存]

    记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验?是不是立刻就想到了flash实现?这彷佛年代久远的事了.使用现在最流行的Web技术HTML5,CSS3和jQuery,同样也可以实现类 ...

  9. php跳转网络连接

    laravel用 redirect 跳转 HTTP 即可.可以把网址看作路由 例如: if($newsInfo->type == 77){ return redirect('http://192 ...

  10. 当月第一天、最后一天、下月第一天,时间date

    时间记录,不是时间戳 $thismonth = date('m'); $thisyear = date('Y'); $startDay = $thisyear . '-' . $thismonth . ...