快速了解数据分析与挖掘技术
1.什么是数据分析与挖掘技术(概念)
所谓数据分析,即对已知的数据进行分析,然后提取出一些有价值的信息,比如统计出平均数、标准差等信息,数据分析的数据量有时可能不会太大,而数据挖掘,是指对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息等,比如从网站的用户或用户行为数据中挖掘出用户的潜在需求信息,从而对网站进行改善。
数据分析与数据挖掘密不可分,数据挖掘是数据分析的提升。
2.数据分析与挖掘技术能做什么事情(概念 )
数据挖掘技术可以帮助我们更好的发现事务之间的规律,所以,我们可以利用数据挖掘技术实现数据规律的探索、比如发现窃电用户、发掘用户潜在需求、实现信息的个性化推送、发现疾病与症状设置疾病与药物之间的规律...等
3.数据挖掘的过程主要有(怎么实现)
- 定义目标
- 获取数据(常用手段有通过爬虫采集或者下载一些统计网站发布的数据,并没有严格的数据把控)
- 数据探索(对我们数据的初步的研究,发现数据的特征,就知道我们接下来怎么处理)
- 数据预处理(数据清洗【去掉脏数据】、数据集成【集中】、数据变换【规范化】、数据规约【精简】)
- 挖掘建模(分类算法、聚类算法、关联算法、预测算法)
- 模型评价与发布
2.数据分析与挖掘相关模块简介与安装
1.相关模块简介
- numpy可以高效处理数据、提供数组支持、很多模块都依赖他,比如pandas、scipy、matplotlib都依赖他,所以这个模块是基础。
- pandas在后续用的最多的一个模块,主要用于进行数据探索和数据分析
- matplotlib 作图模块,解决可视化问题
- scipy 主要进行数值计算,同时支持矩阵运算,并提供了恩多高等数据处理功能,比如积分、傅里叶变换、微分方程求解等。
- statsmodels这个模块主要用于统计分析
- Gensim这模块主要用于文本挖掘
- skearn、keras前者机器学习,后者深度学习
2.相关模块的安装与技巧(建议这样安装)
1.numpy、mkl(下载安装numpy+mkl) 提取码:n5ac (可以自行选择安装版本numpy+mkl)
2.pandas (网络安装)
3.matplotlib (网络安装)
4.scipy(下载安装,网盘下载建议先下载在安装)提取码:i383 网站下载
5.statsmodels (网络安装)
6.Gensim(网络安装)
3.相关模块的基本使用
1. numpy(数组的运算效率要比列表的运算效率要高,底层运算是不一样的)
1. #创建一维数组
>>> import numpy
>>> x = numpy.array(['a','v','b']) # 创建数组的格式
>>> x
array(['a', 'v', 'b'], dtype='<U1') # 返回对应的元素,和对应的类型,取值按照下标取,如:x[1] 返回 v
#创建二维数组
>>> x = numpy.array([[4,5,6,7],[8,9,7,6],[12,23,34,8]])
>>> x
array([[ 4, 5, 6, 7],
[ 8, 9, 7, 6],
[12, 23, 34, 8]]) #返回数据
2.排序 sort() 按照上面例子如:x.sort()
3.取最大值和最小值
按照上面例子 :取最大值 :x.max()
取最小值: x.min()
4.切片
按照上面例子:x[起始下标:最终下标+1]
2.pandas使用
import pandas as pda
'''
Series index索引未指定按照0开始 行列pandas里面的一维数组
DataFrame 表格行和列格式 二维数组
'''
a = pda.Series([8.9, 2, 1]) #索引未指定
b = pda.Series([8,9, 2, 1],index=["one", "two", "three", "four"])#指定索引,index必须和数据相对应
#第一种方法
data = pda.DataFrame([[54, 1, 21, 24], [7, 58, 88, 99], [47, 85, 98, 72], [69, 58, 47, 25]]) #默认行列以0开始
data = pda.DataFrame([[54, 1, 21, 24], [7, 58, 88, 99], [47, 85, 98, 72], [69, 58, 47, 25]],columns=['one','two','three','four']) #修改列名,必须跟数据长度一样
#第二种方法,按照字典创建 (one,two,three)为列表名
data_dict =pda.DataFrame({
'one':4, 一列一行
'two':[6,2,3], value值是列表为多行,
'three':list(str(982))
}) #其他行不满足时,自动补全,如:
》》》 one two three
0 4 6 9
1 4 2 8
2 4 3 2
b.head() #头部数据,默认前五行
b.head(行数) #自定义取头部数据几行
b.tail() #尾部数据,默认后五行
b.tail(行数) #自定义取尾部数据几行
data.sort_values([0],ascending=False) #排序,参数【0】为列名,ascending=False 降序
展示统计情况:
data.describe() #把数据的统计信息给打印出来
返回:
one two three four
count 4.000000 4.000000 4.000000 4.000000 # 元素个数的信息
mean 44.250000 50.500000 63.500000 55.000000 # 代表的平均数
std 26.474831 35.369478 35.911929 36.905284 # 展示标准差的意思
min 7.000000 1.000000 21.000000 24.000000 # 这一列最小值
25% 37.000000 43.750000 40.500000 24.750000 # 代表每一列,分位数
50% 50.500000 58.000000 67.500000 48.500000 #
75% 57.750000 64.750000 90.500000 78.750000 #
max 69.000000 85.000000 98.000000 99.000000 # 这一列最大值
#数据转置(将行变成列,将列变成行)
data.T #转置行遍列
3.matplotlib基础 折线图/散点图 以及绘制子图
# 折线图、散点图 一般会有 plot模块绘制
import matplotlib.pylab as pyl
import numpy as npy
# 维数x轴和y轴必须一致,否者报错
x = [1, 2, 3, 4, 8] # x轴
y = [5, 7, 2, 1, 5] # y轴
pyl.plot(x, y) # plot(x轴,y轴,展现形式)一般会有两个或者3个参数,第一个x轴数据,第二是y轴参数,第三是对应展示的形式(如:或者展示为散点图,设置展示颜色 )
pyl.show() # 展示折线图,默认折线图
pyl.plot(x, y, 'o') # 字母o是代表散点图
pyl.show() # 折线图如果不注释,将会和下面的散点图重叠展示
pyl.plot(x, y, 'c') # 默认折线图,换成青色
pyl.plot(x, y, 'oc') # 修改成散点图,换成青色,是否是折线图的参数和颜色的参数叠加在一起
pyl.show()
# 颜色代表
'''
c-cyan--青色
r-red--红色
m-magente-品红
g-green-绿色
b-blue-蓝色
y-yellow-huangs
k-black-黑色
w-white-白色
'''
# 线条样式 常用线条
'''
- 直线
-- 虚线
-.-. 形式(展示就是-.形式)
: 细小虚线
'''
# pyl.plot(x, y, '--') # 折线图修改线条
# 点的样式
'''
s 方形
h 六角形
H 六角形(跟h有一点区别)
* 星形
x x形
d 菱形
D 菱形(与d有点区别)
p 五角星
'''
pyl.plot(x, y, "*") # 加上点的样式,默认是散点图
pyl.show()
# 设置标题以及x轴与y轴名称
pyl.plot(x, y)
x2 = [1, 3, 6, 8, 10, 12, 19]
y2 = [1, 6, 9, 10, 19, 23, 35]
pyl.plot(x2, y2)
pyl.title('show') # 标题
pyl.xlabel('ages') # x轴名称
pyl.ylabel('temp') # y轴名称
pyl.xlim(0, 20) # 设置x轴的范围
pyl.ylim(1, 40) # 设置y轴的范围
pyl.show() # 使用多图绘制,在show之前,多次使用plot
随机数的生成
# 前提导入
import numpy as npy
# data = npy.random.random_integers(1, 20, 10) # 生成整型数值,第一参数,最小值,第二参数:最大数,第三个参数:随机数的个数
# 怎么生成正太分布的随机数,生成正太分布使用normal模块
data=npy.random.normal(5.0,2.0,10) # 均数,西格玛(越小越陡峭,越大越平缓),个数
print(data)
# 随机数网址 http://www.mamicode.com/info-detail-507676.html
# 直方图 一般会有hist模块 绘制
# 直方图一般统计某一段数据的次数
#正太分布随机
data = npy.random.normal(10.0, 1.0, 10000)
pyl.hist(data)
pyl.show()
#整型随机
data1=npy.random.random_integers(1,25,1000)
pyl.hist(data1)
pyl.show()
# 直方图的宽度以及上下限
sty = npy.arange(2, 19, 2) #x轴开始和结束值,第三参数是数据范围条件
pyl.hist(data1,sty,histtype='stepfilled')#第二个参数不叫,显示默认的,histtype='stepfilled'取消直方图轮廓
pyl.show()
# 绘制子图
pyl.subplot(2, 2, 4) # 参数1代表行,参数2代表列,参数3代表当前区域
pyl.show()
# 绘制两行一列
pyl.subplot(2, 2, 1) # 共两行第一行分两列第一列
x1 = [1, 2, 3, 4, 5]
y1 = [5, 3, 5, 23, 5]
pyl.plot(x1, y1)
pyl.subplot(2, 2, 2) # 共两行第一行分两列第2列
x2 = [5, 2, 3, 8, 6]
y2 = [7, 9, 12, 12, 3]
pyl.plot(x2, y2)
pyl.subplot(2, 1, 2) # 共两行第二行分一列第2行
x3=[5,6,7,10,19,20,29]
y3=[6,2,4,21,5,1,5]
pyl.plot(x3,y3)
pyl.show()