preface

Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们。

Python数据分析与挖掘技术概述

所谓数据分析,即对已知的数据进行分析,然后提取出一些有价值的信息,比如统计平均数,标准差等信息,数据分析的数据量可能不会太大,而数据挖掘,是指对大量的数据进行分析与挖倔,得到一些未知的,有价值的信息等,比如从网站的用户和用户行为中挖掘出用户的潜在需求信息,从而对网站进行改善等。
数据分析与数据挖掘密不可分,数据挖掘是对数据分析的提升。数据挖掘技术可以帮助我们更好的发现事物之间的规律。所以我们可以利用数据挖掘技术可以帮助我们更好的发现事物之间的规律。比如发掘用户潜在需求,实现信息的个性化推送,发现疾病与病状甚至病与药物之间的规律等。

预先善其事必先利其器

我们首先聊聊数据分析的模块有哪些:

  1. numpy 高效处理数据,提供数组支持,很多模块都依赖它,比如pandas,scipy,matplotlib都依赖他,所以这个模块都是基础。所以必须先安装numpy。
  2. pandas 主要用于进行数据的采集与分析
  3. scipy 主要进行数值计算。同时支持矩阵运算,并提供了很多高等数据处理功能,比如积分,微分方程求样等。
  4. matplotlib 作图模块,结合其他数据分析模块,解决可视化问题
  5. statsmodels 这个模块主要用于统计分析
  6. Gensim 这个模块主要用于文本挖掘
  7. sklearn,keras 前者机器学习,后者深度学习。

下面就说说这些模块的基础使用。

numpy模块安装与使用

安装:
下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/
我这里下载的包是1.11.3版本,地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下载好后,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安装的numpy版本一定要是带mkl版本的,这样能够更好支持numpy

numpy简单使用
import numpy

x=numpy.array([11,22,33,4,5,6,7,])  #创建一维数组
x2=numpy.array([['asfas','asdfsdf','dfdf',11],['1iojasd','123',989012],["jhyfsdaeku","jhgsda"]]) #创建二维数组,注意是([]) x.sort() #排序,没有返回值的,修改原处的值,这里等于修改了X
x.max() # 最大值,对二维数组都管用
x.min() # 最小值,对二维数组都管用
x1=x[1:3] # 取区间,和python的列表没有区别
生成随机数

主要使用numpy下的random方法。

#numpy.random.random_integers(最小值,最大值,个数)  获取的是正数
data = numpy.random.random_integers(1,20000,30) #生成整形随机数
#正态随机数 numpy.random.normal(均值,偏离值,个数) 偏离值决定了每个数之间的差 ,当偏离值大于开始值的时候,那么会产生负数的。
data1 = numpy.random.normal(3.2,29.2,10) # 生成浮点型且是正负数的随机数

pandas

使用pip install pandas即可

直接上代码:
下面看看pandas输出的结果, 这一行的数字第几列,第一列的数字是行数,定位一个通过第一行,第几列来定位:

print(b)
0 1 2 3
0 1 2 3 4.0
1 sdaf dsaf 18hd NaN
2 1463 None None NaN

常用方法如下:

import pandas
a=pandas.Series([1,2,3,34,]) # 等于一维数组
b=pandas.DataFrame([[1,2,3,4,],["sdaf","dsaf","18hd"],[1463]]) # 二维数组
print(b.head()) # 默认取头部前5行,可以看源码得知
print(b.head(2)) # 直接传入参数,如我写的那样
print(b.tail()) # 默认取尾部前后5行
print(b.tail(1)) # 直接传入参数,如我写的那样

下面看看pandas对数据的统计,下面就说说每一行的信息

# print(b.describe())   # 显示统计数据信息
3 # 3表示这个二维数组总共多少个元素
count 1.0 # 总数
mean 4.0 # 平均数
std NaN # 标准数
min 4.0 # 最小数
25% 4.0 # 分位数
50% 4.0 # 分位数
75% 4.0 # 分位数
max 4.0 # 最大值

