read_csv方法从文件、URL、文件型对象加载带分隔符的数据,默认分隔符是逗号。

read_table方法从文件、URL、文件型对象加载带分隔符的数据,默认分隔符为制表符。

read_fwf方法读取固定宽度格式的数据

类型推断是上面这些函数最重要的功能之一,不需要指定列的类型。

df = pd.read_csv('ex1.csv')

我们也可以使用read_table,不过需要指定分隔符

pd.read_table('ex1.csv', sep=',')

并不是所有的数据都是有标题的

pd.read_csv('ex2.csv', header=None)
pd.read_csv('ex2.csv', names=['a', 'b', 'c', 'd', 'message'])

假设希望将message列作为DataFrame的索引

names = ['a', 'b', 'c', 'd', 'message']
pd.read_csv('ex2.csv', names=names, index_col='message')

使用多个列做成层次化索引

parsed = pd.read_csv('csv_mindex.csv', index_col=['key1', 'key2'])

有些表格不能使用固定的分隔符分隔,需要使用正则表达式作为read_table的分隔符

result = pd.read_table('ex3.txt', sep='\s+')

    A        B        C
aaa    -0.264438    -1.026059    -0.619500
bbb    0.927272    0.302904    -0.032399
ccc    -0.264273    -0.386314    -0.217601
ddd    -0.871858    -0.348382    1.100491

上面文件由于各个字段是由数量补丁的空白符分隔,因此可以使用正则表达式\s+ 表示

由于列名比数据航的数量少,因此read_table推断第一列是DataFrame的索引。

跳过某些行

原始数据

!cat ex4.csv

# hey!
a,b,c,d,message
# just wanted to make things more difficult for you
# who reads CSV files with computers, anyway?
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo

跳过注释行

pd.read_csv('ex4.csv', skiprows=[0, 2, 3])

缺失值处理

默认情况,pandas使用一组经常出现的标记值进行识别,如NA、-1或NULL

!cat ex5.csv

something,a,b,c,d,message
one,1,2,3,4,NA
two,5,6,,8,world
three,9,10,11,12,foo

读取数据

result = pd.read_csv('ex5.csv')

na_values可以接受一组用于表示缺失值的字符串

result = pd.read_csv('ex5.csv', na_values=['NULL'])
result

可以用字典为各列指定不同的NA标记值

sentinels = {'message': ['foo', 'NA'], 'something': ['two']}
pd.read_csv('ex5.csv', na_values=sentinels)

results matching ""

    No results matching ""