Python重要的库
低智商的善良,不如高智商的冷漠——这是一个让人恶心的坏命题。是的,面对复杂的世事,我们需要判断力,爱心拒绝被消费,但不是让你对苦难无所作为无动于衷,不是让你失去同情悲悯之心。应该批判的是说谎者,而不是把矛头指向人们单纯的善良。欺骗应受惩罚,不能因为欺骗就给自己的冷漠找到冠冕堂皇的借口,无论如何不能失去善良的能力。 《中国青年报》
Python教程
扁平结构要比嵌套结构好。——Zen of Python
Python重要库的中文文档地址:《一译中文文档》
- 玩蛇网
- Python 中文学习大本营
安装特定版本
如何使用pip安装特定版本的python第三方包
pip install package==version
#package:包名;version:版本号。如pip install tensorflow-gpu==1.4.0即是安装1.4.0版本的gpu版本的tensorflow
Numpy
精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤。——《利用Python进行数据分析》
Numpy(Numerical Python)是Python科学计算的基础包。具有以下功能:
- 快速高效的多维数组对象ndarray
- ndarray表示的是N维数组对象。
- ndarray是一个通用的同构数据多维容器,也就是说,其中的元素必须都是相同类型的。
- 每个数组里面都有一个shape和一个dtype
- shape表示各个维度大小的元组
- dtype表示数组数据类型
- 除非是显示的设置dtype,否则np.array会尝试推断出数组的数据类型
- 一个具有矢量算数运算和复杂广播(broadcast)能力的快速且节省空间的多维数组。
- ndarray表示的是N维数组对象。
- 用于对数组执行元素级别计算以及直接对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、傅里叶变换,以及随机数生成的功能
- 用于将C、C++、Fortran代码集成到Python的工具
- 作为在算法之间传递数据的容器
Numpy数组在存储和处理数据要比内置的Python数据结构高效得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。
查看Numpy的版本
python -c "import numpy; print numpy.version.version"
方法
数组创建函数列表:
函数名 | 说明 |
---|---|
zeros | 创建指定长度或形状全为0的数组。 |
ones | 创建指定长度或者形状全为1的数组。 |
empty | 创建一个没有任何具体值的数组。 |
arange | 是基于Python原版range函数改进的数组版本。 |
array | 将输入的数据(可以是列表、元组、数组、其他的序列数组)转换为Numpy的ndarray。要是不指定dtype,那么就由该方法推断出dtype。默认直接复制数据。 |
asarray | 将输入的数据转换为Numpy的ndarray。如果输入本身是ndarray就不进行复制操作了。 |
eye | 创建一个N×N的单位矩阵,主对角线为1,其余为0。 |
identity | 创建一个N×N的单位矩阵,主对角线为1,其余为0。 |
一元函数
函数名称 | 说明 |
---|---|
abs | 计算整数、浮点数或者是复数的绝对值。 |
fabs | 计算整数、浮点数的绝对值(比abs快)。 |
sqrt | 计算各个元素的平方根,相当于arr**0.5。 |
square | 计算各个元素的平方,相当于arr**2。 |
exp | 计算各个元素的指数e*。 |
log | 自然对数。 |
log10 | 底数为10的对数。 |
log2 | 底数为2的对数。 |
log1p | 底数为(1+x)的对数。 |
sign | 计算各个元素的正负号:1(正数)、-1(负数)、0(零)。 |
ceil | 计算各元素的ceiling值,即大于等于该值的最小正数。 |
floor | 计算个元素的floor值,即小于等于该值的最大正数。 |
rint | 将个元素四舍五入到最接近的整数,保留dtype。 |
modf | 将数组的小数和整数部分以两个独立数组的形式返回。 |
isnan | 返回一个表示“哪些值是NaN(这不是一个数字)”的布尔值类型。 |
isfinite | 返回一个表示“哪些元素是有穷的(非inf,非NaN)”的布尔值数组。 |
isinf | 返回一个表示“哪些元素是无穷的”的布尔值数组。 |
cos、sin、tan | 三角函数。 |
cosh、sinh、tanh | 双曲型三角函数。 |
arccos、arcsin、arctan | 反三角函数。 |
arccosh、arcsinh、arctanh | 双曲型反三角函数。 |
logical_not |
计算各个元素not x 的真值,相当于-arr。
|
- 说明:
- NaN表示
not a number
,即非数字。
- NaN表示
二元函数
函数名称 | 说明 |
---|---|
add | 将数组中对应的元素相加。 |
subtract | 从第一个数组中减去第二个数组中元素。 |
multiply | 数组元素相乘。 |
divide | 除法。 |
floor_divide | 向下取整除法。 |
power | 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A^B的值。 |
maxmum | 取最大值。 |
fmax | 除NaN外的最大值。 |
minimum | 取最小值。 |
fmin | 除NaN外的最小值。 |
mod | 取余数。 |
copysign | 将第二个数组中的值的符号复制给第一个数组中的值。 |
greater | 大于。 |
greater_equal | 大于等于。 |
less | 小于。 |
less_equal | 小于等于。 |
equal | 等于。 |
not_equal | 不等于。 |
logical_and | 逻辑与(&)。 |
logical_or | 逻辑或(|)。 |
logical_xor | 逻辑异或(^)。 |
基本数组统计方法
名称 | 说明 |
---|---|
sum | 对数组中全部或者是某个轴向的所有元素进行求和。零长度的数组的sum值为0。 |
mean | 算术平均值。零长度的数组的mean值为NaN。 |
std |
标准差。 自由度可调整(默认为n)。 |
var |
方差。 自由度可调整(默认为n)。 |
min | 返回数组中的最小元素。 |
max | 返回数组中的最大元素。 |
argmin | 返回数组中最小元素的索引。 |
argmax | 返回数组中最大元素的索引。 |
median |
返回数组的中位值。 注意,该方法不会对数组进行排序。 数组个数为奇数个返回最中间一个数字,偶数个返回最中间两位的均值。 |
ravel | 将多维数组展平多一维数组。 |
cov | 协方差。 |
布尔型数组方法
名称 | 说明 |
---|---|
any |
数组中是否存在一个或者多个True。 如果存在就返回True,反之,返回False。 |
all |
数组中是否全部为True。 如果所有数组中所有元素都是True就返回True,反之,返回False。 |
数组集合运算
名称 | 说明 |
---|---|
unique(x) | 有序返回x中所有的唯一元素。 |
intersect1d(x, y) | 有序返回x和y中的公共元素。 |
union1d(x, y) | 有序返回x和y的并集。 |
in1d(x, y) | 返回一个表示“x的元素是否包含于y”的布尔型数组。存在用True表示,不存在用False表示。 |
setdiff1d(x, y) | 返回存在于x但是不存在于y的集合差。 |
setxor1d(x, y) | 返回存在于一个数组中但是不同时存在于两个数组中的元素的对称差集合。 |
数组操作
名称 | 说明 |
---|---|
searchsorted | searchsorted函数为指定的插入值返回一个在有序数组中的索引位置,从这个位置插入可以保持数组的有序性。 |
extract | 从数组中抽取元素。 |
cumsum | 所有元素的累计和。 |
cumprod | 所有元素的累计积。 |
矩阵
名称 | 说明 |
---|---|
mat |
创建一个矩阵。 注意:mat函数创建矩阵时,若输入已为matrix或ndarray对象,则不会为它们创建副本。因此,调用mat函数和调用matrix(data, copy=False)等价。 |
T | 转置。mat.T |
I | 逆矩阵。mat.I |
bmat |
分块矩阵,可以用小的矩阵来创建大的矩阵。矩阵A,矩阵B,矩阵C,C=bmat("A B;B A")
|
线性代数
线性代数是数学的一个重要分支。numpy.linalg
模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
名称 | 说明 |
---|---|
dot |
矩阵乘法。 用法:x.dot(y) 或者是np.dot(x, y) |
diag | 以一维数组的形式返回方阵中的对角线(或者非对角线)元素,或将一维数组转换为方针(非对角线元素为0)。 |
trace | 计算对角线元素的和。 |
det | 计算矩阵行列式。 |
eig | 计算矩阵的本征值和本征向量。 |
inv | 计算矩阵的逆,即求逆矩阵。 |
pinv | 计算矩阵的Moore-Penrose伪逆。 |
qr | 计算QR分解。 |
svd | 计算奇异值分解(SVD)。 |
solve | 解线性方程组Ax=b,其中A是一个方阵。 |
lstsq | 计算Ax=b的最小二乘积。 |
随机数
这些是numpy.random的函数:
名称 | 说明 |
---|---|
seed | 确定随机数生成器的种子。 |
permutation | 返回一个序列的随机排列或返回一个随机排列的范围。 |
shuffle | 对一个序列就地随机排序。 |
rand | 产生均匀分布的样本值。 |
randint | 从给定的上下限范围内随机选取整数。 |
randn | 产生正态分布(平均值为0,标准差为1)的样本值,类似于MATLAB接口。 |
binomial | 产生二项分布的样本值。 |
normal | 产生正态(高斯)分布的样本值。 |
beta | 产生Beta分布的样本值。 |
chisquare | 产生卡方分布的样本值。 |
gamma | 产生Gamma分布的样本值。 |
uniform | 产生[01)中均匀分布的样本值。 |
专用函数
名称 | 说明 |
---|---|
sort | 函数返回排序后的数组。 |
lexsort | 函数根据键值的字典序进行排序。 |
argsort | 函数返回输入数组排序后的下标。 |
ndarray
名称 | 说明 |
---|---|
sort | 函数可对数组进行原地排序。 |
msort | 函数沿着第一个轴排序。 |
sort_complex | 函数对复数按照先实部后虚部的顺序进行排序。 |
金融函数
名称 | 说明 |
---|---|
fv | 函数计算所谓的终值(future value),即基于一些假设给出的某个金融资产在未来某一时间点的价值。 |
pv | 函数计算现值(present value),即金融资产当前的价值。 |
npv | 函数返回的是净现值(net present value),即按折现率计算的净现金流之和。 |
pmt | 函数根据本金和利率计算每期需支付的金额。 |
irr | 函数计算内部收益率(internal rate of return)。 内部收益率是是净现值为0时的有效利率,不考虑通胀因素。 |
mirr | 函数计算修正后内部收益率(modified internal rate of return),是内部收益率的改进版本。 |
nper | 函数计算定期付款的期数。 |
API文档
- Numpy1.13.dev0文档
Pandas
Pandas(Python Data Analysis Library)是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的(让以Numpy为中心的应用变得更加简单)。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
数据结构 | 说明 |
---|---|
Series |
一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。 如果传入的数据找不到对应的列,就将结果置为NaN。 |
Time- Series | 以时间为索引的Series。 |
DataFrame |
二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。 如果传入的列在数据中找不到,就会产生NA值。 如果赋值是一个Series,就会精确匹配DataFrame中的索引,并且所有的空位都会被填充NaN。 |
Panel | 三维的数组,可以理解为DataFrame的容器。 |
Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
Series
Series的字符串的表现形式为:索引在左边,值在右边。
Series的最重要的一个功能就是它在算术运算中会自动对齐不同索引的数据。
Series的索引切片和原Python的切片是不一样的,这里的test['a':'c']
中ac都是包含的,而原Python中的切片中c
是不包含的。
DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等等)。
DataFrame可以既有行索引又有列索引,他可以被看做是由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或者多个二维块存放的(而不是列表、字典或者是别的一维数据结构)。
注意:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是Pandas中许多高级数据处理功能的关键要素)。
我们可以通过类似字典标记的方式或者属性的方式,获取DataFrame中的一个Series,比如frame['name']
这种形式。
注意:返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应的设置好了。行也可以通过位置或者名称的方式进行获取,比如用索引字段ix。
注意:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何修改全部都会反映到源DataFrame上。通过Series的copy方法即可显式地复制列。
Index的方法和属性
名称 | 说明 |
---|---|
append | 连接另一个Index对象,产生一个新的Index。 |
diff | 计算差集,并得到一个Index。 |
intersection | 计算交集。 |
union | 计算并集。 |
delete | 删除索引i处的元素,并得到新的Index。 |
drop | 删除传入的值,并得到新的Index。 |
insert | 将元素插入到索引i处,并得到新的Index。 |
is_monotonic | 当各个元素大于等于前一个元素的时候,返回True。 |
is_unique | 当Index唯一的时候,返回True。 |
unique | 返回在数组中Index唯一的元素构成的数组。 |
reindex
reindex函数的参数列表
参数 | 说明 |
---|---|
index | 用作索引的新序列。既可以是Index实例,也可以是其他序列型的Python数据结构。Index会被完全使用,就像没有任何复制一样。 |
method | 插值(填充)方式,具体参数见下面表格。 |
fill_value | 在重新索引的过程中,需要引入缺失值是使用的替代值。 |
limit | 前向或者后向填充时的最大填充量。 |
level | 在MultiIndex的指定级别上匹配简单索引,否则选取其子集。 |
copy | 无论如何复制,默认为True;如果是False,则新旧相等的话就不复制了。 |
reindex函数method参数
参数 | 说明 |
---|---|
ffill | 前向填充值。 |
pad | 前向搬运值。 |
bfill | 后向填充值。 |
backfill | 后向搬运值。 |
算术方法
方法 | 说明 |
---|---|
add | 加法 |
sub | 减法 |
div | 除法 |
mul | 乘法 |
约简方法的常用选项
选项 | 说明 |
---|---|
axis | 约简的轴。DataFrame的行用0表示,列用1表示。 |
skipna | 排除缺失值,默认值为True。 |
level | 如果轴是层次化索引的(即MultiIndex),则根据level分组约简。 |
描述统计方法
方法 | 说明 |
---|---|
count | 非NA值的数量。 |
describe | 针对Series或者各个DataFrame列计算汇总统计。 |
min | 最小值。 |
max | 最大值。 |
argmin | 计算能够获取到最小值的索引位置。(整数) |
argmax | 计算能够获取到最大值的索引位置。(整数) |
idxmin | 计算能够获取到最小值的索引值。 |
idxmax | 计算能够获取到最大值的索引值。 |
quantile | 计算样本的分位数(0到1)。 |
sum | 值的总和。布尔值会被强制转换为1(True)和0(False)。 |
mean | 值的平均值。 |
median | 值的算术中位数。(50%中位数) |
mad | 根据平均值计算平均绝对离差。 | |
var | 样本值的方差。 |
std | 样本值的标准差。 |
skew | 样本值的偏度(三阶矩)。 |
kurt | 样本值的峰度(四阶矩)。 |
cumsum | 样本值的累积和。布尔值会被强制转换为1(True)和0(False)。 |
cummin | 样本值的累计最大值。 布尔值会被强制转换为1(True)和0(False)。 |
cummax | 样本值的累计最小值。布尔值会被强制转换为1(True)和0(False)。 |
cumprod | 样本值的累计积。布尔值会被强制转换为1(True)和0(False)。 |
diff | 计算一阶差分(对时间序列很有用)。 |
pct_change | 计算百分数变化。 |
NA处理方法
方法 | 说明 |
---|---|
dropma |
根据各个标签中是否存在缺失数据对轴标签进行过滤,可通过阀值调节对缺失值的容忍度。 在DataFrame中,dropna默认丢弃任何含有缺失值的行。 |
fillna |
用指定值或者插值方法(如ffill或者是bfill)填充缺失数据。使用方法:fillna(0) 。fillna默认返回新的对象,但也可以对现有对象进行就地修改(使用参数inplace=True)。 |
isnull | 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值NA,该对象的类型与源类型一样。 |
notnull | isnull的否定式。 |
解析函数
以下将文本数据转换为DataFrame时所用到的一些技术,这些函数的选项可以分为以下的几个大类:
索引:将一个或者多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名。
类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等等。
日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果中的单个列。
不规整数据问题:跳过一些行、页脚、注释或者其他不重要的东西(比如由成千上万个逗号隔开的数值数据)。
函数 | 说明 |
---|---|
read_csv | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符是逗号。 |
read_table | 从文件、URL、文件型文件中加载带分隔符的数据。默认分隔符是制表符(’\t’)。 |
read_fwf | 读取定宽格式的数据(也就是说没有分隔符)。 |
read_clipboard | 读取剪切板中的数据,可以看做read_table的剪切板。在将网页转换为表格的时候很有用。 |
fillna函数的参数
参数 | 说明 |
---|---|
value | 用于填充缺失值的标量值或者字典对象。 |
method | 插值方式。如果函数调用时未指定其他参数的时候,默认为“ffill”。 |
axis | 待填充的轴,默认axis=0。 |
inplace | 修改调用者对象而不产生副本。 |
limit | (对于前向或者后向填充)可以连续填充的最大数量。 |
read_csv和read_table函数的参数
参数 | 说明 |
---|---|
path | 表示文件系统的位置、URL、文件型对象的字符串。 |
sep |
用于对行中各字段进行拆分的字符序列或者正则表达式。 比如用于保存数据的时候,可以指定seq来自定义分隔符。 |
na_rep | 指定缺失值保存格式(默认是空字符串)。 |
delimiter | 用于对行中各字段进行拆分的字符序列或者正则表达式。 |
header | 用作列名的行号。默认是0(第一行),如果没有header行就应该设置为None。 |
index_col | 用作索引的列编号或者列号。可以是单个名称/数字或者由多个名称/数字组成的列表(层次化索引)。 |
names | 用于结果的列名列表,结合header=None。 |
skiprows | 需要忽略的行数(从文件开始处算起),或需要跳过的列号列表(从0开始)。 |
na_values | 一组用于替换NA的值。 |
comment | 用于将注释信息从行尾拆分出去的字符(一个或者多个)。 |
parse_dates | 尝试将数据解析为日期,默认为False。如果为True,则尝试解析所有列。此外,还可以指定需要解析的一组列号或者列名。如果列表的元素为列表或者元组的话,就会将多个列组合到一起再进行日期解析工作(例如,日期/时间分别位于两个列中)。 |
keep_date_col | 如果连接多列解析日期,则保持参与连接的列。默认为False。 |
converters | 由列号/列名跟函数之间的映射关系组成的字典。例如,{‘foo’:f}会对foo列的所有值应用函数f。 |
dayfirst | 当解析有歧义的日期的时候,将其当做国际格式(例如,8/28/2017->Augest 28,2017)。默认为False。 |
date_parse | 用于解析日期的函数。 |
nrows |
需要解析的行数(文件开始处算起)。 避免读取整个文件。 |
iterator | 返回一个TextParse以便逐块读取文件。 |
chunksize |
文件块的大小(用于迭代)。 需要逐块读取文件,可以设置chunksize的大小。 |
skip_footer | 需要忽略的行数(从文件末尾处算起)。 |
verbose | 打印各种解析器输出信息,比如“非数值列中缺失值的数量”等等。 |
encoding | 用于将unicode的文本编码格式。例如:“utf-8”表示用UTF-8编码的文本。 |
squeeze | 如果数据经过解析后仅含有一列,则返回False。 |
thousands | 千分位分隔符,如",“或者”."。 |
csv.Dialect的属性
参数 | 说明 |
---|---|
delimiter | 用于分割字段的单个字符串,默认为“,”。 |
lineterminator | 用于写操作的行结束符,默认为“\r\n”。读操作将忽略此选项,它能认出跨平台的行结束符。 |
quotechar | 用于带有特殊字符(如分隔符)的字段的引用符号。默认为“"”。 |
quoting | 引用约定。可选值包括csv.QUOTE_ALL(引用所有字段)、csv.QUOTE_MINIMAL(只引用带有诸如分隔符之类特定字符的字段)、完善信息请参考Python的文档。默认为QUOTE_MINIMAL。 |
skipinitialspace | 忽略分隔符后面的空白符。默认为False。 |
doublequote | 如何处理字段内的引用符号。如果为True,则双写。完整信息及行为请参见在线文档。 |
escapechar | 用于对分隔符进行转义的字符串(如果quoting被设置为csv.QUOTENONE的话),默认禁用。 |
注意: 对于那些使用复杂分隔符或者多字符分隔符的文件,csv模块就无能为力了。这种情况下,你就只能使用字符串的spilt方法或正则表达式方法re.spilt进行拆分和其他整理工作了。
使用HDF5格式
很多工具都能实现高效地读写磁盘上以二进制格式存储的科学数据。HDF5就是其中一个流行的工业级库,它是一个C库,带有很多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(Hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更加高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。
Python中的HDF5有两个接口(PyTables和h5py),它们各自采用了不同的问题解决方式。h5py提供了一种直接而高级的HDF5API访问接口,而PyTables则抽象了HDF5许多细节以提供对核外计算技术(out-of-core computation)的某些支持。
pandas有一个最小化的类似字典的HDFStore类,它通过PyTables存储pandas对象。
由于许多数据分析问题都是IO密集型(而不是CPU密集型),利用HDF5这样的工具能显著提升应用程序的效率。
警告:HDF5不是数据库。它最适合用作“一次写多次读”的数据集。虽然数据可以在任何时候被添加到文件中,但如果同时发生多个写操作,文件就有可能被破坏。
使用
- Pandas的读取方法为:
HDFStore
; - 关闭读取
store.close()
,os.remove('mydata.h5')
。
读取Excel文件
Pandas的ExcelFile类支持读取存储在Excel中的表格型数据。xls_file = pd.ExcelFile('data.xls')
读取二进制文件
- 使用Pandas的
to_pickle
转换为二进制文件。 - 使用Pandas的
read_pickle
将二进制文件读取出来。 - 警告:pickle仅仅建议用于短期存储格式。其原因是很难保证该格式永远是最稳定的;今天pickle的对象可能无法被后续版本的库unpickle出来。
数据清理转换合并重塑
Pandas和Python标准库提供了一组高级的、灵活的、高效的核心函数和算法,它们使你能够轻松将数据规整化为正确的形式。
合并数据集
以下都是Pandas中的方法:
方法 | 说明 |
---|---|
merge | 可以根据一个或者多个键值将不同的DataFrame中的行连接起来。SQL或其他关系型数据库的用户对此应该比较熟悉,因为它实现得到就是数据库的连接操作。 |
concat | 可以沿着一条轴将多个对象堆叠到一起。 |
combine_first | 可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。 |
merge函数的参数
参数 | 说明 |
---|---|
left | 参与合并的左侧的DataFrame。 |
right | 参与合并的右侧的DataFrame。 |
how |
“inner”, “outer”, “left”, “right”其中之一。 默认为“inner”。 |
on | 用于连接的列名。必须存在于左右两个DataFrame对象中。如果未指定,且其他连接键也未指定,则以left和right列名的交集作为连接键。 |
left_on | 左侧DataFrame中用作连接键的列。 |
right_on | 右侧DataFrame中用作连接键的列。 |
left_index | 将左侧的行索引用作其连接键。 |
right_index | 将右侧的行索引用作其连接键。 |
sort | 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集的时候,禁用该选项可以获得更好的性能。 |
suffixes | 字符串值元组,用于追加到重叠列名的末尾,默认为(’_x’,’_y’)。例如,如果左右两个DataFrame对象都有“data”,则结果中就会出现“data_x”和“data_y”。 |
copy | 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是复制。 |
API文档
- Pandas 0.20.3文档
- 石卓林的博客 -十分钟搞定pandas
matplotlib
Matplotlib是最流行的用于绘制数据图表的Python库。
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
Matplotlib简易教程
- Python Matplotlib简易教程
API文档
- Matplotlib
- Matplotlib图像示例
- Matplotlib Tutorial(译)
IPython
IPython是Python科学计算标准工具集合的组成部分,它将其他所有的东西联系到了一起。它为交互式和探索式计算提供了一个强健而高效的环境。它是一个增强的Python Shell, 目的是为了提高编写、测试、调试Python代码的速度。它主要用于交互式数据处理和利用Matplotlib对数据进行可视化处理。
架构 |
---|
强大的交互式 shell |
Jupyter 内核 |
交互式的数据可视化工具 |
灵活、可嵌入的解释器 |
易于使用,高性能的并行计算工具 |
安装
ipython notebook目前已经整合为Jupyter notebook。安装如下:
sudo pip3 install jupyter notebook
使用
在任意一个文件夹下面执行下面的指令:
jupyter notebook
Scipy
Scipy是一组专门解决科学运算中各种标准问题域的包的集合,主要包括下面的这些包:
包名 | 作用 |
---|---|
scipy.integrate | 数值积分例程和微分方程求解器 |
sicpy.linalg | 扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。 |
scipy.optimize | 函数优化器(最小化器)以及根查找算法。 |
scipy.signal | 信号处理工具。 |
scipy.sparse | 稀疏矩阵和稀疏线性系统求解器。 |
scipy.special | SPECFUN(这是一个实现了很多常用数学函数,比如伽马函数的Fortran库)的包装器。 |
scipy.stats | 标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计校验方法,以及更好的描述统计方法。 |
scipy.weave | 利用内联C++代码加速数组计算的工具。 |
Numpy和Scipy的有机结合可以替代MATLAB的计算功能(包括其插件工具箱)。
API文档
- Scipy
- Scipy Lecture Notes学习笔记
- scientific-python-lectures Jupyter
数据可视化
Seaborn
Plotly Python Library
机器学习
Anaconda
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
- 点我跳转
- Anaconda使用总结
安装Tensorflow
安装Anaconda
chmod +x Anaconda3.sh
./Anaconda3.sh
- 之后就会自动安装完所有的环境。
- 修改源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- 配置:
vim ~/.bashrc
export PATH="/home/python/anaconda3/bin:$PATH"
source ~/.bashrc
- 开始安装Tensorflow。
补齐库:
# Ubuntu/Linux 64-bit $ sudo apt-get install python-pip python-dev # CentOS, Fedora, RHEL $ sudo yum install python-pip python-devel # Mac OS X $ sudo easy_install pip
首先,创建一个叫做的
tensorflow
虚拟环境:conda create -n tensorflow pip python=3.5 # 或者 python=3.6,等等。
启动我们创建的虚拟环境
source activate tensorflow
安装Tensorflow:
(tensorflow)$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.1.0-cp35-none-linux_x86_64.whl
之后就会自动安装所有的依赖了。
Tensorflow
- 清华大学开源软件镜像站
- 官网
- 安装教程
- Tensorflow案例大全——luyishisi/tensorflow
- TensorFlow识别字母扭曲干扰型验证码-开放源码与98%模型
- Tensorflow教学案例——luyishisi/tensorflow
综合
- 用python做科学计算 五星推荐的中文学习资料!!!
- scikit-learn
Cluster-聚类算法
- Comparing Python Clustering Algorithms
GA(Genetic Algorithm)
- Pyevolve documentation
附录
- 《利用Python进行数据分析》
- 《Python高手之路》
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
Python重要的库相关推荐
- python内置库之学习ctypes库(二)
ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- python 脚本撞库国内“某榴”账号
其实日常生活中我们的用户名和密码就那么几个,所以这给撞库带来了可能,本文主要给出python脚本撞库的一点粗浅代码.这里只讨论技术本生,代码中某榴的地址也已经改掉,避免被管理员误解禁言等发生,谢谢大家 ...
- Python中lxml库的安装(Windows平台)
之前写过<Python中requests包的安装>,今天我需要安装lxml库,这里我尝试之前安装requests方式,但是没有成功,几经周折,终于总结出来了一个方法,这里拿出来给大家分享. ...
- 第四章 python的turtle库的运用
我们可以尝试用python的自带turtle库绘制一条蟒蛇 首先我们设计一下蟒蛇的基本形状 我们先把这段蟒蛇绘制的实例代码贴出来,各位可以在自己的本地运行一下看看效果,然后我们再继续分析代码: 1 # ...
- python相对路径库_如何最简单、通俗地理解Python的搜索路径、相对路径、绝对路径?...
目录: 一.笔记 二.我的自学路线 三.笔记目录 一.笔记 1) 搜索路径 ① 能导入模块的话,表示搜索路径中有这个模块文件. ② 当你导入一个模块,Python解析器对模块位置的搜索顺序是:1. 当 ...
- python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...
- c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- Java 爬虫--类似Python的requests库--HttpClient, HttpAsyncClient--Maven
今天在找Java的爬虫的库,发现Java的爬虫框架挺多的,常见的有nutch,Heritrix,crawler4j等. 但我想要的是类似Python的requests库的Java库. 看到一个库叫Un ...
- python opencv创建图像_使用Python中OpenCV库创建一幅图片的RGB通道图片
我们知道,在使用PhotoShop进行图片的抠取.创建和存储选区.存储图像的色彩资料等复杂操作时,经常会用到一个功能,那就是"RGB"通道,它能从三原色角度对一幅图片进行精准处理. ...
最新文章
- iframe中请求页面而session失效时页面跳转问题
- m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么
- VNC viewer远程连接linux桌面
- c# char unsigned_c – unsigned char和char指针之间的区别
- python 3.x 不再支持MySQLdb 模块
- leetcode题解20-有效的括号
- CentOS 5.2 LVM 新增加一块硬盘的方法
- HDFS API操作的访问方式及JUnit测试类的使用
- Hadoop工程包架构解析
- Microsoft.NET离线运行库合集
- iOS 开发者应该知道的 ARM 结构(转自apple4us)
- 解决WPS在Linux下字体缺失
- 「小程序JAVA实战」小程序的个人信息作品,收藏,关注(66)
- 阿里云域名购买流程和备案流程
- AE基础教程第一阶段——07 区域显示,透明网格
- 隐藏label标签中指定文字
- 霍尔效应传感器的典型应用场合解析
- BIOS入门基础------与BMC通信(IPMI)
- 读《达·芬奇密码》| 一场侦探式的宗教传道
- win7卸载avast杀毒软件的步骤--win10专业版
热门文章
- Linux ===> Linux设置临时ip命令
- 制作日期开头的流水条形码
- 解决cron不执行的问题
- 4.TryParse比Parse好
- Rails bundle install卡住问题
- 华为麒麟芯片用在服务器上,细说华为麒麟芯片不对外出售的五大原因
- typescript的基本结构_TypeScript 源码详细解读(1)总览
- pycharm中python镜像源介绍与配置-提升下载库的速度
- MindManager2020 安装 和 使用
- 初学HTML代码笔记3终结篇之列表和表单(pink老师)