Microbubu的迷你实验室

Python与大数据入门

字数统计: 1.6k阅读时长: 7 min
2018/11/06 Share

声明:本文内容转载自CNBLOGS-温柔易谈,文章内容根据需要进行了更改。

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

数据分析模块

  1. numpy:
    该模块可以高效处理数据,提供对数组的支持,很多模块都依赖于此,比如pandas, scipy, matplotlib等。

  2. pandas:
    主要用于数据的采集和分析。

  3. scipy:
    主要用于数值计算,同时支持矩阵运算,并且提供了很多高效的数据处理功能,如积分、微分方程求样等。

  4. matplotlib:
    作图模块,可以结合其他数据分析模块,可视化呈现数据。

  5. statsmodels:
    主要用于统计分析。

  6. Gensim:
    主要用于文本挖掘。

  7. sklearn:
    主要用于机器学习。

  8. keras:
    主要用于深度学习。

推荐使用Anaconda,因为它已经自带了很多模块。

numpy模块的简单使用

numpy模块已经在Anaconda3中自带。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
print(x.min())  # 最小值
print(x2.max())
print(x2.min())
x1 = x[1:3] # 切片操作
print(x1)

# numpy.ramdom.random_intergers(low, high, size)
data = numpy.random.random_integers(1, 20000, 10)
print(data)
# numpy.random.normal(loc, scale, size), 获取正态随机数
# loc: 均值, scale: 偏移值, size: 个数
# 偏移值决定了每个数之间的差,当偏移值大于开始值时,会产生负数
data = numpy.random.normal(3.2, 29.2, 10)
print(data)

结果:

1
2
3
4
5
6
7
8
33
4
['f', 'g']
['a', 'b', 'c', 1]
[5 6]
[ 4478 13538 19636 466 7918 14936 15676 2916 3977 11810]
[-32.41772339 -18.03021801 10.54666195 2.94540939 -34.54169203
30.18054685 -94.33105754 -6.18915783 -21.3491869 27.70687129]

pandas模块的使用

pandas模块也已存在于Anaconda3中。

基本用法

1
2
3
4
5
6
7
8
import pandas

a = pandas.Series([1, 2, 3, 34]) # 相当于一维数组
b = pandas.DataFrame([[1, 2, 3, 4], ['a', 'b', 'c'], [5]]) # 相当于二维数组
print(a.head()) # 默认取头部前5行
print(a.head(2))
print(b.tail()) # 默认取尾部后5行
print(b.tail(1))

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0     1
1 2
2 3
3 34
dtype: int64
0 1
1 2
dtype: int64
0 1 2 3
0 1 2 3 4.0
1 a b c NaN
2 5 None None NaN
0 1 2 3
2 5 None None NaN

数据统计

1
print(b.describe()) # 显示统计数据信息

结果:

1
2
3
4
5
6
7
8
9
         3  # 数组中的元素个数
count 1.0 # 总数
mean 4.0 # 平均数
std NaN # 标准数
min 4.0 # 最小值
25% 4.0 # 分位数
50% 4.0 # 分位数
75% 4.0 # 分位数
max 4.0 # 最大值

转置

1
print(b.T)  # 转置

结果:

1
2
3
4
5
   0    1     2
0 1 a 5
1 2 b None
2 3 c None
3 4 NaN NaN

通过pandas模块导入数据

csv文件
1
csv_data = pandas.read_csv('usr/csv_file.csv')
Excel表格数据

该方法依赖于xlrd模块,使用之前需要安装该模块。

1
excel_data = pandas.read_excel('usr\excel_file.xlsx')
读取SQL

依赖于PyMySQL,需要安装此模块。

1
2
3
conn_str = pymysql.connect(host = '127.0.0.1', user = 'root', passwd = 'root', db = 'test_db')
sql = 'select * from test_table'
sql_data = pandas.read_sql(sql, conn_str)
读取html

依赖于lxml模块。

对于使用https协议请求的网页,依赖于BeautifulSoup4和html5lib模块。

读取html只会读取表格,也就是<table>标签包裹的内容。

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

1
2
local_html_data = pandas.read_html('usr\html_file.html')
online_html_data = pandas.read_html('https://book.douban.com')
读取txt文件
1
text_data = pandas.read_table('usr\text_file.txt')

scipy模块

该模块也集成在Anaconda3中。

matplotlib数据可视化分析

该模块在Anaconda3中也有集成。

基本使用

1
2
3
4
5
6
7
8
from matplotlib import pylab
import numpy

# 下面定义x轴和y轴
x = [1, 2, 3, 4, 8]
y = [1, 2, 3, 4, 8]
pylab.plot(x, y) # 将x,y轴的数据信息放入pylab,之后调用show方法画图
pylab.show()

结果:

matplotlib基本使用

自定义显示样式

类型
  • 直线图(默认)
  • - 直线
  • -- 虚线
  • -. -. 形式
  • : 细小虚线
