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数据的组成

  • 行:记录
  • 列:字段、属性
  • 二维数组、表

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

#!/usr/bin/env python
# coding:utf8

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

import urllib
import urllib2
import json
from bs4 import BeautifulSoup

tags = []
url = 'https://movie.douban.com/j/serch_tags?type=movie'

request = urllib2.Request(url=url)
response = urllib2.urlopen(request,timeout=20)
result = json.loads(response,read())
tags = result['tags']

movies = []

for tag in tags:
    limit = 0
    while 1:
                url ='https://movie.douban.com/j/serch_tags?type=movie&tag=' + tag + '&sort=recommend&pages_'
    response = urllib2.urlopen(request,timeout=20)
    result = json.loads(response,read())

    result = result['subjects']

    if len(result) == 0:
        break   

    limit+=20
    for item in result:
        movies.append(item)
    #####
    break
#####
break

for x in xrange(0,len(moivies)):
    item = movies[x]['name']
    request = urllib2.Request(url=item['url'])
    response = urllib2.urlopen(request,timeout=20)
    result = response.read()
    html = BeautifulSoup(result)        
    html.select('h1')[0]
    title = title.select('span')[0]
    title = title.get_text()

    movies[x]['title'] = title

fw = open('moive.txt','w')

for item  in movies
    tmp = ''
    for key,value in item.items():
        tmp += str(value) + ','
fw.close()

    info = html.select("#info span .pl")
    values = html.select("#info span.attrs")

    for i in xrange(0,len(keys)):
        print keys[i].get_text()
        print values[i].get_text()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客范儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值