数据分析流程记录

  • Post author:
  • Post category:其他




numpy方法


表1:通用一元函数

函数 说明

abs

/

fabs
求绝对值的函数

sqrt
求平方根的函数,相当于

array ** 0.5

square
求平方的函数,相当于

array ** 2

exp
计算



e

x

e^x







e










x












的函数


log

/

log10

/

log2
对数函数(

e

为底 /

10

为底 /

2

为底)

sign
符号函数(

1

– 正数;

0

– 零;

-1

– 负数)

ceil

/

floor
上取整 / 下取整

isnan
返回布尔数组,NaN对应

True

,非NaN对应

False

isfinite

/

isinf
判断数值是否为无穷大的函数

cos

/

cosh

/

sin
三角函数

sinh

/

tan

/

tanh
三角函数

arccos

/

arccosh

/

arcsin
反三角函数

arcsinh

/

arctan

/

arctanh
反三角函数

rint

/

round
四舍五入函数


表2:通用二元函数

函数 说明

add(x, y)

/

substract(x, y)
加法函数 / 减法函数

multiply(x, y)

/

divide(x, y)
乘法函数 / 除法函数

floor_divide(x, y)

/

mod(x, y)
整除函数 / 求模函数

allclose(x, y)
检查数组

x



y

元素是否几乎相等

power(x, y)
数组



x

x






x





的元素



x

i

x_i







x










i





















和数组



y

y






y





的元素



y

i

y_i







y










i





















,计算



x

i

y

i

x_i^{y_i}







x










i










y










i






































maximum(x, y)

/

fmax(x, y)
两两比较元素获取最大值 / 获取最大值(忽略NaN)

minimum(x, y)

/

fmin(x, y)
两两比较元素获取最小值 / 获取最小值(忽略NaN)

inner(x, y)
内积运算

cross(x, y)

/

outer(x, y)
叉积运算 / 外积运算

intersect1d(x, y)
计算

x



y

的交集,返回这些元素构成的有序数组

union1d(x, y)
计算

x



y

的并集,返回这些元素构成的有序数组

in1d(x, y)
返回由判断

x

的元素是否在

y

中得到的布尔值构成的数组

setdiff1d(x, y)
计算

x



y

的差集,返回这些元素构成的数组

setxor1d(x, y)
计算

x



y

的对称差,返回这些元素构成的数组


补充说明

:在二维空间内,两个向量



A

=

[

a

1

a

2

]

\boldsymbol{A}=\begin{bmatrix} a_1 \\ a_2 \end{bmatrix}








A






=










[














a










1

























a










2




































]











B

=

[

b

1

b

2

]

\boldsymbol{B}=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}








B






=










[














b










1

























b










2




































]







的叉积是这样定义的:



A

×

B

=

a

1

a

2

b

1

b

2

=

a

1

b

2

a

2

b

1

\boldsymbol{A}\times \boldsymbol{B}=\begin{vmatrix} a_1 \quad a_2 \\ b_1 \quad b_2 \end{vmatrix}=a_1b_2 – a_2b_1








A






×










B






=











































































a










1





















a










2

























b










1





















b










2





























































































=









a










1



















b










2






























a










2



















b










1





















,其中



a

1

a

2

b

1

b

2

\begin{vmatrix} a_1 \quad a_2 \\ b_1 \quad b_2 \end{vmatrix}









































































a










1





















a










2

























b










1





















b










2






























































































称为行列式。但是一定要注意,叉积并不等同于行列式,行列式的运算结果是一个标量,而叉积运算的结果是一个向量。如果不明白,我们可以看看三维空间两个向量,



A

=

[

a

1

a

2

a

3

]

\boldsymbol{A}=\begin{bmatrix} a_1 \\ a_2 \\ a_3 \end{bmatrix}








A






=

























































a










1

























a










2

























a










3
















































































B

=

[

b

1

b

2

b

3

]

\boldsymbol{B}=\begin{bmatrix} b_1 \\ b_2 \\ b_3 \end{bmatrix}








B






=

























































b










1

























b










2

























b










3












































































的叉积是



<

i

^

a

2

a

3

b

2

b

3

,

j

^

a

1

a

3

b

1

b

3

,

k

^

a

1

a

2

b

1

b

2

>

\left< \hat{i} \begin{vmatrix} a_2 \quad a_3 \\ b_2 \quad b_3 \end{vmatrix}, -\hat{j} \begin{vmatrix} a_1 \quad a_3 \\ b_1 \quad b_3 \end{vmatrix}, \hat{k} \begin{vmatrix} a_1 \quad a_2 \\ b_1 \quad b_2 \end{vmatrix} \right>




















