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)设置 ...
随机推荐
- 函数式编程(1)-高阶变成(2)-filter
filter Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的时,filter()把传入的函数依次作用于每个元素,然 ...
- elk +redis 环境搭建
这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elast ...
- Spring MVC入门示例
1.新建一个Java Web项目 2.导入jar包 3.在WEB-INF下面建一个hello.jsp页面. <%@ page language="java" import=& ...
- Django summernote 富文本
Summernote is a simple WYSIWYG editor. GITHUB:https://github.com/summernote/django-summernote SETUP ...
- select网络模型知识总结
select模型支持IO多路复用,select函数如下 int select ( IN int nfds, //windows下无意义,linux有意义 IN OUT fd_set* readfds, ...
- Jenkins+SVN+Maven发布项目
一.安装jenkins插件 登入Jenkis后,安装几个插件: Maven Integration plugin # 没有这个插件,不能创建maven项目 Subversion Plug-in Pub ...
- 平衡树【Treap】
平衡树的板题,用Treap实现. 具体参见注释,写的很详细了,包括了原理,实现以及注意事项 蒟蒻写个注释板子写了两天,太弱了QAQ 感谢niiick指导 Code #include<iostre ...
- mysql5.7 安装常见问题
mysql 5.7安装要执行以下三个命令: 1.mysql install2.mysqld --initialize3.net start mysql 第一个命令可能会出现Install/Remove ...
- 前端PHP入门-021-重点日期函数之日期验证函数
checkdate可以判断一个输出的日期是否有效. 在实际的工作中,我们需要经常用于检测常用于用户提交表单的数据验证. 函数的语法格式如下: bool checkdate ( int month,in ...
- [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...