Python全栈数据工程师养成攻略

  深度学习和机器学习光学习理论是远远不够的,最终还是要落实到实践上面,两个一起结合起来效果才更好,宏伦工作室带着了解一些库和运行一些python代码,记录一些干货。
  近年来大数据(BigData)的概念获得不行,python已经成为机器学习热门的工具。建议安装anaconda,把与python有关的库(numpy,scipy等等)都打成一个包。pycaffe 的安装以及 notebook 环境配置是为了更方便的去使用深度学习框架。notebook 使用浏览器作为界面使用,可以编写和执行 python 代码。
  从个人角度出发,在时间有限和资源有限的条件下,实现一些个人能力足以完成的、简单而有趣的数据工程和数据应用。

1.数据工程和编程语言

数据工程:采集、存储、清洗、分析、可视化
编程语言:C++、Java和Python都需要涉及,R统计分析语言,web:php、html、css、javascript
结合

  • 采集:python
  • 存储:python+数据库
  • 清洗:python
  • 分析:python+R
  • 可视化:R+web

2.Python的数据类型与运算符

Python2基本语法
(1)解释性(无需编译)、交互式、面向对象、跨平台、简单好用
(2)变量名:可以包含英文、数字以及下划线,但不能以数字开头,区分大小写
(3)变量类型:弱类型语言、无需声明

  • 数字Number:整型和浮点型
  • 字符串String:字符串拼接、长度、切片
  • 列表List:添加元素、求长、切片、删除
  • 元组Tuple:readonly
  • 字典:Dictionary:赋值、判断是否存在某个key

(4)注释:#,三引号

(5)保留字符:and,not,class,def,等等

(6)行和缩进

(7)运算符:

  • 算术运算符:+,-,*,/,%
  • 比较运算符:==,!=,>,<,>=,<=
  • 赋值运算符:=,+=,-=,*=,%=
  • 逻辑运算符:and,or,not

(8)条件
If…
If..else…
If…elif..else
(9)循环
while
continue
pass//占一行代码,不会执行任何操作
(10)时间:time.time()
(11)文件:读写文件
(12)异常
(13)函数:def

实战:西游记用字统计
统计《西游记》中共出现了多少个不同的汉字;每个汉字出现了多少次;出现得最频繁的汉字有哪些
设计内容:读文件、列表的使用、字典的使用、字典的排序、写文件
示例:

import sys
reloda(sys)
sys.setdefaultencoding('utf8')
import json

fr = open('xyj.txt','r')

characters = []
start = {}

for line in fr:
    line = line.strip()

    if len(line) == 0;
        continue

    line =unicode(line)
    print type(line)

    for x in xrange(0, leng(line));
        if line[x] in [' ','\t','\n',',','。','、','【','】','“','”',':',';','(',')','《','》','‘','’','{','}','?']
            continue
        if not line[x] in characters:
            characers.append(line[x])

        if not start.has_key(line[x])
                start[line[x]] = 0
            start[line[x]] += 1

fw = open('result.json','w')
fw.write(json.dumps(start))
fw.close()

start = sorted(start.iteritems(),key=lambda d:d[1], reverse=True)

forx in xrange(0.20):
    print characters[x]

print '*' * 20  

for x in xrange(0,20):
    print start[x][0],start[x][1]

fw = open('result.csv','w') 
for item in start:
    fw.write(item[0] + ',' + str(item[1]) + '\n')
fw.close()

fr.close()

3.数据 解读数据结构和类型

3.1数据的结构(类似地铁数据):

  • 静态数据:线路、站点(不一定有时间戳,更新慢)
  • 动态数据:刷卡记录(必有时间戳,不断产生)
  • 时间戳:1970年1月1日0时0分0秒到现在所经历的秒数

3.2数据的组成

扫描二维码关注公众号,回复: 2724379 查看本文章
  • 行:记录
  • 列:字段、属性
  • 二维数组、表

3.3数据的类型

  • TXT:纯文本
  • CSV:逗号分隔值(相当于二维数组)
  • JSON:键值对
  • SQL:数据库文件

4.爬虫 Http请求

4.1访问一个网页
url:协议 + 域名/IP + 端口 + 路由 + 参数
4.2开发者工具
显示网页源代码、检查
① Element:页面渲染之后的结构,任意调整,即时显示
② Consule:打印调试
③ Source:使用到的文件
④ NetWork:全部网络请求
4.3Http请求
Http是目前最通用的web传输协议
① GET:参数包含在url中
② POST:参数包含在数据包中,url中不可见
4.4Url类型
①html:返回html结构页面,通过浏览器渲染后呈献给用户
②API:Application Programming Interfaces,请求完后完成某些功能,例如返回数据

5.爬虫 使用urllib2获取数据

5.1 发起GET请求

import sys
reload(sys)
sys.setdefaultencoding('utf8')

import urllib2
import urllib

import json
from bs4 import BeatyfulSoup

url = 'http://kaoshi.edu.sina.com.cn/college/scorelist?tab=batch&wl=1&local=2&batch=&syear=2
013'

request = urllib2.Request
response =urllib2.urlopen(request,timeout=20)
result = unicode(response.read())

print result

5.2发起POST请求

import sys
reload(sys)
sys.setdefaultencoding('utf8')

import urllib2
import urllib

import json
from bs4 import BeatyfulSoup

# GET
'''
url = 'http://kaoshi.edu.sina.com.cn/college/scorelist?tab=batch&wl=1&local=2&batch=&syear=2
013'

request = urllib2.Request
response =urllib2.urlopen(request,timeout=20)
result = unicode(response.read())

print result
'''

# POST
url = 'http://shuju.wdzj.com/depth-data.html'
data = urllib.urlencode({'typel':1,'type2':2,'status':0,'wazjPlatId':59})
request = urllib2.Request(url)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
result = response.read()
for key in json.loads(result).keys():
    print key

5.3 处理返回结果
Html:BeautifulSoup,需要有一些 CSS 基础
API:JSON

猜你喜欢

转载自blog.csdn.net/Prototype___/article/details/81387063