【数据科学基础】学习笔记

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 数据科学基础与数据挖掘

 目录

数据科学库

数组

创建数组

随机数与随机抽样

索引

二维数组

Axis:

ufunc:

SORT


数据科学库

数值计算 Numpy
科学计算 Scipy
数据分析 Pandas
数据挖掘 sklearn
绘图库 Matplotlib

Numpy官网

关于 NumPy | NumPy 中文

Numpy

创建数组

#任意数组
a=np.array([[1,2,3,4],[5,6,7,8],[9,1,2,3]])

image.gif

内置函数创建数组

a=np.array([[1,2,3,4],[5,6,7,8],[9,1,2,3]])
#将数组变回list
a1.tolist()
#根据尺寸创建新的数组,如上面数组为3*4可以变成2*6
a2.reshape((2,6))
#指定步长
np.arange(0,1,0.1)
#等差数列
np.linspace(0,1,10)
#等比数列
np.logspace(0,2,10)
#全为一或零
np.zeros((2,3))
np.ones((2,3))
#单位矩阵
np.identity(4)
#随机的二维数组
a = np.random.randint(0,10,size=[3,3])
#对角线指定方阵
np.diag([1,2,3,4])
#均匀分布
#左闭右开
a1=np.random.uniform(-1,1,10000)

image.gif

函数创建法

#函数生成
def f(i,j):return i-j
np.fromfunction(f,(4,4))
>>>
[[ 0. -1. -2. -3.]
 [ 1.  0. -1. -2.]
 [ 2.  1.  0. -1.]
 [ 3.  2.  1.  0.]]
#二维数组创建
a=np.array([range(10*i,10*i+6) for i in range(6)])
a
>>>
[[ 0  1  2  3  4  5]
 [10 11 12 13 14 15]
 [20 21 22 23 24 25]
 [30 31 32 33 34 35]
 [40 41 42 43 44 45]
 [50 51 52 53 54 55]]
#三维数组创建
a=np.array([[range(10*i+j,10*i+j+3) for i in range(2)]for j in range(3)])
a
>>>
[[[ 0  1  2]
  [10 11 12]]
 [[ 1  2  3]
  [11 12 13]]
 [[ 2  3  4]
  [12 13 14]]]

image.gif

随机数与随机抽样

函数

功能说明

rand(d0, d1, ..., dn)

返回给定形状的0~1随机值样本

randn(d0, d1, ..., dn)

返回给定形状且服从标准正态分布的随机值样本

randint(low[, high, size])

返回随机的整数,位于半开区间 [low, high)

random_integers(low[, high, size])

返回随机的整数,位于闭区间 [low, high]

random_sample([size])

返回随机的浮点数,在半开区间 [0.0, 1.0)

random([size])

返回随机的浮点数,在半开区间 [0.0, 1.0)

ranf([size])

返回随机的浮点数,在半开区间 [0.0, 1.0)

sample([size])

返回随机的浮点数,在半开区间 [0.0, 1.0)

choice(a[, size, replace, p])

生成一个随机样本,从一个给定的一维数组

bytes(length)

返回随机字节

#随机抽样,打乱自身内容
#改变自身内容
a1=np.arange(10)
np.random.shuffle(a1)
#不改变自身内容
a1=np.arange(10)
np.random.permutation(a1)

image.gif

函数

功能说明

normal([loc, scale, size])

正态(高斯)分布

poisson([lam, size])

泊松分布

uniform([low, high, size])

均匀分布

binomial(n, p[, size])

二项分布

chisquare(df[, size])

卡方分布

exponential([scale, size])

指数分布

geometric(p[, size])

几何分布

索引

下标切片法

image.gif编辑

整数序列法

a=np.arange(10,1,-1)
b=a[3:5]
c=a[[3,3,4]]

image.gif

布尔数组法

image.gif编辑

使用函数+布尔数组法改变元素数值

image.gif编辑

数组空间共享问题

切片方式共享原数组,数组元素、布尔索引不共享原数组

import numpy as np
a=np.array([1,2,3,4,5,6])
a[-2:-1]=np.array([1])
print(a)

image.gif

二维数组

image.gif编辑

image.gif编辑

Axis

根据行列来进行计算

a=np.array([range(10*i,10*i+6) for i in range(6)])
#整个矩阵进行求和,最大值,最小值,平均值,标准差
np.sum(a)
np.max(a)
np.min(a)
np.mean(a)
np.std(a)
#根据列来进行计算
np.sum(a,axis=0)
#根据行来进行计算
np.sym(a,axis=1)

image.gif

ufunc

对数组每个元素进行操作的内置函数

