Pandas学习笔记(一)
pandas是一个基于numpy的工具,是一个列表的形式,适用于解决数据分析任务。
创建列表
#首先创建一个列表
s = pd.Series([1,2,3,44,np.nan])
Out:
0 1.0
1 2.0
2 3.0
3 44.0
4 NaN
dtype: float64#64位float
#会自动排列
列表是最简单的一个数据框架
创建框架
我们可以创建一个更复杂的DataFrame
#首先创建两个X,Y的序列
x = np.arange(1,15)
y = np.random.randn(14)#生成14个随机数
#或者可以使用
#dates = pd.date_range('20200405',periods=14)
pd.DataFrame({"x":x,"y":y})#x为X序列,Y为Y序列创建DATAFRAME
x y
0 1 1.248442
1 2 -0.964041
2 3 -0.245497
3 4 2.022872
4 5 0.278299
5 6 1.719397
6 7 0.087060
7 8 0.724141
8 9 -0.722429
9 10 1.655774
10 11 0.603248
11 12 2.218936
12 13 0.388408
13 14 -0.756672
#如果没有特别规定index=xxx则第一列就会自动标号有多少个序列
框架所包含的函数
可以讲每一列每一行或者全部元素的名字打印出来
#打印列的名字
s.index
#打印行的名字
s.columns
#打印全部元素的名字
s.values
同时,不久可以打印出名字,还能描述它的各种属性
a = pd.DataFrame({"x":x,"y":y})
a.describe()
Out[14]:
x y
count 14.0000 14.000000
mean 7.5000 0.589853
std 4.1833 1.060099
min 1.0000 -0.964041
25% 4.2500 -0.162358
50% 7.5000 0.495828
75% 10.7500 1.553941
max 14.0000 2.218936
排序
a.sort_index(axis=0,ascending=False)#对框架的列进行排序,axis=1则对行排序,ascending = False则是让反方向排序
Out :
13 14 -0.756672
12 13 0.388408
11 12 2.218936
10 11 0.603248
9 10 1.655774
8 9 -0.722429
7 8 0.724141
6 7 0.087060
5 6 1.719397
4 5 0.278299
3 4 2.022872
2 3 -0.245497
1 2 -0.964041
0 1 1.248442
#既然能对第一个列行排序,那么也能给某一行或列单独排序
索引
可以通过DataFrame行的名字来进行索引一行
a[x]#或a.y
Out:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
a[0:5]
Out:
x y
0 1 1.605102
1 2 -1.502054
2 3 1.239707
3 4 -1.064812
4 5 0.794700
select by label:loc
#我们还可以通过 DataFrame.loc[] 进行选择
c:
a b c d
0 0.944298 0.210065 0.704360 1.247841
1 -0.253041 0.459716 0.216052 0.092584
2 0.260377 -0.076459 -0.916342 0.785965
c.loc[0]
Out[20]:
a 0.944298
b 0.210065
c 0.704360
d 1.247841
Name: 0, dtype: float64
#这样进行索引回将列的名字及其对应的数字打印出来
#如果需要单独将哪一列打印出来
c.loc[:,['a','b']]
a b
0 0.944298 0.210065
1 -0.253041 0.459716
2 0.260377 -0.076459
select by position:iloc
#与numpy一样,pandas同样可以使用position来进行索引
c.iloc[2,2]
Out:
-0.9163417084924371
Boolean indexing
#可以给予索引条件来进行筛选
c[c.index<1]
Out:
a b c d
0 0.944298 0.210065 0.70436 1.247841
#或者
c[c.b>0]
Out:
a b c d
0 0.944298 0.210065 0.704360 1.247841
1 -0.253041 0.459716 0.216052 0.092584
c.a[c.a>0]
#索引a列中大于0的数字
a.a[a.b>0] = -1
a
Out[11]:
a b c d
0 0.11374 -0.432719 0.252386 0.959131
1 -1.00000 0.103311 -0.217757 -0.246855
2 -1.00000 0.785828 -0.174807 0.929142
#以b为及基准,修改a
新增一列或一行
a['f']=np.nan
a b c d f
0 0.11374 -0.432719 0.252386 0.959131 NaN
1 -1.00000 0.103311 -0.217757 -0.246855 NaN
2 -1.00000 0.785828 -0.174807 0.929142 NaN