转置功能:把行数转换为列数,把列数转换为行数,如下所示:

print(b.T)   # 转置
0 1 2
0 1 sdaf 1463
1 2 dsaf None
2 3 18hd None
3 4 NaN NaN
通过pandas导入数据

pandas支持多种输入格式,我这里就简单罗列日常生活最常用的几种,对于更多的输入方式可以查看源码后者官网。

CSV文件

csv文件导入后显示输出的话,是按照csv文件默认的行输出的,有多少列就输出多少列,比如我有五列数据,那么它就在prinit输出结果的时候,就显示五列

csv_data = pandas.read_csv('F:\Learnning\CSDN-python大数据\hexun.csv')
print(csv_data)
excel表格

依赖于xlrd模块,请安装它。
老样子,原滋原味的输出显示excel本来的结果,只不过在每一行的开头加上了一个行数

excel_data = pandas.read_excel('F:\Learnning\CSDN-python大数据\cxla.xls')
print(excel_data)
读取SQL

依赖于PyMySQL,所以需要安装它。pandas把sql作为输入的时候,需要制定两个参数,第一个是sql语句,第二个是sql连接实例。

conn=pymysql.connect(host="127.0.0.1",user="root",passwd="root",db="test")
sql="select * from fortest"
e=pda.read_sql(sql,conn)
读取HTML

依赖于lxml模块,请安装它。
对于HTTPS的网页,依赖于BeautifulSoup4,html5lib模块。
读取HTML只会读取HTML里的表格,也就是只读取<table>标签包裹的内容.

html_data = pandas.read_html('F:\Learnning\CSDN-python大数据\shitman.html')   # 读取本地html文件。
html_from_online = pandas.read_html('https://book.douban.com/') # 读取互联网的html文件
print(html_data)
print('html_from_online')

显示的是时候是通过python的列表展示,同时添加了行与列的标识

读取txt文件

输出显示的时候同时添加了行与列的标识

text_data = pandas.read_table('F:\Learnning\CSDN-python大数据\dforsay.txt')
print(text_data)

scipy

安装方法是先下载whl格式文件,然后通过pip install “包名” 安装。whl包下载地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl

matplotlib 数据可视化分析

我们安装这个模块直接使用pip install即可。不需要提前下载whl后通过 pip install安装。

下面请看代码:

from matplotlib import  pylab
import numpy
# 下面2行定义X轴,Y轴
x=[1,2,3,4,8]
y=[1,2,3,4,8]
# plot的方法是这样使用(x轴数据,y轴数据,展现形式)
pylab.plot(x,y) # 先把x,y轴的信息塞入pylab里面,再调用show方法来画图
pylab.show() # 这一步开始画图,默认是至线图

画出的图是这样的:

下面说说修改图的样式

关于图形类型,有下面几种:
  1. 直线图(默认)
  2. - 直线
  3. -- 虚线
  4. -. -.形式
  5. : 细小虚线
关于颜色,有下面几种:
  1. c-青色
  2. r-红色
  3. m-品红
  4. g-绿色
  5. b-蓝色
  6. y-黄色
  7. k-黑色
  8. w-白色
关于形状,有下面几种:
  1. s 方形
  2. * 星形
  3. p 五角形

我们还可以对图稍作修改,添加一些样式,下面修改圆点图为红色的点,代码如下:

pylab.plot(x,y,'or')   # 添加O表示画散点图,r表示red
pylab.show()

我们还可以画虚线图,代码如下所示:

pylab.plot(x,y,'r:')
pylab.show()

还可以给图添加上标题,x,y轴的标签,代码如下所示

pylab.plot(x,y,'pr--')   #p是图形为五角星,r为红色,--表示虚线
pylab.title('for learnning') # 图形标题
pylab.xlabel('args') # x轴标签
pylab.ylabel('salary') # y轴标签
pylab.xlim(2) # 从y轴的2开始做线
pylab.show()