a=[1,2,3]
b=[4,5,6]
#5次方
np.power(a,5)
#根号
np.sqrt(a)
#取自然数为底数
np.exp(a)
#ln
np.log(a)
#向下取整
np.floor(a)
#向上取整
np.ceil(a)
#四舍五入
np.round(a)
#三角函数
np.sin(a)
np.arcsin(a)
#加减乘除
a+b
a-b
a*b
a/b
a**b
a//b

image.gif

自定义ufunc

       就是自己定义一个普通的函数,然后把它加入到 frompyfunc函数中,如下例子,2是输入参数的个数,1是输出参数的个数

def myadd(x, y):
    return x+y
myadd = np.frompyfunc(myadd, 2, 1)
print(myadd([1, 2, 3, 4], [5, 6, 7, 8]))

image.gif

SORT

a=np.array([[1,2,3],[6,5,6],[4,2,4],[2,5,3]])
print(np.sort(a))#最后一维,也就是最里面括号
print(np.sort(a,axis=0))#第一维,也就是最外面的括号
print(np.sort(a,axis=None))#所有元素排列,也就是变成一维
print(np.argsort(a,axis=0))#排序后下标的位置

image.gif

数组存取于文件中

a=np.arange(30).reshape(2,3,5)
#将数组存入到文件中
np.save('a.npy',a,fmt="%d",delimiter=',')
#将数组压缩到文件中
np.savez('a.npz',a)
#将数组从文件中读取出来
b=np.load('a.npy')

image.gif

Scipy

是什么?建立于Numpy基础之上的提供很多科学计算算法的库

官方文档

SciPy API — SciPy v1.8.0 Manual

#特有对象series
#是什么?--字典
s=

image.gif

Pandas

是什么?建立于Numpy基础之上的提供很多数据分析功能的库

官方文档

pandas - Python Data Analysis Library (pydata.org)

最重要的两个数据格式

Series:一维序列,就是一个定长的有序字典,每一个对象有index和values属性

DataFrame:二维表结构

Series

#初始化--无index
s=Series([1,2,3,'abc'])
>>>s
0  1
1  2
2  3
3  abc
#初始化--有index
s=Series(index=['a','b','x','y'],data=['A',1,2,3])

image.gif

DataFrame

from pandas as pd
#初始化
-->先创建一类字典类型,后使用DataFrame函数
data=({'性别':['男','女','女','男','男'],
                '姓名':['小明','小红','小芳','大黑','张三'],
                '年龄':[20,21,25,24,29]})
df=pd.DataFrame(data)
>>>
  性别  姓名  年龄
0  男  小明  20
1  女  小红  21
2  女  小芳  25
3  男  大黑  24
4  男  张三  29
#获取index和values
df.index()
df.values()
#切片
df[:'c']

image.gif

Sklearn

是什么?~提供很多数据挖掘工具的库

官方文档

绘图

Matplotlib

ScSciPyPy

SciPyS


目录
相关文章
|
4月前
|
算法 数据挖掘 UED
BPPISE数据科学案例框架
BPPISE数据科学案例框架
|
11月前
|
机器学习/深度学习 人工智能 算法
【数据科学】数据科学难题,怎么解释到底什么是数据科学
【数据科学】数据科学难题,怎么解释到底什么是数据科学
|
11月前
|
机器学习/深度学习 人工智能 算法
数据科学难题,怎么解释到底什么是数据科学
数据科学难题,怎么解释到底什么是数据科学
|
机器学习/深度学习 人工智能 供应链
数据科学的现在与未来
数据科学是截至近年来技术领域中最具热度的方向之一。如果您拥有数据科学或者相关专业的工作经验及学位,那么只要大笔一挥、简历一发,一份薪酬可观的职位就会应手而得。
|
数据可视化 Python 数据挖掘
|
机器学习/深度学习 大数据 数据挖掘
数据科学究竟是什么?
本文是关于数据科学的概述和讨论,包括数据挖掘,统计推断,机器学习,数据工程等等。
2311 0
|
机器学习/深度学习 数据可视化 数据挖掘
数据科学求职建议:掌握5种类型的数据科学项目
本文介绍数据科学求职应该掌握的五个相关项目,以便秋招者对应自身情况查漏补缺。
4418 0
|
机器学习/深度学习 分布式计算 算法
数据科学指南
本文为学习数据科学的指南,从编程语言、数据库管理、数据收集和整理方法、特征工程、机器学习模型、模型评估方面进行讲述。
2759 0
|
机器学习/深度学习 自然语言处理 数据可视化
如何高效入门数据科学?
链接散落的教程文章,做个详细的导读,助你更高效入门数据科学。 问题 2017年6月以来,我陆续在自己的简书专栏《玉树芝兰》里,写了一系列数据科学教程。
1955 0