pandas 数据结构的基本功能
操作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 数据结构的基本功能的更多相关文章
- pandas教程1:pandas数据结构入门
		
pandas是一个用于进行python科学计算的常用库,包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单.pandas建造在NumPy之上,它使得以NumPy为中心的应用很容 ...
 - 读书笔记一、pandas数据结构介绍
		
pandas数据结构介绍 主要两种数据结构:Series和DataFrame. Series Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)+数据标签(即索引)组 ...
 - Pandas数据结构
		
Pandas处理以下三个数据结构 - 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构构建在Numpy数组之上,这意味着它们很快. 维数和描述 考虑这些数据结构的最 ...
 - python之pandas学习笔记-pandas数据结构
		
pandas数据结构 pandas处理3种数据结构,它们建立在numpy数组之上,所以运行速度很快: 1.系列(Series) 2.数据帧(DataFrame) 3.面板(Panel) 关系: 数据结 ...
 - 初探pandas——安装和了解pandas数据结构
		
安装pandas 通过python pip安装pandas pip install pandas pandas数据结构 pandas常用数据结构包括:Series和DataFrame Series S ...
 - 03. Pandas数据结构
		
03. Pandas数据结构 Series DataFrame 从DataFrame中查询出Series 1. Series Series是一种类似于一维数组的对象,它由一组数据(不同数据类型)以及一 ...
 - pandas 学习(1): pandas 数据结构之Series
		
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
 - pandas数据结构:Series/DataFrame;python函数:range/arange
		
1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会 ...
 - pandas数据结构和介绍第一天
		
pandans另种主要的数据结构Series和DateFranme 1,Series 仅由一组数据就而已产生简单的Series 2)Series 有index和values属性,表达索引对象 3)设置 ...
 
随机推荐
- HDU 4372 Count the Buildings——第一类斯特林数
			
题目大意:n幢楼,从左边能看见f幢楼,右边能看见b幢楼 楼高是1~n的排列. 问楼的可能情况 把握看到楼的本质! 最高的一定能看见! 计数问题要向组合数学或者dp靠拢.但是这个题询问又很多,难以dp ...
 - HDU 2586 倍增法求lca
			
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
 - springMVC的controller返回值
			
1.可以返回ModelAndView 2.可以返回一个String字符串:即一个jsp页面的逻辑视图名,这个在springMVC.xml中可以配置此页面逻辑视图的前缀和后缀 3.可以返回void类型: ...
 - python学习笔记(四)  思考和准备
			
一.zip的坑 zip()函数接收多个可迭代数列,将数列中的元素重新组合,在3.0中返回迭代器指向 数列首地址,在3.0以下版本返回List类型的列表数列.我用的是3.5版本python, 所以zip ...
 - 配置pdo 的用户和密码,
			
注意:要进入mysql命令行来操作~~~~ grant all on *.* to pdo_root@'%' identified by 'pdo_pwd'; flush privileges
 - UITableView .grouped 类型去除顶部间距
			
在设置 UITableView 的 style 为 .grouped 类型的时候,发现第一个 cell 的顶部存在大段的间距,而改为 .plain 类型则没有这个间距,效果如下: 设置了 conten ...
 - bzoj 1367: [Baltic2004]sequence
			
1367: [Baltic2004]sequence Time Limit: 20 Sec Memory Limit: 64 MB Description Input Output 一个整数R Sa ...
 - ZOJ 3778 C -  Talented Chef 水题
			
LINK:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3778 题意:有n道菜,每道菜需要\(a_i\)道工序,有m个锅可 ...
 - iframe子夜页面调父页面的方法  取父页面的值
			
1.调父页面的方法的写法 window.parent.yincang();//yincang()是父页面的一个方法 2.取父页面的值的写法 window.parent.document.gettEle ...
 - HBase笔记之远程Shell界面命令行无法删除字符的解决方案
			
方法一: 设置终端退格键为ASCII 127 在XShell的界面中,设置 文件 --> 属性 --> 终端 --> 键盘 --> BACKSPACE键序列,改为ASCII 1 ...