python.(numpy,pandas)基础

numpy:基于矩阵的数学计算库。
pandas:基于表格的统计分析库。

“~”:反转,a是Ture,则~(a)是False。

numpy

In [1]: import numpy as np

In [2]: np.array([1,2,3])
Out[2]: array([1, 2, 3])

In [3]: type(np.array([1,2,3]))
   ...: #数据类型为n维数组
Out[3]: numpy.ndarray

#数组和列表类似,索引也类似
In [4]: a = np.array([1,2,3])

In [5]: a+1
Out[5]: array([2, 3, 4])

#多维数组自动换行,成为矩阵
In [6]: np.array([[1,2,3],[2,3,4]])
Out[6]: 
array([[1, 2, 3],
       [2, 3, 4]])

pandas

pandas两大数据结构:SeriesDataFrame

【pandas中很多默认操作都是针对列的(df.age=df.age+1那一列所有年龄+1)】【不建议在pandas里增删数据】

1. series

输出的第一列是索引,并且可以替换。

In [1]: import pandas as pd

In [2]: s=pd.Series([1,2,3,4])
   ...: s
Out[2]: 
0    1
1    2
2    3
3    4
dtype: int64

In [3]: s=pd.Series([1,2,3,4],index=['a', 'b', 'c', 'd'])
   ...: s
Out[3]: 
a    1
b    2
c    3
d    4
dtype: int64
#更改数据类型
In [4]: s.astype('str')
Out[4]: 
a    1
b    2
c    3
d    4
dtype: object

数据的更改和查找。

In [5]: s['b'] = 8
   ...: s
Out[5]: 
a    1
b    8
c    3
d    4
dtype: int64

In [6]: s[['a','d']]
Out[6]: 
a    1
d    4
dtype: int64

字典也可以应用到Series数据结构中

In [1]: import pandas as pd

In [2]: d={'tata':'good','haha':'bad'}

In [3]: pd.Series(d)
Out[3]: 
haha     bad
tata    good
dtype: object
#索引不到的就是空值
In [4]: pd.Series(d,index=['tata','haha','uu'])
Out[4]: 
tata    good
haha     bad
uu       NaN
dtype: object

2. DataFrame

In [1]: import pandas as pd

In [2]: pd.DataFrame([[5,4,3,2],[6,6,6,6]])
Out[2]: 
   0  1  2  3
0  5  4  3  2
1  6  6  6  6

In [3]: pd.DataFrame([[5,4,3,2],[6,6,6,6]],columns=['f1','f2','f3','f4'])
Out[3]: 
   f1  f2  f3  f4
0   5   4   3   2
1   6   6   6   6

In [4]: d={
   ...: 'name':['huahua','xiaolu','dazhun'],
   ...: 'sex':['nv','nan','nv'],
   ...: 'age':[18,18,21]}

In [5]: df=pd.DataFrame(d)
   ...: df
Out[5]: 
   age    name  sex
0   18  huahua   nv
1   18  xiaolu  nan
2   21  dazhun   nv

DataFrame中的数据查找(query,loc,iloc)

#此时DataFrame相当于Series
In [6]: df['sex']
Out[6]: 
0     nv
1    nan
2     nv
Name: sex, dtype: object

In [7]: df.sex
Out[7]: 
0     nv
1    nan
2     nv
Name: sex, dtype: object

In [8]: df.age==18
Out[8]: 
0     True
1     True
2    False
Name: age, dtype: bool
#多条件查找
In [9]: (df.age==18)&(df.name=='xiaolu')
Out[9]: 
0    False
1     True
2    False
dtype: bool

In [10]: df[(df.age==18)&(df.name=='xiaolu')]
Out[10]: 
   age    name  sex
1   18  xiaolu  nan

note 1 :‘&’表示两个条件都满足;‘|’表示满足一个条件即可。

query   

df.query(expr, inplace=False, **kwargs)

#等价于df[(df.age==18)|(df.name=='xiaolu')]
In [11]: df.query("age==18 & name=='xiaolu'")
Out[11]: 
   age    name  sex
1   18  xiaolu  nan

ix、loc、iloc

#有警告
In [12]: df.ix[0]
Out[12]: 
age         18
name    huahua
sex         nv
Name: 0, dtype: object
#查找出0到1的数据
In [13]: df.ix[0:1]
Out[13]: 
   age    name  sex
0   18  huahua   nv
1   18  xiaolu  nan
#查找索引是'1'的行
In [14]: df.loc[1]
Out[14]: 
age         18
name    xiaolu
sex        nan
Name: 1, dtype: object
#查找第一行
In [15]: df.iloc[0]
Out[15]: 
age         18
name    huahua
sex         nv
Name: 0, dtype: object
#查找第二行第三个
In [16]: df.iloc[1,2]
Out[16]: 'nan'

In [17]: df.iloc[1:2,2]
Out[17]: 
1    nan
Name: sex, dtype: object

In [18]: df.loc[2,'age']
Out[18]: 21

In [19]: df.loc[2,['age','sex']]
Out[19]: 
age    21
sex    nv
Name: 2, dtype: object

note 2 :

  • df.iloc  对行(不管标签是数字还是字符串,就看行0,1,...)的索引(第2行)等价于df.[0:1];
  • df.loc  是对行的标签,可以是0,1,2(‘a’,'b','c');
  • df.ix  相当于混合df.iloc和df.loc。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值