操作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. winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已解] 望一起讨论)(技术改变世界-cnblog)

    http://www.cnblogs.com/IAmBetter/archive/2012/01/14/2322156.html winform设计一个登录界面和修改密码的界面-自动切换窗体(问题[已 ...

  2. 11.UiAutomator 相关JAVA知识

    一.封装方法与模块化用例 1.方法: 在JAVA中,方法就好比日常生活中的一个动作,由动作组合成一系列完整的操作. 方法结构: 方法修饰符 方法返回值类型 方法名 { 方法体 } 比如: public ...

  3. PHP字符串定义方式和单引号双引号的区别

    $str=<<<任意标记 ......................... .............................. 任何标记; 单引号和双引号的区别? ''号 ...

  4. codeforces 876 C. Classroom Watch

    http://codeforces.com/contest/876/problem/C C. Classroom Watch time limit per test 1 second memory l ...

  5. NOIP 2015 提高组 Day2

    期望得分:100+10+60=170 实际得分:100+10+35=145 http://www.cogs.pro/cogs/page/page.php?aid=16 T1 跳石头 时间限制:1 s  ...

  6. UVA 1647 Computer Transformation

    https://vjudge.net/problem/UVA-1647 题意: 开始有一个1,接下来每一步1变成01,0变成10 问n不之后00的个数 打表找规律 第3步之后: 如果第i步之后有x个字 ...

  7. PowerShell入门

    最近需要写个Windows的脚本,以前一直使用cmd.exe来写批处理脚本,这次接触到了PowerShell,准备把学习过程中学到的知识点整理在这里: 相关文章: 1.https://www.cnbl ...

  8. 使用 jQuery 避免鼠标双击

    介绍 当用户双击DOM对象(例如按钮和链接等)时,对于用户交互一直是个麻烦的问题. 幸运的是, jQuery 提供了一个相当棒的解决方法. 那就是.one(). .one()这个方法是做什么的? 它附 ...

  9. BestCoder Round #41 记。

    大概整个过程都是很绝望的吧. 发现自己在七点之前是肯定搞不定网了..有冲动跑到机房去打 但是又不喜欢那样的气氛 这可是shi的场呢...好难过啊... 后来..好像是在和lyd讨论怎么把网络复原的过程 ...

  10. 查询timestamp类型数据

    $where=" roleid = 8 and lizhi = 0 and branchid IN (".implode(",",$ids).") a ...