操作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. 解题:HNOI 2008 玩具装箱

    题面 搞了一晚上斜率优化,大概懂了一点,写写 原来常用的优化dp方法:做前缀和,预处理,数据结构维护 现在有转移方程长这样的一类dp:$dp[i]=min(dp[i],k[i]*x[j]+y[j]+c ...

  2. 【bzoj1002】轮状病毒

    Portal-->bzoj1002 Solution 虽然说看上去是一道矩阵树定理的题但是 但是! 没有模数了解一下,\(n=100\)了解一下 开心愉快敲了一个高消之后发现跑到\(80\)都已 ...

  3. form, table表示表格的时候有什么区别?

    http://zhidao.baidu.com/link?url=1DFrMJlzV_fHSyGmKEi77ki6g2IrjrMfRGwVYNHL5Y8iJC9Diu2BoMGEiB3wbnkTCHm ...

  4. UESTC--1732

    原题链接:http://acm.uestc.edu.cn/problem.php?pid=1732 分析:dp,n个相同物品放入m个相同的盒子(允许为空)的个数为dp[n][m]=dp[n][m-1] ...

  5. CodeChef DGCD

    You're given a tree on N vertices. Each vertex has a positive integer written on it, number on the i ...

  6. Java Socket UDP编程

    package com; import java.io.IOException; import java.net.*; /** * UDP Client * * Created by Administ ...

  7. 详解 Cookie 和 Session 关系和区别

    在技术面试中,经常被问到“说说Cookie和Session的区别”,大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果让你更详细地说明,你能说出几点?今天个推君就和大 ...

  8. centos 前端环境搭建

    Node.js 安装 wget 下载安装 yum -y install gcc make gcc-c++ openssl-devel wget node v6.11.0 下载 wget https:/ ...

  9. Azure 上SQL Database(PaaS)Time Zone时区问题处理

    在Azure上面的PaaS时间都是以UTC时间为准(云的世界里基本上都是以UTC时间为标准的),所以以前在本地SQL Server上面常用的GetDate()方法会碰到问题,在中国获取的时间会被当前时 ...

  10. [DeeplearningAI笔记]序列模型2.10词嵌入除偏

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.10词嵌入除偏 Debiasing word embeddings Bolukbasi T, Chang K W, Zo ...