文档章节

6-pandas索引

eddy_linux
 eddy_linux
发布于 2017/09/05 23:51
字数 1309
阅读 11
收藏 1
点赞 0
评论 0
#encoding:utf8



import numpy as np
import pandas as pd

s = pd.Series(np.random.rand(5),index=list('abcde'))
print(s)
'''
a    0.203759
b    0.793161
c    0.139707
d    0.094600
e    0.941411
dtype: float64
'''
print(s.index)
'''
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
'''
#给行索引字段取名
s.index.name = 'alpha'
print(s)
'''
alpha
a    0.203759
b    0.793161
c    0.139707
d    0.094600
e    0.941411
'''

df = pd.DataFrame(np.random.randn(4,3),columns=['one','two','three'])
print(df)
'''
        one       two     three
0  0.733709 -0.399455 -0.873937
1 -0.970276  0.814565  0.332324
2 -0.097845  0.443321 -1.039903
3 -1.440090 -0.165967 -1.305140
'''
#行索引
print(df.index)
'''
RangeIndex(start=0, stop=4, step=1)
'''

#列索引
print(df.columns)
'''
Index(['one', 'two', 'three'], dtype='object')
'''
#给行列索引取名
df.index.name = 'row'
df.columns.name = 'col'
print(df)
'''
col       one       two     three
row
0    1.897495  1.459275  0.146160
1    1.166402  0.446709 -0.685580
2   -0.114267  1.552098  0.403563
3   -0.073791  0.593768 -0.446416
'''

'''
pandas索引类型
有许多类型
pd.CategoricalIndex
pd.DatetimeIndex
pd.Float64Index
pd.Index
pd.Int64Index
pd.MultiIndex
pd.PeriodIndex
pd.TimedeltaIndex
'''

#重复索引
s = pd.Series(np.arange(6),index=list('abcbda'))
print(s)
'''
a    0
b    1
c    2
b    3
d    4
a    5
'''
print(s['a'])
'''
a    0
a    5
返回的是一个Series对于重复索引的
'''
print(s['c'])
'''
2
返回的是一个具体值
'''
#判断是否有重复索引
print(s.index.is_unique)
'''
False
'''
#列出不重复的索引(多个重复索引将被整合为一个索引出现)
print(s.index.unique())
'''
['a' 'b' 'c' 'd']
'''
#处理重复索引进行数据清洗,根据实际需求来
#对索引进行分组求和
print(s.groupby(s.index).sum())
'''
a    5
b    4
c    2
d    4
'''
#对索引进行分组平均值
print(s.groupby(s.index).mean())
'''
a    2.5
b    2.0
c    2.0
d    4.0
'''

#多级索引
#用二维数据来展示更高维度的数据

a = [
    ['a','a','a','b','b','c','c'],
    [1,2,3,1,2,2,3]
]

t = list(zip(*a))
print(t)
'''
[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('c', 2), ('c', 3)]
'''
#创建多级索引
index = pd.MultiIndex.from_tuples(t,names=['level1','level2'])
print(index)
'''
MultiIndex(levels=[['a', 'b', 'c'], [1, 2, 3]],
           labels=[[0, 0, 0, 1, 1, 2, 2], [0, 1, 2, 0, 1, 1, 2]],
           names=['level1', 'level2'])
'''
s = pd.Series(np.random.rand(7),index=index)
print(s)
'''
a       1         0.721871
        2         0.681721
        3         0.400783
b       1         0.807796
        2         0.282922
c       2         0.090593
        3         0.352263
'''
#选取一级索引
print(s['b'])
'''
level2
1    0.802142
2    0.710330
dtype: float64
'''
print(s['b':'c'])
'''
level1  level2
b       1         0.432311
        2         0.251192
c       2         0.129710
        3         0.626829
'''
print(s[['a','c']])
'''
level1  level2
a       1         0.744435
        2         0.229332
        3         0.243126
c       2         0.106514
        3         0.985381
'''
#选取所有二级索引
print(s[:,2])
'''
level1
a    0.736723
b    0.650342
c    0.981221
'''
#选取一级索引为a二级索引为2注意如果没有此一级和耳机索引将抛出异常
print(s['a',2])
'''
0.0155083268965
'''

