pandas索引对象
来源:互联网 发布:网络推广待遇 编辑:程序博客网 时间:2024/06/07 18:45
《Python for Data Analysis》
索引对象
Index对象是不可修改的(immutable),这样才能使Index对象在多个数据结构之间安全共享。
In [1]: import pandas as pdIn [2]: from pandas import Series, DataFrameIn [3]: import numpy as npIn [4]: index = pd.Index(np.arange(3))In [5]: indexOut[5]: Int64Index([0, 1, 2], dtype='int64')In [6]: obj = Series([1.5,2.5,0],index = index)In [7]: objOut[7]:0 1.51 2.52 0.0dtype: float64
重新索引
Series
reindex
创建一个适应新索引的新对象。
调用该Series的reindex将会根据新索引进行重排。如果某个索引值当前不存在,就引入缺失值。默认NaN
In [15]: obj.reindex([0,1,2,3])Out[15]:0 1.51 2.52 0.03 NaNdtype: float64
可以选fill_value = 0
In [16]: obj.reindex([0,1,2,3], fill_value=0)Out[16]:0 1.51 2.52 0.03 0.0dtype: float64
对于时间序列这样的有序数据,重新索引时可能需要一些插值处理。method选项即可达到此目的,例如,使用ffill可以实现前向值填充
In [19]: obj1.reindex(range(6), method='ffill')Out[19]:0 blue1 blue2 green3 green4 red5 reddtype: object
DataFrame
对于DataFrame, reindex可以修改行索引、列索引,或两个都修改。如果仅传入一个序列,默认索引行。使用columns关键字即可重新索引列。插值只能按行应用,即轴0.
利用ix标签索引功能,重新索引任务可以变的更加简洁:
In [26]: frame = DataFrame(np.arange(9).reshape((3,3)))In [27]: frameOut[27]: 0 1 20 0 1 21 3 4 52 6 7 8In [28]: frame.ix[[0,1,2], ['a','b','c']]Out[28]: a b c0 NaN NaN NaN1 NaN NaN NaN2 NaN NaN NaNIn [29]: frame.ix[[0,1,2], [0,'b',2]]Out[29]: 0 b 20 0 NaN 21 3 NaN 52 6 NaN 8
丢弃指定轴上的项
drop
方法返回一个在指定轴上删除了指定值得新对象。
索引、选取和过滤
利用++标签++的切片运算于普通的Python切片运算不同,++其末端是包含的++!!!即封闭区间。
为了DataFrame的行上进行标签索引,引入了专门的索引字段ix
。
层次化索引
创建一个Series,并用一个由列表或数组组成的列表作为索引。
重塑层次化索引
stack
: 将数据的列“旋转”为行。unstack
: 将数据的行“旋转”为列。(默认,unstack操作的是最内层;可以传入分层级别编号或名称)
层次化索引的Series可以通过其unstack方法被重新安排到一个DataFrame中。
unstack的逆运算是stack。
使用DataFrame的列
DataFrame的set_index
函数会将其一个或多个列转换为行索引,并创建一个新的DataFrame.
reset_index
的功能跟set_index
刚好相反,层次化索引的级别会被转移到列里面。类似于(unstack
与stack
的关系)
重命名轴索引rename
rename
实现了复制DataFrame并对其索引和列标签进行赋值。如果希望就地修改某个数据集,传入inplace=True
即可。
实践
example 1:
title_test1 = title_test1.set_index('Label')
# 将‘Label’列作为索引
example 2:
accepted_answers = answers[answers.IsAcceptedAnswer == True]accepted_answers["OwnerUserId"].value_counts().head(10).plot(kind="barh")accepted_answers = accepted_answers.drop(['Id','CreationDate','Score','IsAcceptedAnswer' ,'Body'], axis=1)col_mapping = {'OwnerUserId' : 'ExpertId', 'ParentId' : 'Id'}accepted_answers = accepted_answers.rename(columns=col_mapping, copy = False)accepted_answers = accepted_answers.dropna()count = accepted_answers['ExpertId'].value_counts()count_df = pd.DataFrame(count)count_df = count_df.reset_index()col_mapping2 = {'ExpertId' : 'Count', 'index' : 'ExpertId'}count_df = count_df.rename(columns=col_mapping2, copy = False)
- pandas索引对象
- pandas学习笔记-索引对象
- Pandas入门笔记2-索引对象
- pandas Series 的索引对象(一)
- Pandas GroupBy对象 索引与迭代
- pandas数据索引变换
- Pandas MultiIndex(多重索引)
- Pandas 列索引操作
- pandas层次化索引
- pandas索引和选择
- pandas索引和选择
- Pandas-索引index
- Pandas索引方法介绍
- pandas通过ix 索引
- pandas层次化索引
- python pandas 序列索引
- python pandas 位置索引
- pandas索引与计算
- 话不多说, 以左上角为原点 -moz-transform-origin: 0 0; -webkit-transform-origin:0 0; -o-transform-origin:0
- Computing the Stereo Matching Cost with a Convolutional Neural Network
- 万花筒大赛获奖VR电影将亮相VR科学节,约否?
- iOS中字体样式的设置、颜色、空心、删除线、阴影、斜体、扁平化
- numpy布尔型索引
- pandas索引对象
- HDOJ 2089 不要62(数位DP入门)
- eclipse开发spark
- sql求加权平均值
- Windows7 下Apache-Tomcat7.0的安装配置
- redis操作命令详解
- 如何查看计算机隐藏的文件夹
- 汽车钥匙秘钥接收解码
- 用DNN对Iris数据分类的代码--tensorflow--logging/monitoring/earlystopping/visualizing