01. Python 工具
02. Python 基础
03. Numpy
- Numpy 简介
- Matplotlib 基础
- Numpy 数组及其索引
- 数组类型
- 数组方法
- 数组排序
- 数组形状
- 对角线
- 数组与字符串的转换
- 数组属性方法总结
- 生成数组的函数
- 矩阵
- 一般函数
- 向量化函数
- 二元运算
- ufunc 对象
- choose 函数实现条件筛选
- 数组广播机制
- 数组读写
- 结构化数组
- 记录数组
- 内存映射
- 从 Matlab 到 Numpy
04. Scipy
05. Python 进阶
- sys 模块简介
- 与操作系统进行交互:os 模块
- CSV 文件和 csv 模块
- 正则表达式和 re 模块
- datetime 模块
- SQL 数据库
- 对象关系映射
- 函数进阶:参数传递,高阶函数,lambda 匿名函数,global 变量,递归
- 迭代器
- 生成器
- with 语句和上下文管理器
- 修饰符
- 修饰符的使用
- operator, functools, itertools, toolz, fn, funcy 模块
- 作用域
- 动态编译
06. Matplotlib
- Pyplot 教程
- 使用 style 来配置 pyplot 风格
- 处理文本(基础)
- 处理文本(数学表达式)
- 图像基础
- 注释
- 标签
- figures, subplots, axes 和 ticks 对象
- 不要迷信默认设置
- 各种绘图实例
07. 使用其他语言进行扩展
- 简介
- Python 扩展模块
- Cython:Cython 基础,将源代码转换成扩展模块
- Cython:Cython 语法,调用其他C库
- Cython:class 和 cdef class,使用 C++
- Cython:Typed memoryviews
- 生成编译注释
- ctypes
08. 面向对象编程
09. Theano 基础
- Theano 简介及其安装
- Theano 基础
- Theano 在 Windows 上的配置
- Theano 符号图结构
- Theano 配置和编译模式
- Theano 条件语句
- Theano 循环:scan(详解)
- Theano 实例:线性回归
- Theano 实例:Logistic 回归
- Theano 实例:Softmax 回归
- Theano 实例:人工神经网络
- Theano 随机数流变量
- Theano 实例:更复杂的网络
- Theano 实例:卷积神经网络
- Theano tensor 模块:基础
- Theano tensor 模块:索引
- Theano tensor 模块:操作符和逐元素操作
- Theano tensor 模块:nnet 子模块
- Theano tensor 模块:conv 子模块
10. 有趣的第三方模块
11. 有用的工具
- pprint 模块:打印 Python 对象
- pickle, cPickle 模块:序列化 Python 对象
- json 模块:处理 JSON 数据
- glob 模块:文件模式匹配
- shutil 模块:高级文件操作
- gzip, zipfile, tarfile 模块:处理压缩文件
- logging 模块:记录日志
- string 模块:字符串处理
- collections 模块:更多数据结构
- requests 模块:HTTP for Human
12. Pandas
一维数据结构:Series
In [1]:
import numpy as np
import pandas as pd
Series
是一维带标记的数组结构,可以存储任意类型的数据(整数,浮点数,字符串,Python
对象等等)。
作为一维结构,它的索引叫做 index
,基本调用方法为
s = pd.Series(data, index=index)
其中,data
可以是以下结构:
- 字典
ndarray
- 标量,例如
5
index
是一维坐标轴的索引列表。
从 ndarray 构建
如果 data
是个 ndarray
,那么 index
的长度必须跟 data
一致:
In [2]:
s = pd.Series(np.random.randn(5), index=["a", "b", "c", "d", "e"])
s
Out[2]:
a -0.032806
b 0.050207
c -1.909697
d -1.127865
e -0.073793
dtype: float64
查看 index
:
In [3]:
s.index
Out[3]:
Index([u'a', u'b', u'c', u'd', u'e'], dtype='object')
如果 index
为空,那么 index
会使用 [0, ..., len(data) - 1]
:
In [4]:
pd.Series(np.random.randn(5))
Out[4]:
0 -0.376233
1 -0.474349
2 1.660590
3 0.461434
4 0.190965
dtype: float64
从字典中构造
如果 data
是个 dict
,如果不给定 index
,那么 index
将使用 dict
的 key
排序之后的结果:
In [5]:
d = {'a' : 0., 'b' : 1., 'c' : 2.}
pd.Series(d)
Out[5]:
a 0
b 1
c 2
dtype: float64
如果给定了 index
,那么将会按照 index
给定的值作为 key
从字典中读取相应的 value
,如果 key
不存在,对应的值为 NaN
(not a number, Pandas
中的缺失默认值):
In [6]:
pd.Series(d, index=['b', 'd', 'a'])
Out[6]:
b 1
d NaN
a 0
dtype: float64
从标量值构造
如果 data
是标量,那么 index
值必须被指定,得到一个值为 data
与 index
等长的 Series
:
In [7]:
pd.Series(5., index=['a', 'b', 'c', 'd', 'e'])
Out[7]:
a 5
b 5
c 5
d 5
e 5
dtype: float64
像 ndarray 一样使用 Series
In [8]:
s
Out[8]:
a -0.032806
b 0.050207
c -1.909697
d -1.127865
e -0.073793
dtype: float64
支持数字索引操作:
In [9]:
s[0]
Out[9]:
-0.032806330572971713
切片:
In [10]:
s[:3]
Out[10]:
a -0.032806
b 0.050207
c -1.909697
dtype: float64
mask
索引:
In [11]:
s[s > s.median()]
Out[11]:
a -0.032806
b 0.050207
dtype: float64
花式索引:
In [12]:
s[[4, 3, 1]]
Out[12]:
e -0.073793
d -1.127865
b 0.050207
dtype: float64
支持 numpy
函数:
In [13]:
np.exp(s)
Out[13]:
a 0.967726
b 1.051488
c 0.148125
d 0.323724
e 0.928864
dtype: float64
像字典一样使用 Series
也可以像字典一样使用 Series
:
In [14]:
s["a"]
Out[14]:
-0.032806330572971713
修改数值:
In [15]:
s["e"] = 12.
s
Out[15]:
a -0.032806
b 0.050207
c -1.909697
d -1.127865
e 12.000000
dtype: float64
查询 key
:
In [16]:
"e" in s
Out[16]:
True
In [17]:
"f" in s
Out[17]:
False
使用 key
索引时,如果不确定 key
在不在里面,可以用 get
方法,如果不存在返回 None
或者指定的默认值:
In [18]:
s.get("f", np.nan)
Out[18]:
nan
向量化操作
简单的向量操作与 ndarray
的表现一致:
In [19]:
s + s
Out[19]:
a -0.065613
b 0.100413
c -3.819395
d -2.255729
e 24.000000
dtype: float64
In [20]:
s * 2
Out[20]:
a -0.065613
b 0.100413
c -3.819395
d -2.255729
e 24.000000
dtype: float64
但 Series
和 ndarray
不同的地方在于,Series
的操作默认是使用 index
的值进行对齐的,而不是相对位置:
In [21]:
s[1:] + s[:-1]
Out[21]:
a NaN
b 0.100413
c -3.819395
d -2.255729
e NaN
dtype: float64
对于上面两个不能完全对齐的 Series
,结果的 index
是两者 index
的并集,同时不能对齐的部分当作缺失值处理。
Name 属性
可以在定义时指定 name
属性:
In [22]:
s = pd.Series(np.random.randn(5), name='something')
s.name
Out[22]:
'something'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论