本章主要介绍pandas对数据分输入和输出。通常有以下几种类型:读取文本文件及硬盘上其他更高效的格式文件、从数据库载入数据、与网络资源进行交互(比如Web API)。
1. 文本格式数据的读写
使用最多的函数:
read_csv : 从文件、URL或文件型对象读取分隔好的数据,默认分隔符是逗号
read_table: 从文件、URL或文件型对象读取分隔好的数据,默认分隔符是制表符(’\t’)
read_excel: 从Excel的XLS或XLSX文件中读取表格
read_html: 从HTML文件中读取所有表格数据
read_json: 从JSON字符串中读取数据
read_sql: 将SQL查询的结果(使用SQLAlchemy)读取为pandas的DtatFrame
! type pydata-book-2nd-edition\examples\ex1.csv # 使用type命令来打印文件的原始内容
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
df = pd.read_csv('pydata-book-2nd-edition\examples\ex1.csv')
df
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
pd.read_table("pydata-book-2nd-edition\examples\ex1.csv", sep=',') #指定分隔符
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
1.1 读取时的一些选项
a. 有些文件并不包含表头行,可以指定pandas的默认列名,也可以指定列名
! type pydata-book-2nd-edition\examples\ex2.csv
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
pd.read_csv('pydata-book-2nd-edition\examples\ex2.csv') # 默认将第一行作为列名
1 2 3 4 hello
0 5 6 7 8 world
1 9 10 11 12 foo
pd.read_csv("pydata-book-2nd-edition\examples\ex2.csv", header=None) # 使用pandas默认列名
0 1 2 3 4
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
pd.read_csv('pydata-book-2nd-edition\examples\ex2.csv', names=['a', 'b', 'c', 'd', 'message'])
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
pd.read_csv('pydata-book-2nd-edition\examples\ex2.csv', names=['a', 'b', 'c', 'd', 'message'],
index_col='message')
a b c d
message
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12
b. 可以从多个列中形成一个分层索引
! type pydata-book-2nd-edition\examples\csv_mindex.csv
key1,key2,value1,value2
one,a,1,2
one,b,3,4
one,c,5,6
one,d,7,8
two,a,9,10
two,b,11,12
two,c,13,14
two,d,15,16
pd.read_csv('pydata-book-2nd-edition\examples\csv_mindex.csv', index_col=['key1', 'key2'])
value1 value2
key1 key2
one a 1 2
b 3 4
c 5 6
d 7 8
two a