数据获取和处理

http://tushare.org/        财经数据

http://archive.ics.uci.edu/ml      机器学习

文本数据

csv和txt

  读取

import pandas as pd
df=pd.read_csv('xx.csv')
df=pd.read_table('xx.csv',sep=',')

list(open('xx.txt'))
df=pd.read_table('xx.txt',sep='\s+')
View Code

  分片/块读取文本数据

import pandas as pd
pd.read_csv('xx.csv',nrows=5) #读取5行
pd.read_csv('xx.csv',chunksize=5) #一批100个
View Code

  把数据写入文本格式

import pandas as pd
import numpy as np
from pandas import Series
data.to_csv('out.csv',sep='|',na_rep='NULL') #分隔符|,na值填充为NULL

dates=pd.date_range('1/1/2000',periods=7) #从2000/1/1开始,要7天数据
ts=Series(np.arange(7),index=dates)
ts.to_csv('tserties.csv')
View Code

  手动读写数据(按要求):资源有限的时候,如30w多条的数据,吃内存 

 1 import csv
 2 #一行一行读
 3 f=open('xx.csv')
 4 reader=csv.reader(f)
 5 for line in reader:
 6     print(line)
 7 
 8 lines=list(csv.reader(open('xx.csv')))
 9 header,values=lines[0],lines[1:]
10 data_dict={h:v for h,v in zip(header,zip(*values))}
View Code

JSON格式的数据

 1 import json
 2 obj=\
 3 """
 4 {"姓名":"张三",
 5 "住处":["天朝","挖煤国"]
 6 }
 7 """
 8 
 9 result=json.loads(obj) #字符串-》json
10 print(result)
11 print(result['住处'][0])
12 
13 asjson=json.dumps(obj) 
14 print(asjson)
View Code

xml和HTML

   html:beautifulSoup获取要找的元素

  xml:lxml解析

二进制格式

不方便人看,但是性能更好,方便存储

import pandas as pd
frame=pd.read_csv('xx.csv')
frame.to_pickle('frame_pickle') #以二进制写进去
View Code

2 数据库相关操作

  2.1sqlite数据库:import sqlite3

  2.2 mysql:import MySQLdb  一定要commit才可以执行

  2.3 memcache

  2.4 mongodb

 

3 爬虫

库Requests

 1 import requests
 2 from bs4 import BeautifulSoup
 3 
 4 #添加代理:反爬,不断更换代理IP
 5 proxies={
 6     "http":"http://10.10.1.10:3128",
 7     "https":"http://10.10.1.10:1080"
 8 }
 9 #代理需要账户和密码
10 # proxies={
11 #     "http":"http:user:pass@10.10.1.10:3128/",  
12 # }
13 content=requests.get("http://news.qq.com/",proxies=proxies).content
14 
15 soup=BeautifulSoup(content,"html5lib",from_encoding="GB2312")
16 
17 samples=soup.find_all("a")
18 for sample in samples:
19     print(sample.get_text())
View Code

模拟登陆

from bs4 import BeautifulSoup
import requests
s=requests.session()
data={'user':'用户名','passdw':'密码'}
res=s.post('https://www.douban.com/accounts/login?source=main',data)
#然后就可以抓取你要的内容了
View Code

案例:链家网抓取

设置请求头部信息,设置为浏览器

抓取列表页信息:time.sleep(1)

用bs4解析页面内容

清洗数据并整理到数据表中

  pandas.DataFrame

  对数据分隔

  合并分裂结果,pd.merge

 

posted @ 2018-03-03 16:24  88aa123  阅读(191)  评论(0编辑  收藏  举报