#DataFrame的多级索引
df = pd.DataFrame(np.random.randint(1,10,(4,3)),index=[['a','a','b','b'],[1,2,1,2]],
                  columns=[['one','one','two'],['blue','red','blue']]
                  )
df.index.names = ['row-1','row-2']
df.columns.names = ['col-1','col-2']

print(df)
'''
col-1        one      two
col-2       blue red blue
row-1 row-2
a     1        2   8    9
      2        7   3    2
b     1        4   2    6
      2        8   4    5
'''
#一级索引
print(df.loc['a'])
'''
col-1  one      two
col-2 blue red blue
row-2
1        7   5    3
2        9   1    8
'''
#二级索引
print(df.loc['a',1])
'''
col-1  col-2
one    blue     6
       red      9
two    blue     6
'''
print(df.loc['a',1].index)
'''
MultiIndex(levels=[['one', 'two'], ['blue', 'red']],
           labels=[[0, 0, 1], [0, 1, 0]],
           names=['col-1', 'col-2'])
'''

#多级索引的交换

df2 = df.swaplevel('row-1','row-2')
print(df)
print(df2)
'''
col-1        one      two
col-2       blue red blue
row-1 row-2
a     1        6   7    8
      2        5   1    6
b     1        5   2    4
      2        9   6    8

col-1        one      two
col-2       blue red blue
row-2 row-1
1     a        6   7    8
2     a        5   1    6
1     b        5   2    4
2     b        9   6    8
'''
#对索引进行排序
#对一级索引进行排序
print(df2.sortlevel(0))
'''
col-1        one      two
col-2       blue red blue
row-2 row-1
1     a        6   7    3
      b        1   8    1
2     a        6   2    4
      b        4   5    9
'''
#对二级索引进行排序
print(df2.sortlevel(1))
'''
col-1        one      two
col-2       blue red blue
row-2 row-1
1     a        3   3    8
2     a        7   7    5
1     b        2   7    9
2     b        2   6    4
'''
#多级索引的统计
print(df)
#根据一级索引来求和
print(df.sum(level=0))
'''
col-1        one      two
col-2       blue red blue
row-1 row-2
a     1        8   5    7
      2        6   1    1
b     1        8   1    2
      2        1   9    2

col-1  one      two
col-2 blue red blue
row-1
a       14   6    8
b        9  10    4

'''
#根据二级索引来求和
print(df)
print(df.sum(level=1))
'''
col-1        one      two
col-2       blue red blue
row-1 row-2
a     1        7   6    5
      2        4   1    5
b     1        4   4    2
      2        6   5    1

col-1  one      two
col-2 blue red blue
row-2
1       11  10    7
2       10   6    6

注意区别
一级索引求和是把一级索引之后的所有值求和
二级索引求和是把同名的索引的值求和
'''

df = pd.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(df)
#把数据的列设置成索引值
'''
   a  b    c  d
0  0  7  one  0
1  1  6  one  1
2  2  5  one  2
3  3  4  two  0
4  4  3  two  1
5  5  2  two  2
6  6  1  two  3
'''
print(df.set_index('c'))
'''
     a  b  d
c
one  0  7  0
one  1  6  1
one  2  5  2
two  3  4  0
two  4  3  1
two  5  2  2
two  6  1  3
'''
#二级
print(df.set_index(['c','d']))
'''
       a  b
c   d
one 0  0  7
    1  1  6
    2  2  5
two 0  3  4
    1  4  3
    2  5  2
    3  6  1

'''
#把多级索引降级
df2 = df.set_index(['c','d'])
print(df2)
'''
       a  b
c   d
one 0  0  7
    1  1  6
    2  2  5
two 0  3  4
    1  4  3
    2  5  2
    3  6  1
'''
print(df2.reset_index().sort_index('columns'))
'''
     c  d  a  b
0  one  0  0  7
1  one  1  1  6
2  one  2  2  5
3  two  0  3  4
4  two  1  4  3
5  two  2  5  2
6  two  3  6  1

   a  b    c  d
0  0  7  one  0
1  1  6  one  1
2  2  5  one  2
3  3  4  two  0
4  4  3  two  1
5  5  2  two  2
6  6  1  two  3
'''


 

© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
十分钟搞定pandas

原文地址:http://www.cnblogs.com/chaosimple/p/4153083.html 本文是对pandas官方网站上《10 Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介绍,详细...

halcyonbaby ⋅ 2017/04/09 ⋅ 0

(转载)Python数据分析之pandas学习

转载地址:http://www.cnblogs.com/nxld/p/6058591.html Python中的pandas模块进行数据分析。 接下来pandas介绍中将学习到如下8块内容: 1、数据结构简介:DataFrame和Series 2、数据索引ind...

fjssharpsword ⋅ 2017/11/28 ⋅ 0

Pandas 中的四中索引方式详解

Pandas 中的四中索引方式详解 第一次使用pandas 对于其中的Series 和DataFrame 的索引弄晕了,所以写了这篇文章详细的分析Pandas中的四中索引方式:1. 默认的索引[] 2.基于位置的索引.iloc 3...

Allocator ⋅ 2017/05/24 ⋅ 0

Python 数据处理库 pandas 入门教程

原文出处:强波的技术博客 pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库。本文是对它的一个入门教程。 pandas提供了快速,灵...

强波的技术博客 ⋅ 04/17 ⋅ 0

基于 Python 的数据分析库--Pydata

Pandas 是一个遵循BSD许可证的基于Python的开源库,提供高性能,易使用的数据结构与数据分析工具。pandas的优点在于可以使用Python进行整体的数据流分析,不用切换到特定的领域语言,例如R语...

匿名 ⋅ 2017/03/06 ⋅ 0

Python数据分析工具库-pandas 数据分析与探索工具(一)

pandas是基于numpy的一个高级数据结构和操作的数据分析与探索工具,本文基于pandas API文档对pandas的两个重要的数据结构、基本函数、函数应用、排序以及层次化索引进行分析,对于本文的示例...

损失函数 ⋅ 05/29 ⋅ 0

python之pandas的基本使用(1)

一、pandas概述 pandas :pannel data analysis(面板数据分析)。pandas是基于numpy构建的,为时间序列分析提供了很好的支持。pandas中有两个主要的数据结构,一个是Series,另一个是DataF...

cxmscb ⋅ 2017/01/20 ⋅ 0

Python数据分析之pandas基本功能讲解

pandas的基本功能 重新索引 不存在的索引都用同一个值填充: obj.reindex(['a','b','c','d','e'],fill_value=0)out:a -5.3b 7.2C 3.6d 4.5e 0.0 如果没有fill_value则不存在的索引用NaN缺失值...

zou249014591的博客 ⋅ 2017/12/13 ⋅ 0

Python 数据分析包:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame ...

lionets ⋅ 2014/06/10 ⋅ 5

利用Python进行数据分析(六)之pandas基本功能

pandas的基本功能 重新索引 不存在的索引都用同一个值填充: 对于有序索引,range(6)或者['a','b','c','d','e','f']。 用前向值填充:method =‘ffill’或者method = 'pad' 前面没有则NaN 用...

BrainZou ⋅ 2017/12/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 28分钟前 ⋅ 0

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个...

honeymose ⋅ 33分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 44分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 49分钟前 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 52分钟前 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 57分钟前 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 今天 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 今天 ⋅ 0

only_full_group_by

我的mysql是在CentOS7.1下面的5.7.17 在 /etc/my.cnf 文件里加上如下: sql_mode='NO_ENGINE_SUBSTITUTION' 然后,重启Mysql服务 systemctl restart mysqld...

SunHacker ⋅ 今天 ⋅ 0

实际项目(SpringBoot项目)中集成Druid

参考网页 https://blog.csdn.net/liuchuanhong1/article/details/55050131 https://blog.csdn.net/CoffeeAndIce/article/details/78707819 https://www.pocketdigi.com/20170530/1577.html 为......

karma123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部