目录
Series
DataFrame
Series过滤NaN值
DataFrame过滤NaN值
DataFrame选取元素
Series
import pandas as pd
ser = pd.Series([1,2,3,4,5],index=['a','b','e','d','c'])
print(ser)
a 1
b 2
e 3
d 4
c 5
dtype: int64
print(ser.sort_index()) #按索引排序
a 1
b 2
c 5
d 4
e 3
dtype: int64
print(ser.sort_index(ascending=False) #根据索引排倒序
e 3
d 4
c 5
b 2
a 1
dtype: int64
print(ser.sort_values()) #根据元素进行排序
a 1
b 2
e 3
d 4
c 5
dtype: int64
DataFrame
DataFrame和Series不同,形象比喻一下,Series中的数据像是一条线,只有长度,没有宽度,而DataFrame中的数据分布是个二维图形,有宽度有长度,因此DataFrame中的数据排序虽和Series有相似之处,但两者并不能并题而论。
frame = pd.DataFrame(np.arange(16).reshape(4,4)),index=['red','green','yellow','red'],columns = ['ball','pen','pencil','pencil'])
print(frame.sort_index()) #按索引排序
ball pen pencil pencil
green 4 5 6 7
red 0 1 2 3
red 12 13 14 15
yellow 8 9 10 11
print(frame.sort_index(by='pen') #通过by选定指定元素进行排序
ball pen pencil pencil
red 0 1 2 3
green 4 5 6 7
yellow 8 9 10 11
red 12 13 14 15
print(frame.)
Series过滤NaN值
ser = pd.Series([0,1,2,np.NaN],index=['red','yellow','blue','green'])
print(ser.dropna())
red 0.0
yellow 1.0
blue 2.0
dtype: float64
print(ser[ser.notnull])
red 0.0
yellow 1.0
blue 2.0
dtype: float64
DataFrame过滤NaN值
DataFrame过滤NaN值要尽量避免使用dropna()方法,因为使用dropna()时,只要行或列有一个NaN元素,该行或列的元素就会全被删除,因此,为避免这种事情发生,要使用how选项。
frame = pd.DataFrame([[6,np.NaN,6],[np.NaN,np.NaN,np.NaN]],index=['blue','green','red'],columns=['ball','mug','pen']
print(frame.dropna(bow='all'))
ball mug pen
blue 6 NaN 6
red 2 NaN 5
DataFrame选取元素
frame = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),
columns=list('uxyz'))
h=frame.loc['a','y'] #定点查询
print(h)
2
m = frame.iloc[2,2] #坐标查询 即第(n+1,n+1)个数
print(m)
10
n=frame.iloc[0] #查询第一行
u 0
x 1
y 2
z 3
Name: a, dtype: int32
x=frame.iloc[:,0] #查询第一列
print(x)
a 0
b 4
c 8
d 12
Name: u, dtype: int32
同样,也可用loc定位到行名、列名,但iloc必须内用数字,在此不再赘述。