利用python进行数据分析(笔记)

《利用python进行数据分析(第二版)》笔记

numpy使用

函数 说明
abs/fabs 计算整数、浮点数或复数的绝对值。对于非复数值,可以使用更快的fabs
sqrt 计算各元素的平方根。相当于arr**0.5
square 计算各元素的平方。相当于arr**2
exp 计算各元素的指数e^x
log/log10/log2/log1p 分别为自然对数(底数为e)、底数为10的log、底数为2的log、log(1 + x)
sign 计算各元素的正负号:1(正数)、0(零)、-1(负数)
ceil 计算各元素的ceiling值,即大于等于该值的最小整数
floor 计算各元素的floor值,即小于等于该值的最大整数
rint 将各元素四舍五入到最接近的整数,保留dtype
modf 将数组的小数和整数部分以两个独立数组的形式返回
isnan 返回一个表示“哪些值是NaN”的布尔型数组
isfinite/isinf 分别返回一个表示“哪些元素是有穷的(非ing,非NaN)”或“哪些元素是无穷的”的布尔型数组
cos/cosh/sin/sinh/tan/tanh 普通型和双曲型三角函数
arccos/arccosh/arcsin/arcsinh/arctan/arctanh 反三角函数
logical_not 计算各元素not x的真值。相当于-arr
add 将数组中对应的元素相加
subtract 从第一个数组中减去第二个数组中的元素
multiply 数组元素相乘
divide/floor_divide 除法或向下圆整除法(丢弃余数)
power 对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A^B
maximum/fmax 元素级的最大值计算。fmax将忽略NaN
minimum/fmin 元素级的最小值计算。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/var 分别为标准差和方差,自由度可调(默认为n)
min/max 最大值和最小值
argmin/argmax 分别为最大或最小元素的索引
cumsum 所有元素的累计和
cumprod 所有元素的累计积
unique(x) 计算x中的唯一元素,并返回有序结果
intersect1d(x, y) 计算x和y中的公共元素,并返回有序结果
union1d(x, y) 计算x和y的并集,并返回有序结果
in1d(x, y) 得到一个表示“x的元素是否包含于y”的布尔型数组
setdiff1d(x, y) 集合的差,即元素在x中且不在y中
setxor1d(x, y) 集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素
  • numpy.linalg函数
函数 说明
diag 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot 矩阵乘法
trace 计算对角线元素的和
det 计算矩阵行列式
eig 计算方阵的本征值和本征向量
inv 计算方阵的逆
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解(SVD)
solve 解线性方程组Ax = b,其中A为一个方阵
lstsq 计算Ax = b的最小二乘解
  • numpy.random函数
函数 说明
seend 确定随机数生成器的种子
permutation 返回一个序列的随机排列或返回一个随机排列的范围
shuffle 返回一个序列就地随机排列
rand 产生均匀分布的样本值
randint 从给定的上下限范围内随机选取整数
randn 产生正态分布(平均值为0,标准差为1)的样本值
binomial 产生二项分布的样本值
normal 产生正态(高斯)分布的样本值
beta 产生Beta分布的样本值
chisquare 产生卡方分布的样本值
gamma 产生Gamma分布的样本值
uniform 产生[0,1)均匀分布的样本值

Pandas使用

  • 可以给DataFrame构造器的数据
类型 说明
二维ndarray 数据矩阵,还可以传入行标和列标
由数组、列表或元组组成的字典 每个序列会变成DataFrame的一列
NumPy的结构化/记录数组 类似于“由数组组成的字典”
由Series组成的字典 每个Series会成为一列。如果没有显式指定索引,则各Series的索引会被合并成结果的行索引
由字典组成的字典 各内层字典会成为一列。键会被合并成结果的行索引,跟“由Series组成的字典”的情况一样
字典或Series的列表 各项将会成为DataFrame的一行。字典键或Series索引的并集将会成为DataFrame的列标
由列表或元组组成的列表 类似于“二维ndarray”
另一个DataFrame 该DataFrame的索引将会被沿用,除非显式指定了其他索引
NumPy的MaskerArray 类似于“二维ndarray”的情况,只是掩码值在结果DataFrame会变成NA/缺失值
  • Index的方法和属性
方法 说明
append 连接另一个Index对象,产生一个新的Index
difference 计算差集,并得到一个Index
intersection 计算交集
union 计算并集
isin 计算一个指示各值是否都包含在参数合中的布尔型数组
delete 删除索引i处的元素,并得到新的Index
drop 删除传入的值,并得到新的Index
insert 将元素插入到索引i处,并得到新的Index
is_monotonic 当各元素均大于等于前一个元素时,返回True
is_unique 当Index没有重复值时,返回True
unique 计算Index中唯一值得数组
  • reindex函数参数
