pandas入门-数据结构(2)
来源:互联网 发布:linux wget 404 编辑:程序博客网 时间:2024/05/16 01:21
二、查看数据
1、查看数据的前几条&后几条数据
In [34]: dates = pd.date_range('20150101',periods=30) df=pd.DataFrame(np.random.randn(30,4),index=dates,columns= list('ABCD')) df.head()Out[34]: A B C D 2015-01-01 -1.288885 0.100184 -1.123152 1.481061 2015-01-02 0.715922 1.054161 0.165483 0.954136 2015-01-03 1.007141 -1.843268 -1.658547 0.239509 2015-01-04 -0.117214 -0.427071 0.717396 2.705250 2015-01-05 0.344063 -0.785480 -2.934375 1.046888In [35]: df.tail(3)Out[35]: A B C D 2015-01-28 1.729071 2.424110 -0.276512 0.250709 2015-01-29 -0.267186 -0.137241 0.737485 -0.003254 2015-01-30 2.066402 -2.757171 -1.108371 2.139467
2、 显示索引、列和底层的numpy数据:
In [ ]: df.indexIn [37]: df.columnsOut[37]: Index([u'A', u'B', u'C', u'D'],dtype='object')
3、 describe()函数对于数据的快速统计汇总:
In [39]: df.describe()
4、 对数据的转置:
In [40]: df.T
5、 按轴进行排序
In [41]: df.head(5).sort_index(axis=1, ascending=False)Out[41]: D C B A 2015-01-01 1.481061 -1.123152 0.100184 -1.288885 2015-01-02 0.954136 0.165483 1.054161 0.715922 2015-01-03 0.239509 -1.658547 -1.843268 1.007141 2015-01-04 2.705250 0.717396 -0.427071 -0.117214 2015-01-05 1.046888 -2.934375 -0.785480 0.344063
6、 按值进行排序
In [42]: df.head().sort(columns='B')Out[42]: A B C D 2015-01-03 1.007141 -1.843268 -1.658547 0.239509 2015-01-05 0.344063 -0.785480 -2.934375 1.046888 2015-01-04 -0.117214 -0.427071 0.717396 2.705250 2015-01-01 -1.288885 0.100184 -1.123152 1.481061 2015-01-02 0.715922 1.054161 0.165483 0.954136
7、描述
In [43]: df.shapeOut[43]: (30, 4)In [44]: df.sizeOut[44]: 120
三、选择
1. 通过下标选取数据:
df['one'],df.one
以上两个语句是等效的,都是返回df名称为one列的数据,返回的为一个Series。
df[0:3],df[0]
下标索引选取的是DataFrame的记录,与List相同DataFrame的下标也是从0开始,区间索引的话,为一个左闭右开的区间,即[0:3]选取的为0-2三条记录。与此等价,还可以用起始的索引名称和结束索引名称选取数据,如:df[‘a’:’b’]
有一点需要注意的是使用起始索引名称和结束索引名称时,也会包含结束索引的数据。以上两种方式返回的都是DataFrame。
2. 使用标签选取数据:
df.loc[行标签,列标签]
df.loc[‘a’:’b’]#选取ab两行数据
df.loc[:,’one’]#选取one列的数据
df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则返回的是DataFrame,否则,则为Series。
3. 使用位置选取数据:
df.iloc[行位置,列位置]
df.iloc[1,1]#选取第二行,第二列的值,返回的为单个值
df.iloc[0,2],:]#选取第一行及第三行的数据
df.iloc[0:2,:]#选取第一行到第三行(不包含)的数据
df.iloc[:,1]#选取所有记录的第一列的值,返回的为一个Series
df.iloc[1,:]#选取第一行数据,返回的为一个Series
PS:loc为location的缩写,iloc则为integer & location的缩写
4. 更广义的切片方式是使用.ix,它自动根据给到的索引类型判断是使用位置还是标签进行切片
df.ix[1,1]
df.ix[‘a’:’b’]
通过逻辑指针进行数据切片:
df[逻辑条件]
df[df.one >= 2]#单个逻辑条件
df[(df.one >=1 ) & (df.one < 3) ]#多个逻辑条件组合
1、获取
1)选择一个单独的列,这将会返回一个Series,等同于df.A:
In [45]: dates = pd.date_range('20150101',periods=5) df = pd.DataFrame(np.random.randn(5,4),index=dates,columns= list('ABCD')) df['A']Out[45]: 2015-01-01 -0.350716 2015-01-02 -0.463883 2015-01-03 -1.127624 2015-01-04 0.304686 2015-01-05 0.081589 Freq: D, Name: A, dtype: float64
2)通过[ ]进行选择,这将会对行进行切片
In [46]: df[0:3]Out[46]: A B C D 2015-01-01 -0.350716 -0.370551 -1.159448 0.112866 2015-01-02 -0.463883 0.273347 0.217844 0.249154 2015-01-03 -1.127624 0.785656 1.827608 -0.069509In [47]: df['20150104':'20150106']Out[47]: A B C D 2015-01-04 0.304686 0.897422 0.577268 -0.310842 2015-01-05 0.081589 0.845999 0.358836 -0.274310
2、通过标签选择
1)使用标签来获取一个交叉的区域
In [48]: df.loc[dates[0]]Out[48]: A -0.350716 B -0.370551 C -1.159448 D 0.112866 Name: 2015-01-01 00:00:00, dtype: float64
2) 通过标签来在多个轴上进行选择
In [49]: df.loc[:,['A','B']]Out[49]: A B 2015-01-01 -0.350716 -0.370551 2015-01-02 -0.463883 0.273347 2015-01-03 -1.127624 0.785656 2015-01-04 0.304686 0.897422 2015-01-05 0.081589 0.845999
3) 标签切片
In [50]: df.loc['20150101':'20150103','A':'B']Out[50]: A B 2015-01-01 -0.350716 -0.370551 2015-01-02 -0.463883 0.273347 2015-01-03 -1.127624 0.785656
4) 对于返回的对象进行维度缩减
In [51]: df.loc['20150101','A':'B']Out[51]: A -0.350716 B -0.370551 Name: 2015-01-01 00:00:00, dtype: float64
5) 获取一个标量
In [52]: df.loc[dates[0],'A']Out[52]: -0.3507158545641505
6) 快速访问一个标量(与上一个方法等价)
In [53]: df.at[dates[0],'A']Out[53]: -0.3507158545641505
3、通过位置选择
1) 通过传递数值进行位置选择(选择的是行)
In [54]: df.iloc[3]Out[54]: A 0.304686 B 0.897422 C 0.577268 D -0.310842 Name: 2015-01-04 00:00:00, dtype: float64
2) 通过数值进行切片
In [55]: df.iloc[3:5,0:2]Out[55]: A B 2015-01-04 0.304686 0.897422 2015-01-05 0.081589 0.845999
3) 通过指定一个位置的列表
In [56]: df.iloc[[1,2,4],[0,2]]Out[56]: A C 2015-01-02 -0.463883 0.217844 2015-01-03 -1.127624 1.827608 2015-01-05 0.081589 0.358836
4)对行进行切片
In [57]: df.iloc[1:3,:]Out[57]: A B C D 2015-01-02 -0.463883 0.273347 0.217844 0.249154 2015-01-03 -1.127624 0.785656 1.827608 -0.069509
5)对列进行切片
In [58]: df.iloc[:,1:3]Out[58]: B C 2015-01-01 -0.370551 -1.159448 2015-01-02 0.273347 0.217844 2015-01-03 0.785656 1.827608 2015-01-04 0.897422 0.577268 2015-01-05 0.845999 0.358836
6)获取特定的值
In [59]: df.iloc[1,1]Out[59]: 0.27334674183560975In [60]: df.iat[1,1]Out[60]: 0.27334674183560975
4、布尔索引
1)使用一个单独列的值来选择数据:
In [61]: df[df.A>0]Out[61]: A B C D 2015-01-04 0.304686 0.897422 0.577268 -0.310842 2015-01-05 0.081589 0.845999 0.358836 -0.274310
2) 使用where操作来选择数据:
In [62]: df[df>0]Out[62]: A B C D 2015-01-01 NaN NaN NaN 0.112866 2015-01-02 NaN 0.273347 0.217844 0.249154 2015-01-03 NaN 0.785656 1.827608 NaN 2015-01-04 0.304686 0.897422 0.577268 NaN 2015-01-05 0.081589 0.845999 0.358836 NaN
3)使用isin()方法来过滤:
In [68]: df2 = pd.DataFrame(np.random.randn(5,4),index=dates,columns= list('ABCD')) df2['E']=['one', 'one','two','three','four'] df2In [69]: df2[df2['E'].isin(['two','four'])]Out[69]: A B C D E 2015-01-03 -1.372667 -0.383118 0.169221 1.049816 two 2015-01-05 1.700180 0.228395 -1.447462 -2.134411 four
- pandas入门-数据结构(2)
- pandas入门-数据结构(1)
- pandas入门练习-数据结构
- 《pandas入门》之基本数据结构
- pandas小记:pandas数据结构
- pandas数据结构
- pandas数据结构
- Python数据分析入门(一)-Pandas数据结构(Series)
- pandas入门
- pandas入门
- Pandas入门
- Pandas入门
- pandas入门
- pandas入门
- Pandas 入门
- pandas入门
- Pandas入门
- python数据分析pandas包入门学习(一)pandas数据结构介绍
- 关于新浪微博里面长图加载功能的一点窥探
- Kubernetes1.3新特性:集群联盟-在全球快速部署和管理应用
- 日志系列
- umeng分享到微信和微信朋友圈只显示ShareContent的bug
- easyUI获取Json的内嵌数据
- pandas入门-数据结构(2)
- Java并发编程(六)阻塞队列
- springmvc乱码
- VMware workstation NAT方式无法连接外网的问题
- cacti系列(一)之cacti的安装及配置监控mysql服务
- 很棒的iOS开源库
- LeetCode CodeconstructBinaryTreeFromInorderAndPostorderTraversal中序,后序构造二叉树
- 对象上转型验证
- hdu4405 概率dp