i







^












































































a










2





















a










3

























b










2





















b










3





























































































,















j







^





















































































a










1





















a










3

























b










1





















b










3





























































































,












k







^












































































a










1





















a










2

























b










1





















b










2




































































































,其中



i

^

,

j

^

,

k

^

\hat{i}, \hat{j}, \hat{k}














i







^







,












j







^
















,












k







^










代表每个维度的单位向量。



其他常用函数


表3:NumPy其他常用函数

函数 说明

unique
去除数组重复元素,返回唯一元素构成的有序数组

copy
返回拷贝数组得到的数组

sort
返回数组元素排序后的拷贝

split

/

hsplit

/

vsplit
将数组拆成若干个子数组

stack

/

hstack

/

vstack
将多个数组堆叠成新数组

concatenate
沿着指定的轴连接多个数组构成新数组

append

/

insert
向数组末尾追加元素 / 在数组指定位置插入元素

argwhere
找出数组中非0元素的位置

extract

/

select

/

where
按照指定的条件从数组中抽取或处理数组元素

flip
沿指定的轴翻转数组中的元素

fromiter
通过迭代器创建数组对象

fromregex
通过读取文件和正则表达式解析获取数据创建数组对象

repeat

/

tile
通过对元素的重复来创建新数组

roll
沿指定轴对数组元素进行移位

resize
重新调整数组的大小

place

/

put
将数组中满足条件的元素/指定的元素替换为指定的值

ptp
沿指定的轴计算极差(最大值与最小值的差)

median
沿指定轴计算中位数

partition
用选定的元素对数组进行一次划分并返回划分后的数组


提示

:上面的

resize

函数和

ndarray

对象的

resize

方法是有区别的,

resize

函数在调整数组大小时会重复数组中的元素作为填补多出来的元素的值,而

ndarry

对象的

resize

方法是用0来填补多出来的元素。这些小细节不清楚暂时也不要紧,但是如果用到对应的功能了就要引起注意。



numpy矩阵对象的属性。

属性 说明

A
获取矩阵对象对应的

ndarray

对象

A1
获取矩阵对象对应的扁平化后的

ndarray

对象

I
可逆矩阵的逆矩阵

T
矩阵的转置

H
矩阵的共轭转置

shape
矩阵的形状

size
矩阵元素的个数



NumPy的线性代数模块

函数 说明

diag
以一维数组的形式返回方阵的对角线元素或将一维数组转换为方阵(非对角元素元素为0)

vdot
向量的点积

dot
数组的点积

inner
数组的内积

outer
数组的叉积

trace
计算对角线元素的和

norm
求模(范数)运算

det
计算行列式的值(在方阵上计算会得到一个标量)

matrix_rank
计算矩阵的秩

eig
计算矩阵的特征值(eigenvalue)和特征向量(eigenvector)

inv
计算非奇异矩阵(



n

n






n





阶方阵)的逆矩阵


pinv
计算矩阵的摩尔-彭若斯(Moore-Penrose)广义逆

qr
QR分解(把矩阵分解成一个正交矩阵与一个上三角矩阵的积)

svd
计算奇异值分解(singular value decomposition)

solve
解线性方程组



A

x

=

b

\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}








A






x






=










b







,其中



A

\boldsymbol{A}








A







是一个方阵


lstsq
计算



A

x

=

b

\boldsymbol{A}\boldsymbol{x}=\boldsymbol{b}








A






x






=










b







的最小二乘解



Pandas属性和方法

Series对象的常用属性如下表所示。

属性 说明

dtype

/

dtypes
返回

Series

对象的数据类型

hasnans
判断

Series

对象中有没有空值

at

/

iat
通过索引访问

Series

对象中的单个值

loc

/

iloc
通过一组索引访问

Series

对象中的一组值

index
返回

Series

对象的索引

is_monotonic
判断

Series

对象中的数据是否单调

is_monotonic_increasing
判断

Series

对象中的数据是否单调递增

is_monotonic_decreasing
判断

Series

对象中的数据是否单调递减

is_unique
判断

Series

对象中的数据是否独一无二

size
返回

Series

对象中元素的个数

values


ndarray

的方式返回

Series

对象中的值


提示

:因为

describe()

返回的也是一个

Series

对象,所以也可以用

ser2.describe()['mean']

来获取平均值。

如果

Series

对象有重复的值,我们可以使用

unique()

