数据分析常用内容总结

Numpy

import numpy as np

1、创建数组

a = np.array([2])
a
array([2])
a = np.array([2,2])
a
array([2, 2])
b = np.array([[1,2],[3,4]])
b
array([[1, 2],
       [3, 4]])

2、数组属性

a.ndim #维度
1
a.shape #返回元组
(2,)
a.dtype #类型
dtype('int32')
a.size #长度
2
b.size
4

3、numpy函数

np.arange(0,1,0.1)
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
np.linspace(1,5,4)  #等差数列从1开始从5开始分4分
array([1.        , 2.33333333, 3.66666667, 5.        ])
np.logspace(1,5,4) #等比数列,十的1次方到十的5次方,分四份 
array([1.00000000e+01, 2.15443469e+02, 4.64158883e+03, 1.00000000e+05])
np.zeros((2,3)) #全零
array([[0., 0., 0.],
       [0., 0., 0.]])
np.ones((2,3)) #全一
array([[1., 1., 1.],
       [1., 1., 1.]])
np.eye(4) #单位数组
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.]])
np.diag([3,4,5]) #对角数组
array([[3, 0, 0],
       [0, 4, 0],
       [0, 0, 5]])

4、随机random

np.random.random(20) #随机数
array([5.19883509e-02, 2.87681413e-01, 4.96544076e-01, 2.32602258e-01,
       4.48493146e-01, 7.42736891e-01, 4.28938352e-01, 6.64962985e-01,
       5.55651140e-01, 2.53305944e-01, 9.24284587e-04, 7.68401309e-01,
       9.22384046e-02, 8.58196238e-01, 1.24775337e-01, 9.63342219e-01,
       6.86374634e-01, 4.50290470e-01, 3.89865050e-01, 9.49314497e-01])
np.random.rand(10,5) #均匀分布
array([[0.5712833 , 0.10389104, 0.27510421, 0.3776921 , 0.94843083],
       [0.3031132 , 0.93306734, 0.84758866, 0.59395116, 0.40025089],
       [0.39892501, 0.34362252, 0.36609281, 0.66723175, 0.54943704],
       [0.90772769, 0.49961675, 0.39484495, 0.16780487, 0.45405735],
       [0.93441868, 0.09611159, 0.77011245, 0.6082336 , 0.52785896],
       [0.70769216, 0.96499182, 0.06946402, 0.74354479, 0.51895451],
       [0.69492187, 0.89395789, 0.36932701, 0.51750774, 0.47772985],
       [0.5991736 , 0.73576445, 0.58542434, 0.90572711, 0.63510628],
       [0.99082072, 0.40778598, 0.88699359, 0.86848041, 0.22322259],
       [0.45608093, 0.96157002, 0.91763542, 0.82673006, 0.33652886]])
np.random.randn(15) #正态分布
array([ 1.31892466, -1.12436439, -0.53485163, -0.72648748, -0.70885778,
        0.72722358, -0.85759594,  0.55040513,  0.51432475, -1.29170637,
       -0.25737761,  1.04657207, -1.15773391, -0.71393983,  0.71314956])
np.random.randint(1,5,size=[3,5]) #从1到4,生成3x5的数组
array([[2, 3, 2, 4, 2],
       [3, 1, 1, 3, 1],
       [4, 3, 1, 3, 4]])

5、数组的索引

5.1 一维

a = [1,2,3,4,5]
a[3]
4

5.2 二维

a = np.array([[1,2,3],[4,5,6]])
a
array([[1, 2, 3],
       [4, 5, 6]])
a[:,1]
array([2, 5])
a[(0,1),(0,1)] #代表第0行第0列 和 第1行第1列
array([1, 5])

5.3 布尔

#取a中大于0的
a = np.array([1,-1,2,-3,3,-2])
a[a>0]
array([1, 2, 3])
#取b大于5的
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
b > 5
array([[False, False, False],
       [False, False,  True],
       [ True,  True,  True]])
b[b>5]
array([6, 7, 8, 9])

6、数组变化

6.1、一维变二维

a = np.array([1,2,3,4,5,6])
a.reshape(2,3)
array([[1, 2, 3],
       [4, 5, 6]])

6.2、二维变一维

