美文网首页我爱编程
Pandas 学习笔记

Pandas 学习笔记

作者: 拓季 | 来源:发表于2017-12-26 20:12 被阅读0次

Pandas 中的两个最重要的数据结构是 Series 和 DataFrame,其约定的引用方式为:

import pandas as pd
from pandas import Series, DataFrame

Series

Series 在 Numpy 一维数组的基础上添加了索引 index,使得其中的数据可以更加方便的通过索引进行访问和依据索引进行数据对齐 alignment。需要注意的是同数组一样,同一个Series中的数据必须是同一种数据类型。

Series 的几个常用的属性:obj.values,obj.index 用于查看其中的值和索引值。

由于构建与一维数组的基础上,因此可以沿用一维数组的切片操作:

In [2]:
np.random.seed(1)
s = pd.Series(np.random.randn(100))
s[2: 6] 

Out[2]:
2    -0.528172
3    -1.072969
4     0.865408
5    -2.301539
dtype: float64

在创建 Series 时如果不指定 index,则会默认的分配从 0 开始的整数值作为索引值,称为索引值也就意味着可以通过 index 索引到相应位置的值:

In [3]:
obj = Series([4, 7, -5, 3], index=['d', 'a', 'b', 'c'])
obj

Out[3]:
d    4
a    7
b   -5
c    3
dtype: int64

In [4]:
obj['b']

Out[4]:
-5

还通过索引赋值以及取多个值:

In [5]:
obj['d'] = 8
obj[['d', 'c', 'a']]

Out[5]:
d    8
c    3
a    7
dtype: int64

并支持类似 Numpy 数组的逻辑选取:

In [6]:
obj[obj > 2]

Out[6]:
d    8
a    7
c    3
dtype: int64

由于 Numpy 和 Pandas 在数据分析中使用的非常广泛,因此二者的兼容性非常好,可以直接采用 Numpy 中的很多方法来操作 Series:

In [7]:
np.exp(obj)

Out[7]:
d    2980.957987
a    1096.633158
b       0.006738
c      20.085537
dtype: float64

这个索引和值的关联关系反应到基本的 python 数据结构就是其可以与字典的键和值的关系对应起来,因此可以直接通过字典来创建 Series,且创建好的 Series 会自动的根据字典的键来排序:

In [8]:
states = {'ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
obj = Series(states)
obj

Out[8]:
Oregon    16000
Texas     71000
Utah       5000
ohio      35000
dtype: int64

也可以用很多适用于字典的函数来查询 Series:

In [9]:
'Utah' in obj

Out[9]:
True

除了索引外,Series 本身及索引本身都可以通过 name 属性来指定名称,这样做的意义是为了更好的利用已有的数据来生成 Series,以及在使用中方便的标识不同的 Series 中包含的特征信息是什么:

In [10]:
obj.name = 'population'
obj.index.name = 'state'
obj

Out[10]:
state
Oregon    16000
Texas     71000
Utah       5000
ohio      35000
Name: population, dtype: int64

创建好的索引值可以借助 index 属性通过赋值的方式来修改:

In [11]:
obj.index = ['OR', 'TX', 'UT', 'OH']
obj

Out[11]:
OR    16000
TX    71000
UT     5000
OH    35000
Name: population, dtype: int64

注意这里修改 index 后,原来的 index 的名称没有了。

对齐的一个简单的例子就是当两个 Series 做数学运算的时候,计算会发生在索引相同的项之间,而不是位置相同的项,并且不要求两个 Series 一定长度相同。

In [13]:
s3 = pd.Series([1, 2, 3], index=['d', 'c', 'b'])
s2 = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
s2 + s3

Out[13]:
a    NaN
b    5.0
c    5.0
d    5.0
dtype: float64

与此对应的array的运算则是按照位置来进行,且二者的长度必须相同

DataFrame

在 Series 的基础上,DataFrame 则又可以看作是通过赋予 Series 一个名称,然后将多个 Series 进行组合操作的数据表:表的行标签是索引名,列标签是 Series 名,也称列名。

当通过字典创建 DataFrame时,列名会自动按照字母顺序进行排列:

In [14]:
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 = DataFrame(data)
frame

Out[14]:
    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

但也可以在创建时指定列标签的顺序:

In [15]:
DataFrame(data, columns=['year', 'state', 'pop'])

Out[15]:
    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

DataFrame 设置列标签和行标签的一个重要作用就是可以通过标签来访问相应的列或行:

In [3]:
frame['state']

Out[3]:
0      Ohio
1      Ohio
2      Ohio
3    Nevada
4    Nevada
Name: state, dtype: object


In [5]:
frame.loc[3]

Out[5]:
pop         2.4
state    Nevada
year       2001
Name: 3, dtype: object

另一个比较常用的创建 DataFrame 的数据来源是嵌套的字典,此时嵌套的最外层的键将作为列标签,而内层的键将作为行标签:

In [6]:
pop = {'Nevada': {2001: 2.4, 2002: 2.9}, 'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}
frame = DataFrame(pop)
frame

Out[6]:
Nevada  Ohio
2000    NaN 1.5
2001    2.4 1.7
2002    2.9 3.6

DataFrame 同时也可以做转置操作

In [7]:
frame.T
Out[7]:
2000    2001    2002
Nevada  NaN 2.4 2.9
Ohio    1.5 1.7 3.6

Pandas 文件读写

读入 CSV:pd.read_csv('directory_to_the_file/filename.csv')

相关文章

  • 大师兄的Python机器学习笔记:Pandas库

    大师兄的Python机器学习笔记:实现评估模型 一、关于Pandas 1. Pandas和Numpy Pandas...

  • pandas索引取数

    注:《利用python进行数据分析》的学习笔记-pandas import pandas as pd import...

  • pandas-基础笔记

    Pandas学习笔记-基础篇 参考资料 https://www.yiibai.com/pandas/ 导入模块 S...

  • 学习笔记----机器学习(三)

    我是iOS开发者之一。我们的App:今日好出行 申明一下,只是学习笔记,只是学习笔记,只是学习笔记。 Pandas...

  • pandas学习笔记

    pandas学习笔记 1.安装 2.学习代码-Series code 1 0 1001 py...

  • pandas学习笔记

    Pandas库的介绍 Pandas是一个开放源码的Python库,它使用强大的数据结构提供高性能的数据操作和分析工...

  • pandas学习笔记

    pandas 读取 csv 文件 查看pandas的列名以及列数 pandas 查看某一列的全部数据或部分数据 查...

  • pandas学习笔记

    筛选数据 读取文件 import pandas as pdpd.read_csv("Lung.txt",heade...

  • pandas 学习笔记

    pd.Series 简介: Series 是一个定长的有序字典 简单创建: Series 中可以包含多种基本数据类...

  • pandas学习笔记

    最近在学python,正好看到一个讲解pandas的系列视频,正好做一下笔记,笔记会参考视频,同时也会参考pand...

网友评论

    本文标题:Pandas 学习笔记

    本文链接:https://www.haomeiwen.com/subject/yqhxgxtx.html