pandas frame 删除一行_Python学习之pandas快速入门(七)

a050273578d1434ff7ec8d09a5c56546.png

层次化索引(MultiIndex)

  • 使你能在一个轴上拥有多个(两个以上)索引级别。抽象的说,它使你能以低纬度形式处理高维度数据。

#'Series的层次索引'

data = Series(np.random.randn(10), index = [['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])print(data)print(data.index)print(data.b)print(data['b':'c'])print(data[:2])#0-2print(data.unstack())print(data.unstack().stack())

# 'DataFrame的层次索引'

frame = DataFrame(np.arange(12).reshape((4, 3)), index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])print(frame)frame.index.names = ['key1', 'key2']frame.columns.names = ['state', 'color']print(frame)print(frame.ix['a', 1])print(frame.ix['a', 2]['Colorado'])print(frame.ix['a', 2]['Ohio']['Red'])

#'直接用MultiIndex创建层次索引结构'

print(MultiIndex.from_arrays([['Ohio', 'Ohio', 'Colorado'], ['Gree', 'Red', 'Green']], names = ['state', 'color']))

层次化索引 重新分级顺序

  • 索引交换
  • 索引重新排序

# '索引层级交换'

frame = DataFrame(np.arange(12).reshape((4, 3)), index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])frame.index.names = ['key1', 'key2']frame_swapped = frame.swaplevel('key1', 'key2')print(frame)print(frame_swapped)print(frame_swapped.swaplevel(0, 1))

# '根据索引排序'

print(frame.sortlevel('key2'))print(frame.swaplevel(0, 1).sortlevel(0))

层次化索引 根据级别汇总统计

  • 指定索引级别和轴
frame = DataFrame(np.arange(12).reshape((4, 3)), index = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]], columns = [['Ohio', 'Ohio', 'Colorado'], ['Green', 'Red', 'Green']])frame.index.names = ['key1', 'key2']print(frame)print(frame.sum(level = 'key2'))

层次化索引 使用DataFrame的列

  • 将指定列变为索引
  • 移除或保留对象
  • reset_index恢复

#'使用列生成层次索引'

frame = DataFrame({'a':range(7), 'b':range(7, 0, -1), 'c':['one', 'one', 'one', 'two', 'two', 'two', 'two'], 'd':[0, 1, 2, 0, 1, 2, 3]})print(frame)print(frame.set_index(['c', 'd'])) # 把c/d列变成索引print(frame.set_index(['c', 'd'], drop = False) )# 列依然保留frame2 = frame.set_index(['c', 'd'])print(frame2.reset_index())

读取数据

  • http://pandas.pydata.org/pandas-docs/stable/user_guide/io.html
  • http://www.cnblogs.com/datablog/p/6127000.html
  • pandas.read_csv可以读取CSV(逗号分割)文件、文本类型的文件text、log类型到DataFrame
names = ['date', 'time', 'opening_price', 'ceiling_price', 'floor_price', 'closing_price', 'volume', 'amount']raw = pd.read_csv('SH600690.csv', names = names, header = None,  index_col='date', parse_dates=True)print(raw.head()) stock=pd.read_csv("data.csv")stock2=pd.read_table('data.csv',sep=',') stock.to_csv('test1.csv')
  • sep:如果不指定参数,则会尝试使用逗号分隔。
  • header :指定行数用来作为列名,数据开始行数。如果文件中没有列名,则默认为0【第一行数据】,否则设置为None。如果明确设定 header = 0 就会替换掉原来存在列名。header参数可以是一个list例如:[0,1,3],这个list表示将文件中的这些行作为列标题(意味着每一列有多个标题),介于中间的行将被忽略掉。
  • names :用于结果的列名列表,如果数据文件中没有列标题行,就需要执行 header=None。names属性在header之前运行默认列表中不能出现重复,除非设定参数mangle_dupe_cols=True。
  • index_col :用作行索引的列编号或者列名,如果给定一个序列则有多个行索引。
  • skiprows :需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)。
  • nrows :需要读取的行数(从文件头开始算起)。
  • skip_blank_lines :如果为True,则跳过空行;否则记为NaN。
  • sep:如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘s+’,将使用python的语法分析器。并且忽略数据中的逗号。正则表达式例子:’’。
  • delimiter :定界符,备选分隔符(如果指定该参数,则sep参数失效)
0eeeadb2766c69387fe9bbb02baf99bb.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值