斑点鱼将《利用python进行数据分析》中的第六章整理了一下,看完基本可以对数据的读取和输出游刃有余。接下来的文章也是针对其他章节的整理,希望大家可以跟着斑点鱼一起学习丫~
一、读写文本数据格式
#原数据data,大家可以随意创建一个data.csv文件读取
1.读取文本数据格式
import pandas as pd
import os
os.chdir('C:\Users\E440\Desktop\PythonStudy\input')
os.getcwd()
df=pd.read_csv('data.csv')
df=pd.read_table('data.csv',sep=',')
df=pd.read_csv('data.csv',names=['a','b','c','message'])
df=pd.read_csv('data.csv',index_col='message')#这样横索引就是message
2.将数据写出到文本格式
df.to_csv('out.csv')
df.to_csv('out.csv',index=False,header=False)
3.手工处理分隔符格式
%读取文件
import csv
f=open('data.csv')
reader=csv.reader(f)
for line in reader:
print line
lines=list(csv.reader(open('data.csv')))
header,value=lines[0],lines[1:]
data_dict=
data_dict
#新分隔符
class my_dialect(csv.Dialect):
linterminator='\n'
delimiter=';'
quotechar='"'
reader=csv.reader(f,dialect=my_dialect)
reader=csv.reader(f,delimiter='')
%输出文件
with open('data.csv','w') as f:
writer=csv.writer(f)
writer.writerow(('one','two','three'))
writer.writerow(('1','2','3'))
writer.writerow(('1','2','3'))
writer.writerow(('1','2','3'))
4.XML&HTML:Web信息收集
获取URL,首先用urllib2将其打开,再用lxml解析
from lxml.html import parse
from urllib2 import urlopen
parsed=parse(urlopen('http://car.bitauto.com/geely/?WT.mc_id=bdaldb__34'))
doc=parsed.getroot()
##得到该文档中所有URL链接,HTML中链接是a标签
links=doc.findall('.//a')
links
lnk=links[28]
lnk
lnk.get('href')#得到url
lnk.text_content()#得到链接文本
##得到全部URL
urls=[lnk.get('href') for lnk in doc.findall('.//a')]
urls[-10:]#最后第10个到最后
##得到表格
tables=doc.findall('.//table')
#标题行
calls=table[9]
#数据行
rows=calls.findall('.//tr')
#单元格th,td
def _unpack(row,kind='td'):
elts=row.findall('.//%s'%kind)
return [val.text_content() for val in elts]
_unpack(rows[0],kind='th')
_unpack(rows[1],kind='td')
二、使用html和web api
import requests
resq=requests.get(url)
resq
resq.text
import json
data=json.loads(resq.text)
data.keys
三、使用数据库
import sqlite3
query="""
create table test
(a varchar(20),b varchar(20),c real,d integer);"""
con=sqlite3.connect(':memory:')
con.execute(query)
con.commit()
data=[('china','a',1,6),('america','b',2,3),('uk','c',3,4)]
stmt="insert into test values(?,?,?,?)"
con.executemany(stmt,data)
con.commit()
cursor=con.execute('select * from test')
rows=cursor.fetchall()
rows#得到的是元组
cursor.description#构造dataframe,需先构造列名
pd.DataFrame(rows,columns=zip(*cursor.description)[0])
#上面一步太复杂,下面简化步骤
sql.read_sql_query('select * from test',con)
#read_sql_table:Read SQL database table into a DataFrame
#read_sql_query:Read SQL query into a DataFrame
一起学习的小伙伴如果有什么想法或者意见,欢迎沟通~
领取专属 10元无门槛券
私享最新 技术干货