标签(空格分隔): Pythonhtml
读入读出一般能够划分为几个大类:读取文本文件和其余更高效的磁盘存储格式,加载数据库中的数据,利用Web API操做网络资源。web
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,以下表所示:正则表达式
函数 | 说明 |
---|---|
read_csv | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为, |
read_table | 从文件、URL、文件型对象中加载带分隔符的数据,默认的分隔符为制表符"\t" |
read_fwf | 读取定宽列格式数据 -- 木有分隔符的 |
read_clipboard | 读取剪贴板中的数据,能够看作read_table的剪贴板。将网页转换为表格时颇有用 |
for example:sql
In[]: import pandas as pd In[]: df = pd.read_csv('ex1.csv') # ''内写入文件所在的详细目录 In[]: df = pd.read_table('ex1.csv', sep = ',') # 或者使用table并指定分隔符 # 当你要读入的文件没有标题行时: In[]: df = pd.read_csv('ex2.csv', header = None) # 让pandas为其分配默认的列名 In[]: df = pd.read_csv('ex2.csv', names = ['a','b','c','d','message']) # 本身定义标题行 In [8]: names = ['a','b','c','d','message'] # 让其中的某列做为列索引 In [9]: pd.read_csv('ex2.csv', names = names, index_col = 'message') Out[9]: a b c d message hello 1 2 3 4 world 5 6 7 8 foo 9 10 11 12 In[]: pd.read_csv('ex4.csv', skiprows = [0, 2, 3]) # 略过第0,2,3行不读取 # 用一个字典为各列指定不一样的NA标记值 In[]: patterns = {'message':['foo', 'NA'], 'something':['two']} In[]: pd.read_csv('ex5.csv', na_values=patterns)
read_csv/read_table
函数的参数参数 | 说明 |
---|---|
path | 表示文件系统位置、URL、文件型对象的字符串 |
sep/delimiter | 用于对行中各字段进行拆分的字符序列或正则表达式 |
header | 用做列名的行号。若是没有header行就应该设置为None |
index_col | 用做行索引的列编号或列名,能够是单个名称/数字或由多个名称/数字组成的列表 |
names | 用于结果的列名列表,结合header = None |
skiprows | 须要忽略的行数 |
na_values | 一组用于替换NA的值 |
comment | 用于将注释信息从行尾拆分出去的字符 |
parse_dates | 尝试将数据解析为日期 |
nrows | 须要读取的行数 |
skip_footer | 须要忽略的行数 |
In[]: pd.read_csv('ex6.csv', nrows=5)
In[]: data = pd.read_csv('ex5.csv') In[]: data.to_csv('out.csv') # 将data中的数据写出到当前目录中的out.csv中 In[]: data.to_csv(sys.stdout, sep='|') # 打印到屏幕 In[]: data.to_csv(sys.stdout, na_rep='NULL') # 空字符处显示为NULL In[]: data.to_csv(sys.stdout, index=False, header=False) # 禁用行和列的标签 In[]: data.to_csv(sys.stdout, index=False, cols=['a', 'b', 'c']) # 按照指定的顺序显示列 # Series中的to_csv方法 In [39]: dates = pd.date_range('1/1/2000', periods = 7) In [40]: dates Out[40]: DatetimeIndex(['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05', '2000-01-06', '2000-01-07'], dtype='datetime64[ns]', freq='D') In [45]: ts = Series(np.arange(7), index = dates) In [46]: ts Out[46]: 2000-01-01 0 2000-01-02 1 2000-01-03 2 2000-01-04 3 2000-01-05 4 2000-01-06 5 2000-01-07 6 Freq: D, dtype: int64 In [47]: ts.to_csv('tseries.csv') In [48]: cat tseries.csv 2000-01-01,0 2000-01-02,1 2000-01-03,2 2000-01-04,3 2000-01-05,4 2000-01-06,5 2000-01-07,6 In[]: Series.from_csv('tseries.csv',parse_dates = False) # 从文件中读入到Series
In [50]: cat ex7.csv "a","b","c" "1","2","3" "1","2","3","4" In [51]: import csv In [52]: f = open('ex7.csv') In [53]: reader = csv.reader(f) In [54]: for line in reader: ...: print line ...: ['a', 'b', 'c'] ['1', '2', '3'] ['1', '2', '3', '4'] # 能够对数据作一些处理 In[]: lines = list(csv.reader(open('ex7.csv'))) In[]: header, values = lines[0], lines[1:] In[]: data_dict = {h:v for h,v in zip(header, zip(*values))}
参数 | 说明 |
---|---|
delimiter | 用于分割字段的单字符字符串,默认为',' |
lineterminator | 用于写操做的行结束符,默认为'\r\n'。读操做将忽略此选项 |
quotechar | 用于带有特殊字符的字段的引用符号,默认为'"' |
JSON(JavaScript Object Notation)已经成为经过HTTP请求在Web浏览器和其余应用程序之间发送数据的标准格式之一。数据库
import json In [65]: obj = """{"name":"Wes", "places_lived":["United States", "Spain", "Germany"], "pet":nu ...: ll, "siblings":[{"name":"Scott","age":25,"pet":"Zuko"},{"name":"Katy","age":33,"pet":" ...: Cisco"}]}""" In [68]: res = json.loads(obj) # 将JSON字符串转换为Python形式 In [69]: res Out[69]: {u'name': u'Wes', u'pet': None, u'places_lived': [u'United States', u'Spain', u'Germany'], u'siblings': [{u'age': 25, u'name': u'Scott', u'pet': u'Zuko'}, {u'age': 33, u'name': u'Katy', u'pet': u'Cisco'}]} # 将Python转换为json In [71]: asjson = json.dumps(res) In [72]: asjson Out[72]: '{"pet": null, "siblings": [{"pet": "Zuko", "age": 25, "name": "Scott"}, {"pet": "Cisco", "age": 33, "name": "Katy"}], "name": "Wes", "places_lived": ["United States", "Spain", "Germany"]}' In[]: data = DataFrame(res['siblings'], columns=['name', 'age']) In [75]: data Out[75]: name age 0 Scott 25 1 Katy 33
import requests In[]: url = 'http://www.baidu.com' In[]: resp = requests.get(url) In[]: import json In[]: data = json.loads(resp.text) # Response对象的text属性含有GET请求的内容,大多返回JSON对象,加载到Python对象中 In[]: data.keys()
In[]: import sqlite3 In[]: query = """create table test(a varchar(20), b varchar(20), c real, d integer);""" In[]: con = sqlite3.connect(':memory:') # 链接数据库 In[]: con.execute(query) In[]: con.commit() In[]: data = [('Atlanta', 'Georgia', 1.25, 6), ('Tall', 'Flor', 2.6, 3), ('Saca', 'Calif', 1.7, 5)] In[]: stmt = "insert into test values(?, ?, ?, ?)" In[]: con.execute(stmt, data) In[]: con.commit() In[]: datas = con.execute('select * from test') In[]: lines = datas.fetchall() # 从表中读取数据,将返回一个元祖列表 In[]: datas.description # 得到列名 In[]: DataFrame(rows, columns=zip(*datas.description)[0]) In[]: import pandas.io.sql as sql In[]: sql.read_frame('select * from test', con) # 传入sql语句和链接对象