今天来简单汇总一下Pandas的基本命令操作,这里就不仔细讲解枯燥的语法了,直接用命令来展示
创建Series对象
apples = pd.Series([3,2,0,1],index=['a','b','c','b'])
apples
apples['b']
Out[11]:
b 2
b 1
dtype: int64
两个相同的索引b,那么查看b的时候,b的两个结果都返回
那如果是以字典形式创建的,那么索引则以键的形式创建,那字典中的键是不能重复的,我们再来看一下结果。
ata = {'a':3, 'b':2, 'c':0, 'd':1}
apples = pd.Series(data)
apples
Out[20]:
a 3
b 1
c 0
dtype: int64
访问数据的方法:
1.通过标签下标访问数据
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples = pd.Series(data)
apples['a']
Out[31]: 3
2.通过位置下标访问数据
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples = pd.Series(data)
apples[0]
Out[33]: 3
3.通过切片访问数据
这里的标签切片访问规则和之前顾前不顾后的规则不太一样,pandas的切片是两头都要包含进去
In[30]:
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples['a':'c']
Out[30]:
a 3
b 2
c 0
dtype: int64
而位置切片则不包括结束位置数据
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples[:3]
Out[35]:
a 3
b 2
c 0
4.通过布尔数组访问Series数据
data = {'a':3, 'b':2, 'c':0, 'd':1}
b=[True, False, True, False]
apples[b]
Out[36]:
a 3
c 0
注意:不能是apples[True, False, True, False]
b=[True, False, True, False]
apples[b]
相当于apples[[True, False, True, False]]
5.通过花式下标访问Series数据
① 标签数组(或列表)“花式下标”
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples[['b','d']]
Out[37]:
b 2
d 1
dtype: int64
② 位置数组(或列表)“花式下标”
data = {'a':3, 'b':2, 'c':0, 'd':1}
apples[[1,3]]
Out[38]:
b 2
d 1
dtype: int64
创建DataFrame对象
按列创建:
data = {
'a':[3,2,0,1],
'b':[0,1,2,3],
'c':[1,2,1,0]
}
df = pd.DataFrame(data)
按行创建:
L =[[3,0,1],
[2,1,2],
[0,1,2],
[1,3,0]]
df = pd.DataFrame(L)
按行创建里面有个很有意思的命令
df[0] #表示按列取,取的是第一列
df[0:3] #表示按行取,取的是前三行
访问DataFrame列:
在访问列的时候,只能使用标签下标,不能使用位置下标,那没有标签下标时则如上面例子所示使用位置下标
访问前两列则:使用列表
df[[0,2]]
访问DataFrame行:
可以通过:
行位置切片
行标签切片
布尔数组来访问
仿照前面的例子
这里介绍另外一种:通过query方法访问DataFrame行
首先我们先创建一个DataFrame
data = {
'apples':[3,2,0,1],
'oranges':[0,1,2,3],
'bananas':[1,2,1,0]
}
df = pd.DataFrame(data,index=['June','Robert','Lily','David'])
df
接下来我想选出apples>1的所有行,那就引入query命令
df.query("apples > 1")
Out[53]:
apples oranges bananas
June 3 0 1
Robert 2 1 2
df.query("apples > 1 and bananas <= 2")
Out[54]:
apples oranges bananas
June 3 0 1
Robert 2 1 2