pandas(一)

https://blog.csdn.net/qq_41221743/article/details/81172952

1.

Series的reindex()方法能修改Series的index,如果修改的index与创建的index没有对应的话,就会引入缺失值

import pandas as pd
import numpy as np
 
obj=pd.Series([4.1,4.2,5.7,8.9],index=['a','b','c','d'])
print(obj)
obj1=obj.reindex(['a','b','e'])
print(obj1)


 

reindex()方法也可以修改DataFrame的columns index 或则 rows index ,和Series一样没有对应的,将为缺失值。注意在修改DataFrame的columns,要在reindex()注明frame.reindex(columns)

frame=pd.DataFrame(np.arange(9.).reshape(3,3),index=['a','b','c'],columns=['one','two','three'])
print(frame)
frame1=frame.reindex(['a','b','c','d'])
print(frame1)
state=['one','two','four']
frame2=frame.reindex(columns=state)
print(frame2)


也可以使用更简洁的loc()来该改变index

frame3=frame.loc[['a','b','c','d'],state]
print(frame3)


2.按轴删除记录(axis)

drop()方法会删去传入的参数(axis)对应的某一行

对于Series,删除后悔返回一个新的obj。

obj=pd.Series(np.arange(5.),index=['a','b','c','d','e'])
print(obj)
obj1=obj.drop('d')
print(obj1)


对于DataFrame,因为它有rows 与 columns,所以在drop()参数中默认是删除行轴,如果加入axis=1 或者 axis='columns'就会删除列轴

代码:

frame=pd.DataFrame(np.arange(16.).reshape(4,4),index=['a','b','c','d'],columns=['one','two','three','four'])
#print(frame)
frame1=frame.drop(['a','b'])
print(frame1)
 
frame2=frame.drop(['one','two'],axis=1)
print(frame2)
frame3=frame.drop(['three','four'],axis='columns')
print(frame3)


3.索引,选择,过滤

对于Series:

索引:

import numpy as np
import pandas as pd
 
obj=pd.Series(np.arange(4.),index=['a','b','c','d'])
print(obj)


按照index的取值:

print(obj['c'])

按照obj中的第几个:

print(obj[2])

切片,按照区间数字,区间一定要记住是左闭右开:

print(obj[2:4])

选中行:

print(obj[['a','b','c']])

按照第几个,传入存入的列表:

print(obj[1,3])

设置条件:

print(obj[obj<2])

按照label标签的值切片的时候,不会像上面的切片一样不包括尾结点,它会包括尾部结点

print(obj['b':'c'])

可以给选中的更改值

obj['b':'c']=5.
print(obj)
obj1=obj
obj1[1:3]=6.
print(obj1)


DataFrame:

对于DataFrame,我们可以通过indexing  数值,序列来像Series一样选择一个以上的列。如果要选择通过条件的行加列,我会在下面介绍

frame=pd.DataFrame(np.arange(16.).reshape(4,4),index=['a','b','c','d'],columns=['one','two','three','four'])
print(frame)


print(frame['two'])

print(frame[['three','four']])

从上面的这些大致看得出来DataFrame 和Series的索引没多大区别

print(frame[:2])

print(frame[frame['three']>5.])

布尔型DataFrame:

print(frame<5.)

给符合条件的重新赋值:

frame[frame<5.]=0.
print(frame)


 

方法loc[],iloc[]! 我们可以通过这两个方法来选择DataFrame中的一行多列或者是多行多列!

下面通过例子来介绍如何用:

frame:

通过loc[]来选择多行多列:

frame1=frame.loc[['a','b'],['two','three']]
print(frame1)
 

我们使用iloc也能实现同样的效果,这次我们不选择传入的参数是列或行标签的标签名,而是传入每行,列的序列号。如果你想传入标签名,也可以的

frame2=frame.iloc[[0,1],[1,2]]
print(frame2)


print(frame.iloc[2]),一般默认的都是第一个参数为行。顺序都是先行后列,比如下面输出第3行


loc ,ilo都已可以用于切片,如:

print(frame.loc[:'d',['one','three']]),切片从那么多例子可以看出来,如果传入的是序号那么就不会包括尾结点,如果不是序号,是label值就会包括尾结点

iloc方法与loc不同的一点是还可以在后面附加条件

frame.loc[:,:3][frame.three>5.]


--------------------- 
作者:小白Py 
来源:CSDN 
原文:https://blog.csdn.net/qq_41221743/article/details/81172952 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/baidu_32542573/article/details/87168293
今日推荐