直方图

利用直方图能够很好的显示每一段的数据。下面使用随机数做一个直方图。

data1 = numpy.random.normal(5.0,4.0,10)   # 正态随机数
pylab.hist(data1)
pylab.show()


Y轴为出现的次数,X轴为这个数的值(或者是范围)

还可以指定直方图类型通过histtype参数:

图形区别语言无法描述很详细,大家可以自信尝试。

  1. bar :is a traditional bar-type histogram. If multiple data
    are given the bars are aranged side by side.
  2. barstacked :is a bar-type histogram where multiple
    data are stacked on top of each other.
  3. step :generates a lineplot that is by default
    unfilled.
  4. stepfilled :generates a lineplot that is by default
    filled.

举个例子:

sty=numpy.arange(1,30,2)
pylab.hist(data1,histtype='stepfilled')
pylab.show()

子图功能

什么是子图功能呢?子图就是在一个大的画板里面能够显示多张小图,每个一小图为大画板的子图。
我们知道生成一个图是使用plot功能,子图就是subplog。代码操作如下:

#subplot(行,列,当前区域)
pylab.subplot(2,2,1) # 申明一个大图里面划分成4块(即2*2),子图使用第一个区域(坐标为x=1,y=1)
pylab.subplot(2,2,2) # 申明一个大图里面划分成4块(即2*2),子图使用第二个区域(坐标为x=2,y=2)
x1=[1,4,6,9]
x2=[3,21,33,43]
pylab.plot(x1,x2) # 这个plot表示把x,y轴数据塞入前一个子图中。我们可以在每一个子图后使用plot来塞入x,y轴的数据
pylab.subplot(2,1,2) # 申明一个大图里面划分成2块(即),子图使用第二个区域(坐标为x=1,y=2)
pylab.show()

实践小例子

我们现在可以通过一堆数据来绘图,根据图能够很容易的发现异常。下面我们就通过一个csv文件来实践下,这个csv文件是某个网站的文章阅读数与评论数。
先说说这个csv的文件结构,第一列是序号,第二列是每篇文章的URL,第三列每篇文章的阅读数,第四列是每篇评论数。
我们的需求就是把评论数作为Y轴,阅读数作为X轴,所以我们需要获取第三列和第四列的数据。我们知道获取数据的方法是通过pandas的values方法来获取某一行的值,在对这一行的值做切片处理,获取下标为3(阅读数)和4(评论数)的值,但是,这里只是一行的值,我们需要是这个csv文件下的所有评论数和阅读数,那怎么办?聪明的你会说,我自定义2个列表,我遍历下这个csv文件,把阅读数和评论数分别添加到对应的列表里,这不就行了嘛。呵呵,其实有一个更快捷的方法,那么就是使用T转置方法,这样再通过values方法,就能直接获取这一评论数和阅读数了,此时在交给你matplotlib里的pylab方法来作图,那么就OK了。了解思路后,那么就写吧。

下面看看代码:


csv_data = pandas.read_csv('F:\Learnning\CSDN-python大数据\hexun.csv')
dt = csv_data.T # 装置下,把阅读数和评论数转为行
readers=dt.values[3]
comments = dt.values[4]
pylab.xlabel(u'reads')
pylab.ylabel(u'comments') # 打上标签
pylab.title(u"The Article's reads and comments")
pylab.plot(readers,comments,'ob')
pylab.show()

