Pandas玩转数据

Pandas玩转数据

一、排序功能

0x1 Series的排序

s1 = Series(np.random.randn(10))  
s2 = s1.sort_values(ascending=False)  # 按照值降序排列
s2.sort_index()    # 按照索引升序排列

0x2 Dataframe的排序

df1 = DataFrame(np.random.randn(40).reshape(8,5), columns=['A','B','C','D','E'])
Pandas玩转数据

df1['A'].sort_values()      # 升序排列A列,返回一个Series
f2 = df1.sort_values('A')   # 按照A列顺序排列,返回一个Dataframe 
df2.sort_index()            # 按照索引排列

二、Index重命名

df1 = DataFrame(np.arange(9).reshape(3,3), index=['BJ','SH','GZ'], columns=['A','B','C'])
Pandas玩转数据

df1.index = Series(['bj','sh','gz'])  # 通过series重命名
df1.index = df1.index.map(str.upper)  # 通过map函数重命名
df1.rename(index=str.lower, columns=str.lower)  # 返回一个新Dataframe
df1.rename(index={'BJ': 'beijing'}, columns={"A":'a'})  # 通过字典重命名

写自己的Map函数

def test_map(x):
    return x + '_ABC'
    
df1.index.map(test_map)     # 调用函数重命名
df1.rename(index=test_map)

三、Merge操作

df1 = DataFrame({'key':['X','Y','Z','X'], 'data_set_1':[1,2,3,4]})
df2 = DataFrame({'key':['X','B','C'], 'data_set_2':[4,5,6]})

Pandas玩转数据
Pandas玩转数据

pd.merge(df1,df2)
pd.merge(df1,df2,on=None)

on参数可以指定merge的列名,没有on参数意思为on=None

dataframe的merge是按照两个dataframe共有的column进行连接,两个dataframe必须具有同名的column。 如果两个dataframe的column都不相同,则会在merge的时候报错。
Pandas玩转数据

而当两个dataframe具有相同的column时,若两个column中没有相同的value,则会merge一个空的dataframe。
Pandas玩转数据

how参数用于指定merge时的操作。

pd.merge(df1,df2, on='key',how='inner')
Pandas玩转数据

指定how=left,就是让df1保留所有的行列数据,df2根据df1的行列进行补全。同理,right也可以指定。outer就是how指定为left和right的结果的集合

pd.merge(df1, df2, on='key', how='left')
pd.merge(df1,df2, on='key', how='right')
pd.merge(df1,df2, on='key', how='outer')

Pandas玩转数据

四、Concatenate和Combine操作

0x1 Concatenate 连接

Series中矩阵(array)的连接
Pandas玩转数据
最终形成一个新的矩阵,大小为3列6行。其实就是将arr2连接到了arr1的下面。
更改连接方式
其中有一个参数:axis,默认为0,表示按列连接(增加行数),即将第二个矩阵的列依次连接到第一个矩阵的列的下面。如果axis=1,表示按行连接(增加列数)。
Pandas玩转数据

Series的连接
Pandas玩转数据

注意,这里使用的是pandas的方法concat,因为上边使用的numpy的concatenate方法不能讲index进行连接,只能连接values,如下:

Pandas玩转数据

更改连接方式
同样的,也有一个axis的参数,默认为0。当指定axis=1时,将增加列,即将形成一个dataframe,没有的值将会填充为NaN
Pandas玩转数据

Dataframe的连接
Pandas玩转数据

没有值的地方将会填充为NaN

0x2 Combine 填充,补充

Pandas玩转数据

从结果可看出,s1用s2中的值填充了其中对应为NaN的值。

Pandas玩转数据

上一篇:pandas写入多组数据到excel不同的sheet


下一篇:系统重温Pandas笔记:(六)连接