Python入门:Numpy 和 Pandas 基本语法(2)

# 创建一个5*5的,通过numpy进行reshape
df1 = DataFrame(np.random.rand(25).reshape([5,5]),index=['A','B','D','E','F'],colums=['c1','c2','c3','c4','c5']) # 遗漏的index中的C,通过reindex来恢复
df1.reindex(index=['A','B','C','D','E','F']) # C被恢复并把value填充为NaN
# columns 同理
# 当index减少时就表现出切割的现象
df1.drop('A',axis=0) # axis=0,代表删除行;axis=1,代表删除列(后面遇到axis同样是这个意思)

五、NaN

n = np.nan

type(n) 是个浮点数float

与nan的运算结果均是nan

nan in series:

s1.isnull\notnull() 判断是否为nan

s1.dropna() # 删除掉value为NaN的行

nan in dataframe:

判断同series

df.dropna(axis=0,how='any',thresh=None) # axis表示行和列0,1来表示,how为any时表示有Nan就删掉,为all时表示全为nan时才删掉;thresh表示一个界限,超过这个数字的nan则被删掉
df.fillna(value=1) # 表示所有为nan的地方填充为1
df.fillna(value={0:0,1:1,2:2,3:3}) # 表示第一列的填充1,第二列的填充2,后面同理

注:dropna,fillna不改变原始数组

六、多级index

index=[['1','1','1','2','2','2'],['a','b','c','a','b','c']] # 1,2为一级标题,abc为二级标题,即1的series下有abc,原始series下有1,2;获取内容时,可以s1['1']['a']

s1[:,'a'] 返回所有一级series里的a

与dataframe的转换:

df1 = s1.unstack()

逆转换:

s2 = df1.unstack() # 这时一二级换了位置

s2 = df1.T.unstack() # 这时是和原始完全一样的

注:dataframe的index和columns都可以转换成多级的

七、mapping and replace

当想在一个dataframe中加一列(columns),可以直接加df['列名']=Series([数据])
也可以通过map:创建一个字典,字典中的键是dataframe中的columns:
df1['新列名'] = df1['字典中的键那一列'].map(那个字典) 这个可以固定对应位置,方便改值,可以指定index来改值

replace in series:

s1.replace({1,np.nan}) # 通过字典来改值
s1.replace([1,2,3],[10,20,30]) # 把123索引改成10,20,30 

  以上内容是我的一点点总结,希望能给有需要的朋友带来带你帮助,也希望有大神来指点指点。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6e034a2e19d7f252df298268d0d4d82b.html