方法获得去重之后的

Series

对象;可以使用

nunique()

方法统计不重复值的数量;如果想要统计每个值重复的次数,可以使用

value_counts()

方法,这个方法会返回一个

Series

对象,它的索引就是原来的

Series

对象中的值,而每个值出现的次数就是返回的

Series

对象中的数据,在默认情况下会按照出现次数做降序排列。



读取 CSV 文件创建

DataFrame

对象

可以通过

pandas

模块的

read_csv

函数来读取 CSV 文件,

read_csv

函数的参数非常多,下面接受几个比较重要的参数。


  • sep

    /

    delimiter

    :分隔符,默认是

    ,


  • header

    :表头(列索引)的位置,默认值是

    infer

    ,用第一行的内容作为表头(列索引)。

  • index_col

    :用作行索引(标签)的列。

  • usecols

    :需要加载的列,可以使用序号或者列名。

  • true_values

    /

    false_values

    :哪些值被视为布尔值

    True

    /

    False


  • skiprows

    :通过行号、索引或函数指定需要跳过的行。

  • skipfooter

    :要跳过的末尾行数。

  • nrows

    :需要读取的行数。

  • na_values

    :哪些值被视为空值。


读取Excel文件创建

DataFrame

对象

可以通过

pandas

模块的

read_excel

函数来读取 Exce l文件,该函数与上面的

read_csv

非常相近,多了一个

sheet_name

参数来指定数据表的名称,但是不同于 CSV 文件,没有

sep



delimiter

这样的参数。下面的代码中,

read_excel

函数的

skiprows

参数是一个 Lambda 函数,通过该 Lambda 函数指定只读取 Excel 文件的表头和其中10%的数据,跳过其他的数据。



通过SQL从数据库读取数据创建

DataFrame

对象


pandas

模块的

read_sql

函数可以通过 SQL 语句从数据库中读取数据创建

DataFrame

对象,该函数的第二个参数代表了需要连接的数据库。对于 MySQL 数据库,我们可以通过

pymysql



mysqlclient

来创建数据库连接,得到一个

Connection

对象,而这个对象就是

read_sql

函数需要的第二个参数。


提示

:执行上面的代码需要先安装

pymysql

库,如果尚未安装,可以先在 Notebook 的单元格中先执行

!pip install pymysql

,然后再运行上面的代码。上面的代码连接的是我部署在阿里云上的 MySQL 数据库,公网 IP 地址:

数据库ip

,用户名:

用户名称

,密码:

数据库密码

,数据库:

数据库名称

,表名:

表名

,字符集:

utf8mb4

,大家可以使用这个数据库,但是不要进行恶意的访问。


说明

:在数据库中

mgr



comm

两个列的数据类型是

int

,但是因为有缺失值(空值),读取到

DataFrame

之后,列的数据类型变成了

float

,因为我们通常会用

float

类型的

NaN

来表示空值。


DataFrame

对象的属性如下表所示。

属性名 说明

at

/

iat
通过标签获取

DataFrame

中的单个值。

columns

DataFrame

对象列的索引

dtypes

DataFrame

对象每一列的数据类型

empty

DataFrame

对象是否为空

loc

/

iloc
通过标签获取

DataFrame

中的一组值。

ndim

DataFrame

对象的维度

shape

DataFrame

对象的形状(行数和列数)

size

DataFrame

对象中元素的个数

values

DataFrame

对象的数据对应的二维数组

关于

DataFrame

的方法,首先需要了解的是

info()

方法,它可以帮助我们了解

DataFrame

的相关信息。



重塑数据

有的时候,我们做数据分析需要的原始数据可能并不是来自一个地方,就像上面的例子中,我们从关系型数据库中读取了三张表,得到了三个

DataFrame

对象,但实际工作可能需要我们把他们的数据整合到一起。例如:

df



df2

其实都是员工的数据,而且数据结构完全一致,我们可以使用

pandas

提供的

concat

函数实现两个或多个

DataFrame

的数据拼接,代码如下所示。



数据清洗

通常,我们从 Excel、CSV 或数据库中获取到的数据并不是非常完美的,里面可能因为系统或人为的原因混入了重复值或异常值,也可能在某些字段上存在缺失值;再者,

DataFrame

中的数据也可能存在格式不统一、量纲不统一等各种问题。因此,在开始数据分析之前,对数据进行清洗就显得特别重要。



缺失值

可以使用

DataFrame

对象的

isnull



isna

方法来找出数据表中的缺失值。



版权声明:本文为qq_40679091原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。