a = np.array([[1,2],[3,4],[5,6]])
a.flatten()
array([1, 2, 3, 4, 5, 6])
a.flatten('F')
array([1, 3, 5, 2, 4, 6])
a.ravel()
array([1, 2, 3, 4, 5, 6])

6.3、拼接

a = np.array([1,2])
b = np.array([3,4])
np.hstack((a,b)) #横向拼接
array([1, 2, 3, 4])
np.vstack((a,b)) #纵向拼接
array([[1, 2],
       [3, 4]])

6.4、分割

a = np.array([[1,2],[3,4]])
np.split(a,2,axis=1)
[array([[1],
        [3]]), array([[2],
        [4]])]
np.hsplit(a,2)
[array([[1],
        [3]]), array([[2],
        [4]])]
np.vsplit(a,2)
[array([[1, 2]]), array([[3, 4]])]

7、矩阵

7.1、矩阵的创建

np.mat('1 2 3;4 5 6')
matrix([[1, 2, 3],
        [4, 5, 6]])
np.matrix([[1,2],[3,4],[5,6]])
matrix([[1, 2],
        [3, 4],
        [5, 6]])
a = np.mat('1 2 3;4 5 6;7 8 9')
b = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
np.bmat('a b;b a')
matrix([[1, 2, 3, 1, 2, 3],
        [4, 5, 6, 4, 5, 6],
        [7, 8, 9, 7, 8, 9],
        [1, 2, 3, 1, 2, 3],
        [4, 5, 6, 4, 5, 6],
        [7, 8, 9, 7, 8, 9]])

7.2、矩阵运算

# + - *
#乘法需要 a的列 与 b的行 相同
 #对应元素相乘multiply
#转置 T
a = np.array([[1,2,3],[4,5,6]])
a.T
array([[1, 4],
       [2, 5],
       [3, 6]])
#求逆 I

7.3、numpy运算

7.3.1 + - * / 比较运算
#与运算
a = np.array([[1,2],[3,4]])
b = np.array([[1,2],[3,4]])
np.all(a == b)
False
#或运算
a = np.array([[1,2],[3,4]])
b = np.array([[1,2],[4,5]])
np.any(a == b)
True
7.3.2 广播机制,二维与一维
a = np.array([[1,2],[3,4]])
b = np.array([10,10])
a + b
array([[11, 12],
       [13, 14]])
a - b
array([[-9, -8],
       [-7, -6]])
a * b
array([[10, 20],
       [30, 40]])

8、numpy文件读写

#数组存储
np.save('filename',file) #返回.npy文件
np.savez('filesname',flile1,file2) #返回.npz文件
#文件读取
#npy
np.load('filename')
#npz
np.load('filesname')['arr_0']/['arr_1']

9、统计分析

#排序
sort(axis=0)/sort(axis=1)

#返回排序索引
argsort()
#去重
a = np.array([[1,2,3],[1,2,3],[1,2,3]])
np.unique(a)
array([1, 2, 3])
#重复
a = np.array([[1,2],[3,4],[5,6]])
a
array([[1, 2],
       [3, 4],
       [5, 6]])
np.tile(a,2) #把arr整体重复2次
array([[1, 2, 1, 2],
       [3, 4, 3, 4],
       [5, 6, 5, 6]])
a.repeat(2,axis=1) #按行重复
array([[1, 1, 2, 2],
       [3, 3, 4, 4],
       [5, 5, 6, 6]])
a.repeat(2,axis=0)
array([[1, 2],
       [1, 2],
       [3, 4],
       [3, 4],
       [5, 6],
       [5, 6]])
##求和
np.sum
##求平均
np.mean
##求方差和便准差
np.var
np.std
##最大值、最小值
np.max
np.min
##最大值下标、最小值下标
np.argmin
np.argmax
##累计和、累计积
np.cumsum
np.cumprod
a = np.array([1,2,3,4,5])
np.cumsum(a)
array([ 1,  3,  6, 10, 15], dtype=int32)
np.cumprod(a)
array([  1,   2,   6,  24, 120], dtype=int32)
##根据最后一个顺序返回下标
a = np.array([1,2,3,4,5])
b = np.array([6,7,8,9,10])
c = np.array([9,7,5,3,1])
d = np.lexsort((a,b,c))
d
array([4, 3, 2, 1, 0], dtype=int64)
list(zip(a[d],b[d],c[d]))
[(5, 10, 1), (4, 9, 3), (3, 8, 5), (2, 7, 7), (1, 6, 9)]