参数 说明
index 用作索引的新序列。既可以是Index实例,也可以是其他序列型的Python数据结构。Index会被完全使用,就像没有任何复制一样
method 插值(填充)方式
fill_value 在重新索引的过程中,需要引入缺失值时使用的替代值
limit 前向或后向填充时的最大填充量
tolerance 向前后向后填充时,填充不准确匹配项的最大间距(绝对值距离)
level 在MultiIndex的指定级别上匹配简单索引,否则选取其子集
copy 默认为True,无论如何都复制,如果为False,则新旧相等就不复制
  • DataFrame索引选项
类型 说明
df[val] 从DataFrame选取单列或一组列:在特殊情况下比较便利:布尔型数组(过滤行)、切片(行切片)、或布尔型DataFrame(根据条件设置值)
df.loc[val] 通过标签,选取DataFram的单个行或一组行
df.loc[:, val] 通过标签,选取单列或子集
df.loc[val1, val2] 通过标签,同时选取行和列
df.iloc[where] 通过整数位置,从DataFrame选取单个行或行子集
df.iloc[where_i, where_j] 通过整数位置,同时选取行和列
df.at[label_i, label_j] 通过行或列标签,选取单一的标量
df.iat[i, j] 通过行和列的位置(整数),选取单一的标量
reindex 通标签选取行或列
get_value, set_value 通过行和列标签选取单一值
  • 计算函数
方法 说明
average 默认:在相等分组中,为各个值分配平均排名
min 使用整个分组的最小排名
max 使用整个分组的最大排名
first 按值在原始数据中的出现顺序分配排名
dense 类似于min方法,但是排名总是在组间增加1,而不是组中相同的元素数
  • 计算函数中约简方法的选项
选项 说明
axis 约简的轴。DataFrame的行用0, 列用1
skipna 排除缺失值,默认值为True
level 如果轴是层次化索引的(即MultiIndex),则根据level分钟约简
  • 描述和汇总统计
方法 说明
count 非NA值得数量
describe 针对Series或各DataFrame列计算汇总统计
min、max 计算最小值和最大值
argmin、argmax 计算能够获取到最小值和最大值得索引位置(整数)
idxmin、idxmax 计算能够获取到最小值和最大值得索引值
quantile 计算样本的分位数(0到1)
sum 值的总和
mean 值的平均数
median 值的算术中位数
mad 根据平均值计算评价绝对离差
var 样本值的方差
std 样本值的标准差
skew 样本值的偏度(三阶距)
kurt 样本值的峰度(四阶距)
cumsum 样本值的累计和
cummin、cummax 样本值的累计最大值和累计最小值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化

数据加载

  • 加载函数
函数 说明
read_csv 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号
read_table 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(’\t’)
read_fwf 读取定宽格式数据(就是没有分隔符)
read_clipboard 读取剪贴板中的数据,可以看做read_table的剪贴板版。再将网页转换成表格时很有用
read_excel 从Excel XLS 或XLSX file 读取表格数据
read_hdf 读取pandas写的HDF5文件
read_html 读取HTML文档中的所有表格
read_json 读取JSON(JavaScript Object Notation)字符串中的数据
read_msgpack 二进制格式编码的pandas数据
read_pickkle 读取Python pickle格式中存储的任意对象
read_sas 读取存储于SAS系统自定义存储格式的SAS数据集
read_sql 读取SQL查询结果为pandas的DataFrame
read_stata 读取Stat文件格式的数据集
read_feather 读取Feather二进制文件格式
  • read_csv/read_table函数参数
参数 说明
path 表示文件系统位置、URL、文件型对象的字符串
sep或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 当解析有歧义的日期时,将其看做国际格式(例如,7/6/2012 -> June 7,2012)。默认为False
date_parse 用作解析日期的函数
nrows 需要读取的行数(从文件开始处算起)
iterator 返回一个TextParser以便逐块读取文件
chunksize 文件块的大小(用于迭代)
skip_footer 需要忽略的行数(从文件末尾处算起)
verbose 打印各种解析器输出信息,比如“非数值列中缺失值的数量”等
encoding 用于unicode的文本编码格式。例如,“utf-8”表示用UTF-8编码的文本
squeeze 如果数据经解析吼仅含一列,则返回Series
thousands 千分位分隔符,如“,”或“.”
  • csv包的CSV语支选项
参数 说明
delimiter 用于分隔字段的单字符串。默认为“,”
lineterminator 用于写操作的行结束符,默认为“\r\n”。读操作将忽略此选项,它能认出跨平台的行结束符
quotechar 用于带有特殊字符(如分隔符)的字段的引用符号。默认为“"”
quoting 引用约定。可选值包括csv.QUOTE_ALL(引用所有字段)、csv.QUOTE_MINIMAL(只引用带有诸如分隔符之类特殊字符的字段)、csv.QUOTE_MNNUMERIC以及csv.QUOTE_NON(不引用)。默认是QUOTE_MINIMAL
skipinitialspace 忽略分隔符后面的空白符。默认为False
doublequote 如果为True,则双写。
escapechar 用于对分隔符进行转义的字符串。(如果quoting被设置为csv.QUOTE_NONE的话)。默认禁用

空值处理

  • 缺失数据处理函数