python大数据挖掘系列之基础知识入门的更多相关文章

  1. 1 python大数据挖掘系列之基础知识入门

    preface Python在大数据行业非常火爆近两年,as a pythonic,所以也得涉足下大数据分析,下面就聊聊它们. Python数据分析与挖掘技术概述 所谓数据分析,即对已知的数据进行分析 ...

  2. 2 python大数据挖掘系列之淘宝商城数据预处理实战

    preface 在上一章节我们聊了python大数据分析的基本模块,下面就说说2个项目吧,第一个是进行淘宝商品数据的挖掘,第二个是进行文本相似度匹配.好了,废话不多说,赶紧上车. 淘宝商品数据挖掘 数 ...

  3. python大数据挖掘系列之淘宝商城数据预处理实战

    数据清洗: 所谓的数据清洗,就是把一些异常的.缺失的数据处理掉,处理掉不一定是说删除,而是说通过某些方法将这个值补充上去,数据清洗目的在于为了让我们数据的可靠,因为脏数据会对数据分析产生影响.拿到数据 ...

  4. hadoop大数据平台安全基础知识入门

    概述 以 Hortonworks Data Platform (HDP) 平台为例 ,hadoop大数据平台的安全机制包括以下两个方面: 身份认证 即核实一个使用者的真实身份,一个使用者来使用大数据引 ...

  5. Linux基础知识入门

    [Linux基础]Linux基础知识入门及常见命令.   前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1: ...

  6. Hibernate入门1. Hibernate基础知识入门

    Hibernate入门1. Hibernate基础知识入门 20131127 前言: 之前学习过Spring框架的知识,但是不要以为自己就可以说掌握了Spring框架了.这样一个庞大的Spring架构 ...

  7. Python专题三字符串的基础知识

    Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...

  8. python爬虫之Beautiful Soup基础知识+实例

    python爬虫之Beautiful Soup基础知识 Beautiful Soup是一个可以从HTML或XML文件中提取数据的python库.它能通过你喜欢的转换器实现惯用的文档导航,查找,修改文档 ...

  9. python大数据挖掘和分析的套路

    大数据的4V特点: Volume(大量):数据巨大. Velocity(高速):数据产生快,每一天每一秒全球人产生的数据足够庞大且数据处理也逐渐变快. Variety(多样):数据格式多样化,如音频数 ...

随机推荐

  1. Java - 静态方法不具有多态性

    class A1 { public static void f() {  System.out.println("A1.f()"); }}class A2 extends A1 { ...

  2. 【jenkins】jenkins服务器与svn服务器时间不一致出现的问题

    问题描述: svn提交了一次更新包,到了jenkins提交更新的时候,第一次代码没有生效,然后重新提交了一次,第二次才生效. 问题排查: 1.首先第一反应比对了下两次更新的包文件是否一致,然后发现大小 ...

  3. mybatis的优缺点及应用场合

    mybatis框架的优点 与jdbc相比,减少了50%以上的代码量 mybatis是最简单的持久化框架,小巧简单且易学 mybatis想到灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写 ...

  4. Vue -computed传参数

    vue 中computed想传递参数怎么办? 闭包在这里起到的重要的作用 <input v-model="newItem(key,val)" type="text& ...

  5. Node.js 中流操作实践

    本文节选自 Node.js CheatSheet | Node.js 语法基础.框架使用与实践技巧,也可以阅读 JavaScript CheatSheet 或者 现代 Web 开发基础与工程实践 了解 ...

  6. 关于Linux系统下zookeeper集群的搭建

    1.集群概述 1.1什么是集群 1.1.1集群概念 集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系 ...

  7. Memory loss【记忆缺失】

    Memory Loss Losing your ability to think and remember is pretty scary. We know the risk of dementia ...

  8. 南阳 ACM16 矩形嵌套 动态规划

    矩形嵌套 时间限制:3000 ms  |           内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c, ...

  9. HDU 5119 Happy Matt Friends (14北京区域赛 类背包dp)

    Happy Matt Friends Time Limit: 6000/6000 MS (Java/Others)    Memory Limit: 510000/510000 K (Java/Oth ...

  10. nowcoder N约数个数

    n的约数个数 题目:t次询问,每次给你一个数n,求在[1,n]内约数个数最多的数的约数个数 数据:对于100%的数据,t <= 500 , 1 <= n <= 10000000000 ...