颜色
  • 青色: c
  • 红色: r
  • 品红: m
  • 绿色: g
  • 蓝色: b
  • 黄色: y
  • 黑色: k
  • 白色: w
形状
  • 方形: s
  • 星形: *
  • 五角: p
  • 实例1:
1
2
pylab.plot(x, y, 'or')  # o代表画散点图,r表示红色
pylab.show()

结果:

红色散点图

  • 实例2:
1
2
3
4
5
6
pylab.plot(x, y, 'pr--')  # p表示图形是五角星,r表示红色,--表示虚线
pylab.title('Learning') # 标题
pylab.xlabel('Args') # x轴标签
pylab.ylabel('salary') # y轴标签
pylab.xlim(2) # 从x轴的2开作图
pylab.show()

结果:

实例2

直方图
1
2
3
data = numpy.random.normal(5.0, 4.0, 10)    # 正态随机数
pylab.hist(data)
pylab.show()

结果:

直方图1

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

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

例如:

1
2
3
data = numpy.random.normal(5.0, 4.0, 10)    # 正态随机数
pylab.hist(data, histtype= 'step')
pylab.show()

结果:

直方图2

子图

生成图表使用的方法是plot,子图则是subplot.

1
2
3
# 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)

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from matplotlib import pylab

x = [1, 4, 6, 9]
y = [3, 21, 33, 43]
pylab.subplot(2, 2, 1) # 声明一个大图里划分为4块(2*2),子图使用第1个区域(坐标为x=1,y=1)
pylab.plot(x, y)

x = [1, 2, 4, 5]
y = [40, 12, 6, 0]
pylab.subplot(2, 2, 2) # 声明一个大图里划分为4块(2*2),子图使用第1个区域(坐标为x=1,y=2)
pylab.plot(x, y)

x = [1, 2, 3, 4]
y = [13, 10, 6, 5]
pylab.subplot(2, 2, 3) # 声明一个大图里划分为4块(2*2),子图使用第3个区域(坐标为x=2,y=1)
pylab.plot(x, y)

x = [1, 2, 3, 4]
y = [80, 12, 90, 0]
pylab.subplot(2, 2, 4) # 声明一个大图里划分为4块(2*2),子图使用第4个区域(坐标为x=2,y=2)
pylab.plot(x, y)

pylab.show()

结果:

子图

实践

我们现在想统计网站的新闻浏览数与评论数,想知道这些数据最集中的位置,给出下面的数据:

no article_url reads_count comments_count
1 url1 2334 128
2 url2 3088 235
3 url3 12345 321
4 url4 5234 500
5 url5 2441 130
6 url6 2808 250
7 url7 3002 287
8 url8 4321 335
9 url9 4534 383
10 url10 18000 986
11 url11 3478 367
12 url12 4256 354

这里数据比较少,直接写在代码中,如果数据较多可以使用读取csv文件的方式将数据载入DataFrame数据结构中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from matplotlib import pylab
import pandas

data = [[1, 'url1', 2334, 12],
[2, 'url2', 3088, 235],
[3, 'url3', 12345, 321],
[4, 'url4', 5234, 500],
[5, 'url5', 2441, 130],
[6, 'url6', 2808, 250],
[7, 'url7', 3002, 287],
[8, 'url8', 4321, 335],
[9, 'url9', 4534, 383],
[10, 'url10', 18000, 986],
[11, 'url11', 3478, 367],
[12, 'url12', 4256, 354]]

csv_data = pandas.DataFrame(data)
data_T = csv_data.T # 转置
reads = data_T.values[2] # 取第3行
comments = data_T.values[3] # 取第4行
pylab.title('Reads and Comments Analysis')
pylab.xlabel('reads')
pylab.ylabel('comments')
pylab.plot(reads, comments, 'ob')
pylab.show()

结果:

实践

CATALOG
  1. 1. Python数据分析与挖掘技术概述
    1. 1.1. 数据分析模块
    2. 1.2. numpy模块的简单使用
    3. 1.3. pandas模块的使用
      1. 1.3.1. 基本用法
      2. 1.3.2. 数据统计
      3. 1.3.3. 转置
      4. 1.3.4. 通过pandas模块导入数据
        1. 1.3.4.1. csv文件
        2. 1.3.4.2. Excel表格数据
        3. 1.3.4.3. 读取SQL
        4. 1.3.4.4. 读取html
        5. 1.3.4.5. 读取txt文件
    4. 1.4. scipy模块
    5. 1.5. matplotlib数据可视化分析
      1. 1.5.1. 基本使用
      2. 1.5.2. 自定义显示样式
        1. 1.5.2.1. 类型
        2. 1.5.2.2. 颜色
        3. 1.5.2.3. 形状
        4. 1.5.2.4. 直方图
        5. 1.5.2.5. 子图
  2. 2. 实践