方法 说明
dropna 根据各标签的值中是否存在缺失数据对轴标签进行过滤,可通过阈值调节对缺失值的容忍度
fillna 用指定值或插值方法(如ffill或bfill)填充缺失数据
isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值/NA,该对象的类型与源类型一样
notnull isnull的否定式
  • fillna函数参数
参数 说明
value 用于填充缺失值的标量值或字典对象
method 插值方式。如果函数调用时未指定其他参数额话,默认为“ffill”
axis 待填充的轴,默认axis=0
inplace 修改调用者对象而不产生副本
limit (对于前向和后向填充)可以连续填充的最大数量
  • python内置字符串函数
方法 说明
count 返回子串在字符串中的出现次数(非重叠)
endswith、startswith 如果字符串以某个后缀结尾(以某个前缀开头),则返回True
join 将字符串用作连接其他字符串序列的分隔符
index 如果在字符串中找到子串,则返回子串第一个字符所在的位置。如果没有找到,则引发ValueError。
find 如果在字符串中找到子串,则返回第一个发现的子串的第一个字符所在的位置。如果没有找到,则返回-1
rfind 如果在字符串中找到子串,则返回最后一个发现的子串的第一个字符所在的位置。如果没有找到,则返回-1
replace 用另一个字符串替换指定子串
strip/rstrip/lstrip 去除空白符(包括换行符)。相当于对各个元素执行x.strip()(以及rstrip/lstrip)。
split 通过指定的分隔符将字符串拆分为一组子串
lower/upper 分别将字母字符转换为小写或大写
ljust/rjust 用空格(或其他字符)填充字符串的空白侧以返回符合最低宽度的字符串
  • pandas字符串处理函数
方法 说明
cat 实现元素级的字符串连接操作,可指定分隔符
count 返回表示某个字符串是否含有指定模式的布尔型数组
extract 使用带分组的正则表达式从字符串Series提取一个或多个字符串,结果是一个DataFrame,每组有一列
endswith 相当于对每个元素执行x.endswith(pattern)
startswith 相当于对每个元素执行x.startswith(pattern)
findall 计算各字符串的模式列表
get 获取各元素的第i个字符
isalnum 相当于内置的str.alnum
isalpha 相当于内置的str.isalpha
isdecimal 相当于内置的str.isdecimal
isdigit 相当于内置的str.isdigit
islower 相当于内置的str.islower
isnumeric 相当于内置的str.isnumeris
isupper 相当于内置的str.isupper
join 根据指定的分隔符将Series中各元素的字符串连接起来
len 计算各字符串的长度
lower,upper 转换大小写。相当于对于各个元素执行x.lower()或x.upper()
match 根据指定的正则表达式对各个元素执行re.match,返回匹配的组为列表
pad 在字符串的左边、右边或两边添加空白符
center 相当于pad(side=‘both’)
repeat 重复值。例如,s.str.repeat(3)相当于对各个字符串执行x*3
replace 用指定字符串替换找到的模式
slice 对Series中的各个字符串进行子串截取
split 根据分隔符或正则表达式对字符串进行拆分
strip 去除两边的空白符,包括新行
rstrip 去除右边的空白符
lstrip 去除左边的空白符

数据规整

  • pd.merge()函数
参数 说明
left 参与合并的左侧DataFarame
right 参与合并的右侧DataFrame
how “inner”、“outer”、“left”、“right”其中之一。默认为“inner”
on 用于连接的列名。必须存在于左右两个DataFrame对象中。如果未指定,且其他连接键也未指定,则以left和right列名的交集作为连接键
left_on 左侧DataFrame中用作连接键的列
right_on 右侧DataFrame中用作连接键的列
sort 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能
suffixes 字符串值元组,用于追加到重叠列名的末尾,默认为(’_x’, ‘_y’)。例如,如果左右两个DataFrame对象都有“data”,则结果中就会出现“data_x”和“data_y”
copy 设置为False,可以在某些特殊情况下将数据复制到结果数据结构中。默认总是复制。
  • pd.merge()函数how选项
选项 说明
inner 使用两个表都有的键
left 使用左表中所有的键
right 使用右表中所有的键
outer 使用两个表中所有的键
  • pd.concat函数
参数 说明
objs 参与连接的pandas对象的列表或字典。唯一必须的参数
axis 指明连接的轴向,默认是0
join “inner”、“outer”其中之一,默认为“outer”。指明其他轴向上的索引是按交集(inner)还是并集(outer)进行合并
join_axes 指明用于其他n-1条轴的索引,不执行并集/交集运算
keys 与连接对象有关的值,用于形成连接轴向上的层次化索引。可以是任意值的列表或数组、元组数据、数组列表(如果将levels设置成多级数组的话)
levels 指定用作层次化索引各级别上的索引,如果设置了keys的话
names 用于创建分层级别的名称,如果设置了keys和(或)levels的话
verify_integrity 检查结果对象新轴上的重复情况,如果发现则引发异常。默认(False)允许重复
ignore_index 不保留连接轴上的索引,产生一组新索引range(total_length)
发布了38 篇原创文章 · 获赞 15 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u013057271/article/details/104483083