Matplotlib

import matplotlib.pyplot as plt
plt.figure()
<Figure size 432x288 with 0 Axes>




<Figure size 432x288 with 0 Axes>
x = np.arange(1,10,0.1)
y = np.arange(1,10,0.1)
plt.plot(x,y)

在这里插入图片描述

x = [4,5,3,7,1]
y = [0,0,0,0,0.05]
plt.pie(x,y,autopct='%1.1f%%')

在这里插入图片描述

x = [1,2,3,4,5]
y = [4,5,3,7,1]
plt.bar(x,y)

在这里插入图片描述

x = [1,2,3,4,5]
y = [4,5,3,7,1]
plt.scatter(x,y)

在这里插入图片描述

Pandas

import pandas as pd

1、pandas存取文件

#读
pd.read_csv()
pd.read_excel()
pd.read_table()
#存
pd.to_csv()

2、dataframe属性

values  #取值(列表)
columns #列索引
index   #行索引
dtypes  #类型
shape  #结构
size  #数量
ndim  #维度

3、dataframe 增删改查

#创建Dataframe
df = pd.DataFrame({'小写':['a','b','c','d'],'大写':['A','B','C','D']},index=['一','二','三','四'])
df
小写大写
aA
bB
cC
dD
#替换
dataframe['age'].replace(240,30)
dataframe['age'].repalce(np.NaN,30)
#排序
dataframe.sort_values(by = ['age'],ascending = False)  #ascending默认True,正序排序
dataframe.drop(labels='columes',axis=0,inplace=True) #删除行
dataframe.drop(axis=1) #删除列

4、查找

dataframe.loc['行名','列名']
dataframe.loc[条件,'列名']
dataframe.iloc[行索引,列索引]

5、统计函数

mode() #众数
median() #中位数
count() #非空值
value_count() #统计不同列别数量
describe()
#数值型
[count,max,min,25%,50%,75%,mean,std]
#类别型
[counts,unique,top,freq]

6、时间处理

a = pd.to_datetime(dataframe)
[i.year for i in a] #年
[i.month for i in a] #月

#加一天
[i.day for i in a]+pd.timedelta(day=1)

7、分组聚合方式

data.groupby(by='1')
#聚合运算
sum()
mean()

data['a','b'].agg([np.sum,np.mean]) #对a,b求和和平均(反回4个)

data.agg({'a':np.sum,'b':np.mean}) #对a求和 对b求均值
#transfrom
data[['a','b']].transform(func) 

8、透视表交叉表

pd.pivot_table() #透视表
pd.crosstab() #交叉表

9、Pandas数据预处理

9.1 堆叠

concat([a,b],axis,join)

9.2 merge(主键链接)

merge([a,b],how='inner\outer\left\right',on=['k1','k2'])

9.3 重叠合并

data1.combine_first(data2)

9.4清洗数据

#(1)检测数据重复
data['a'].drop_duplicates()
data.drop_duplicates(subset['a','b'])

#(2)相似度
data[['a','b']].corr(method = 'pearson')

#(3)检测处理异常值
'''
3σ原则
如果一个数值于平均值之间的偏差超过3倍的标准差,那么我们可以认为这个值是异常值。
'''

#(4)缺失值
#dropna()
#fillna()

#(5)插值
from scipy.interpolate import interp1d #线性拟合
from scipy.interpolate import lagrange #拉格朗日
from scipy.interpolate import spline #样条插值

9.5 标准化

#(1)离差标准化
#(2)标准差标准化
#(3)小数定标标准化

9.6 数据转换

get_dummies()

9.7 数据离散化

#等宽法 等频法

人工智能

监督

#分类,回归:
KNN(k-最近邻算法)  
朴素贝叶斯(概率) 
回归,岭回归
决策树(ID3,C4.5,CART)

非监督

聚类:K-means
关联算法:aprori,FP-growth

深度学习

cnn(tensorflow,paddlepaddle)

跟踪算法

KM,EKF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值