Pandas学习笔记(一)

Author Avatar
Brian Lee 4月 03, 2018
  • 在其它设备中阅读本文章

Pandas 是Python第三方库,提供高性能易用数据类型和分析工具。基于NumPy实现,常与NumPy和Matplotlib一同使用。


引用

import pandas as pd

组成

  • 两个数据类型:Series(一维数据类型)、DataFrame(多维数据类型)
  • 基于上述数据类型的各类操作:基本操作、运算操作、特征类操作、关联类操作

与NumPy区别

NumPy Pandas
基础数据类型(ndarray) 扩展数据类型(Series、DataFrame)
关注数据的结构表达 关注数据的应用表达
维度与数据间关系 数据与索引间关系

Series类型

组成

Series类型由一组数据及与之相关的数据索引组成

索引

自动索引

自动索引

自定义索引

自定义索引

创建

标量值创建

index表达Series类型的尺寸,不可以省略

import pandas as pd
s = pd.Series(18, index = ['a','b','c'])

输出为:

标量值

列表创建

index与列表元素个数一致

import pandas as pd
b = pd.Series([9, 8, 7, 6], index = ['a','b','c','d'])

输出为:

列表方式

字典创建

键值对中的“键”是索引,index从字典中进行选择操作

import pandas as pd
e = pd.Series({'a':9, 'b':8, 'c':7}, index = ['c','a','b','d'])

输出为:

字典方式

ndarray创建

索引和数据都可以通过ndarray类型创建

import pandas as pd
import numpy as np
m = pd.Series(np.arange(5), index = np.arange(9, 4, -1))

输出为:

ndarray

基本操作

类似ndarray操作
  • 索引方法相同,采用[],自动索引和自定义索引并存,但不能混用
  • NumPy中运算和操作可用于Series类型
  • 可通过自定义索引的列表进行切片
  • 可通过自动索引进行切片,此时自定义索引被一起切片

示例:

示例一

示例二

类似Python字典操作
  • 通过自定义索引访问
  • 保留字in操作(判断键是否存在)
  • 使用.get()方法

示例:

示例三

类型对齐

Series类型在运算中会自动对齐不同索引的数据

示例:

import pandas as pd

a = pd.Series([1, 2, 3], ['c','d','e'])
b = pd.Series([9, 8, 7, 6], ['a','b','c','d'])

print(a + b)

结果为:

示例四

name属性

Series对象和索引都可以有一个名字,存储在属性.name中

示例:

import pandas as pd

b = pd.Series([9, 8, 7, 6], ['a','b','c','d'])
b.name = 'Series对象'
b.index.name = '索引列'

print(b)

结果为:

示例五

修改

Series对象可以随时修改并即刻生效

示例:

示例六


DataFrame类型

介绍

  • DataFrame类型由共用相同索引的一组列组成
  • DataFrame是一个表格型的数据类型,每列值类型可以不同
  • DataFrame既有行索引(index),也有列索引(column)
  • DataFrame常用于表达二维数据,但可以表达多维数据

DF组成

创建

通过二维ndarray对象
import pandas as pd
import numpy as np

d = pd.DataFrame(np.arange(10).reshape(2,5))
print(d)

结果为:

二维ndarray创建

通过Series创建
import pandas as pd

dt = {'one':pd.Series([1,2,3], index = ['a','b','c']),
      'two':pd.Series([9,8,7,6], index = ['a','b','c','d'])}
d = pd.DataFrame(dt)

print(d)

结果为:

Series创建

通过列表字典创建
import pandas as pd

dl = {'one':[1,2,3,4], 'two':[9,8,7,6]}
d = pd.DataFrame(dl, index = ['a','b','c','d'])

print(d)

结果为:

列表字典创建


数据类型操作

重新索引

使用
.reindex(index=None, columns=None, ...)
参数
参数 说明
index, columns 新的行列自定义索引
fill_value 重新索引中,用于填充缺失位置的值
method 填充方法,ffill当前值由前面值填充,bfill由后面值填充
limit 最大填充值
copy 默认True,生成新的对象,False时,新旧相等不复制
示例

重新索引1

重新索引2

索引类型

Series和DataFrame的索引是Index类型,Index对象是不可修改类型

常用方法
方法 说明
.append(idx) 连接另一个Index对象,产生新的Index对象
.diff(idx) 计算差集,产生新的Index对象
.intersection(idx) 计算交集
.union(idx) 计算并集
.delete(loc) 删除loc位置处的元素
.insert(loc, e) 在loc位置增加一个元素e
使用

索引类型

删除指定索引对象

.drop()能够删除Series和DataFrame指定行或列索引

Series

Series删除

DataFrame

DataFrame删除


数据类型运算

算术运算

法则
  • 算术运算根据行列索引,补齐后运算,运算默认产生浮点数
  • 补齐时缺项填充NaN(空值)
  • 二维和一维、一维和零维间为广播运算(如一维中每个元素都要与此零维元素运算)
  • 不同维度间为广播运算,一维Series默认在轴1参与运算
  • 采用+ - * / 符号进行的二元运算产生新的对象
方法
方法 说明
.add(d, **argws) 类型间加法运算,可选参数
.sub(d, **argws) 类型间减法运算,可选参数
.mul(d, **argws) 类型间乘法运算,可选参数
.div(d, **argws) 类型间除法运算,可选参数
示例

算术运算1

算术运算2

比较运算

法则
  • 比较运算只能比较相同索引的元素,不进行补齐
  • 二维和一维(默认在1轴比较)、一维和零维间为广播运算
  • 采用> < >= <= == !=等符号进行的二元运算产生布尔对象
同纬度运算

比较1

不同维度运算

比较2


本博客采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
本文链接:http://brianleelxt.top/2018/04/03/pandas-learn/