header – 是否保留列名
默认取值为 True,即保留列名。
data = pd.read_csv('./数据文件/距离最小的三个点.csv', sep='#') print(data) data.to_excel( './数据文件/data2.xlsx', sheet_name='data2', header=False )
index – 是否保留行索引
默认取值为 True,即保留行索引。
data = pd.read_csv('./数据文件/距离最小的三个点.csv', sep='#') print(data) data.to_excel( './数据文件/data2.xlsx', sheet_name='data2', header=False, index=False )
7. merge() – 表格的连接
left、right – 指定左表右表
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([4, 3, 6], index=['a', 'b', 'e']), pd.Series([4, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print(pd.merge(df1, df2))
两个表中都 b 列,根据 b 列进行内连接。连接后重复列保留一个
how – 连接方式
使用 how 指定连接方式。
- left:左连接
- right:右连接
- outer:外连接
- inner:内连接(默认)
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([4, 3, 6], index=['a', 'b', 'e']), pd.Series([4, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print(pd.merge(df1, df2, how='outer'))
on – 指定连接依据的列名
两个表连接时,依据的列的列名相同时,使用 on 指定连接所依据的列名。
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([4, 3, 6], index=['a', 'b', 'e']), pd.Series([4, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print(pd.merge(df1, df2, how='outer', on='b'))
left_on、right_on – 左右表连接时各自依据的列名
- left_on:连接时,左表所依据的列的列名
- right_on:连接时,右表所依据的列的列名
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['a', 'b', 'e']), pd.Series([1, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print( pd.merge( df1, df2, how='outer', left_on='f', right_on='a' ) )
suffixes – 为左右表中重复列名定义后缀
使用 suffixes 为左右表中重复列名定义后缀,使得连接两个表后可以区分相同列名的列来自左表还是右表。
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['a', 'b', 'e']), pd.Series([1, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print( pd.merge( df1, df2, how='outer', left_on='f', right_on='a', suffixes=('1', '2') ) )
8. concat() – 表格的拼接
concat() 一般用于表格的纵向拼接。
axis – 拼接的方向
- axis = 0:纵向拼接表(默认)
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['a', 'b', 'e']), pd.Series([1, 2, 6], index=['a', 'b', 'e']) ] df2 = pd.DataFrame(l2) print( pd.concat([df1, df2]) )
列索引不一致
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['f', 'b', 'c']), pd.Series([1, 2, 6], index=['f', 'b', 'c']) ] df2 = pd.DataFrame(l2) print( pd.concat([df1, df2]) )
- axis = 1:横向拼接表
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['f', 'b', 'c']), pd.Series([1, 2, 6], index=['f', 'b', 'c']) ] df2 = pd.DataFrame(l2) print( pd.concat([df1, df2], axis=1) )
l1 = [ pd.Series([1, 2, 3], index=['f', 'b', 'c']), pd.Series([1, 2, 3], index=['f', 'b', 'c']) ] df1 = pd.DataFrame(l1) l2 = [ pd.Series([1, 3, 6], index=['f', 'b', 'c']), pd.Series([1, 2, 6], index=['f', 'b', 'c']) ] df2 = pd.DataFrame(l2) df2.index = [2,3] print( pd.concat([df1, df2], axis=1) )
行索引不一致
9. get_dummies() – 对离散数据进行独热编码
对表中的取值为离散数据的列进行独热编码,将离散类型的信息转化为使用独热编码进行表示的形式。
data – 需要进行处理的表
l1 = [ pd.Series(['a', 12], index=['f', 'g']), pd.Series(['b', 11], index=['f', 'g']), pd.Series(['a', 12], index=['f', 'g']) ] df1 = pd.DataFrame(l1) print( pd.get_dummies(df1) )
f 列中的数据为离散型的数据,可以使用 get_dummies() 对该列进行独热编码。
prefix – 设置列名的前缀
使用 prefix 设置进行独热编码的列的列名的前缀,默认值为 None
l1 = [ pd.Series(['a', 12], index=['f', 'g']), pd.Series(['b', 11], index=['f', 'g']), pd.Series(['a', 12], index=['f', 'g']) ] df1 = pd.DataFrame(l1) print( pd.get_dummies(df1, prefix='hello_') )