《Python for Data Analysis》
数据加载
read_csv
从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号
read_table
从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(“\t”)
pd.read_csv('ex1.csv')
等价于pd.read_table('ex1.csv', sep=',')
to_csv
将数据写到一个以逗号分隔的文件中
合并
pandas.merge
根据一个或多个键将不同DataFrame中的行连接起来。
In [15]: df1 = DataFrame({'key':['b','b','a','c','a','b'],'data1':range(6)})
In [16]: df2 = DataFrame({'key':['a','b','a','b','d'],'data2':range(5)})
In [17]: pd.merge(df1, df2, on='key', how = 'left')
Out[17]:
data1 key data2
0 0 b 1.0
1 0 b 3.0
2 1 b 1.0
3 1 b 3.0
4 2 a 0.0
5 2 a 2.0
6 3 c NaN
7 4 a 0.0
8 4 a 2.0
9 5 b 1.0
10 5 b 3.0
警告: 在进行列-列连接时,DataFrame对象中的索引会被丢弃。(可以将有意义的索引放到列中。)
pandas.concat
可以沿着一条轴将多个对象堆叠到一起。 轴向连接
np.concatenate
:
In [19]: arr = np.arange(12).reshape((3,4))
In [20]: arr
Out[20]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
In [21]: np.concatenate([arr,arr], axis=1)
Out[21]:
array([[ 0, 1, 2, 3, 0, 1, 2, 3],
[ 4, 5, 6, 7, 4, 5, 6, 7],
[ 8, 9, 10, 11, 8, 9, 10, 11]])
pandas.concat
:
In [25]: a1 = DataFrame(arr)
In [26]: a1
Out[26]:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
In [27]: pd.concat([a1,a1], axis=1)
Out[27]:
0 1 2 3 0 1 2 3
0 0 1 2 3 0 1 2 3
1 4 5 6 7 4 5 6 7
2 8 9 10 11 8 9 10 11
In [29]: pd.concat([a1,a1], axis=1, ignore_index=True)
Out[29]:
0 1 2 3 4 5 6 7
0 0 1 2 3 0 1 2 3
1 4 5 6 7 4 5 6 7
2 8 9 10 11 8 9 10 11
axis=1
是列,每列是一个向量,沿行传播
combine_first
用参数对象中的数据为调用者对象的缺失数据“打补丁”,并且会进行数据对齐。
In [33]: a = Series([np.nan, 2.5, np.nan, 3.5, 4.5, np.nan], index=['f','e','d','c','b','
...: a'])
In [34]: b = Series(np.arange(len(a),dtype=np.float64), index=['f','e','d','c','b','a'])
In [35]: a
Out[35]:
f NaN
e 2.5
d NaN
c 3.5
b 4.5
a NaN
dtype: float64
In [36]: b
Out[36]:
f 0.0
e 1.0
d 2.0
c 3.0
b 4.0
a 5.0
dtype: float64
In [37]: b[:-2]
Out[37]:
f 0.0
e 1.0
d 2.0
c 3.0
dtype: float64
In [39]: a[2:]
Out[39]:
d NaN
c 3.5
b 4.5
a NaN
dtype: float64
In [40]: b[:-2].combine_first(a[2:])
Out[40]:
a NaN
b 4.5
c 3.0
d 2.0
e 1.0
f 0.0
dtype: float64