pandas是python为数据分析建造的可靠工具,很多地方和R语言有想通之处。数据分析并不是工具越高深越好,excel,R,python都是针对不同情况的不同工具,各有各的优缺点,
就像你要搭一个架子,或者做一个工艺品,有的小锤子比较合适,有的就得用大斧子了。
excel其实是数据分析的强力武器。对于小数据量的情况下,excel有其先天的优势。而Python和R更像一个高性能的数据处理工具。
然而仅仅会使用各种厉害工具,数据落不了地是啥也没用的。落地,和业务贴合,永远是数据最终走向。近期转到研发部门,和业务贴合的机会少了,对这方面更有很多深刻感触。 下面这几点可能更像从excel角度去看python.
1.panda 的 index 更像横坐标 x,同时也可以把它当做一个list ,可以像数组一样赋值,取数。
2.两个跟属性判断相关的语句。in 是判断某个columns 或者 index中是否存在某个字段。 is 是判断数据格式类型。
3.另外基本功能,reindex 调整 index的工具函数。
基本格式:
obj.reindex(['a','b','c','d','e'],fill_value = 0.0)

功能:可以在横坐标和纵坐标上进行修改
frame = DataFrame(np.arange(9).reshape(3,3),index=['a','b','c'],columns=['Ohio','Texas','California'])
frame.reindex(['a','b','c','d'])
frame.reindex(columns=['Ohio','Texas','California','NewYork'])
4.取数据子矩阵 frame.ix 函数,同时还可以有reindex的功能。
frame.ix(['a','b','d'],states)
data.ix[['Colorado','Utah'],['three','four']]
5.现在已经隐约可以感觉到 python的两个子模块运算类似于线性代数了
所以 两个dataframe的结果十分像线性代数的结果。
df1+df2
df1.add(df2,fill_value=0)
df1.mul(df2,fill_value=0)
df1.div(df2,fill_value=0)
df1.sub(df2,fill_value=0)
详细数据如下
======================================================================================== '''panda's index objects are responsible for holding the axis labels,like series'''
import pandas as pd
obj = Series(range(3),index=['a','b','c'])
index = obj.index
index
index[1:]
'''index = immutable'''
index[1]='d'
'''so the index can be valued by function'''
index = pd.Index(np.arange(3))
obj2 = Series([1.5,-2.5,0],index=index)
obj2 ''' evaluate the attribute of index 判断属性用Is,判断存不存在用in'''
obj2.index is index 'Ohio' in frame3.columns '2002' in obj2.index '''Essential functionality'''
'''reindexing'''
obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
obj2=obj.reindex(['a','b','c','d','e'])
obj2
'''fill the missing data'''
obj.reindex(['a','b','c','d','e'],fill_value = 0.0)
'''ordering fill the missing data'''
obj3=Series(['blue','green','black'],index=[0,2,4])
obj3.reindex(np.arange(5),method='ffill') '''reindex can be alter row,column and both in data frame'''
frame = DataFrame(np.arange(9).reshape(3,3),index=['a','b','c'],columns=['Ohio','Texas','California'])
frame.reindex(['a','b','c','d'])
frame.reindex(columns=['Ohio','Texas','California','NewYork']) months = ['APR','MAY','JUN','JUL','AUG']
frame.reindex(columns=months)
label=['a','b','c','d','e']
states=['Ohio','Texas','California','NewYork']
'''reindex 仅对x-axis有效'''
frame.reindex(label,method='ffill')
'''取子矩阵'''
frame.ix(['a','b','d'],states) '''dropping entries from axis'''
obj = Series(np.arange(5.),index=['a','b','c','d','e'])
new_obj = obj.drop('c')
new_obj '''drop from data frame'''
data=DataFrame(np.arange(16).reshape(4,4),index=['Ohio','Colorado','Utah','NewYork'],columns=['one','two','three','four'])
'''drop from index'''
data.drop(['Colorado','Utah'])
'''drop from column'''
data.drop('two',axis=1) '''index,selection,filtering'''
obj=Series(np.arange(4.),index=['a','b','c','d'])
'''index可以像数组一样,通过数字定位,index 定位,取一个数,一串数'''
obj['b']
obj[1]
obj[1:2]
obj[['a','c','d']]
obj[[1,3]]
obj[obj < 2] obj['b':'c']=5 data=DataFrame(np.arange(16).reshape(4,4),index=['Ohio','Colorado','Utah','New York'],columns=['one','two','three','four'])
'''follow by columns,但只是单维度的'''
data['two']
data[['three','one']]
data.ix['Ohio']
data[data['three']>5]
data[:2] '''把data小于5的赋值0'''
data[data<5]=0 '''按照位置选择值'''
data.ix['Colorado','two']
data.ix['Colorado',['two','three']]
data.ix[['Colorado','Utah'],['three','four']]
data.ix[2]
data.ix[:'Utah','two']
data.ix[:2,'two']
data.ix[data.three>5,:3] '''reindex'''
data.ix[['Colorado','Utah'],[3,0,1]] '''arithmetic and data alignment'''
s1=Series([7.3,-2.5,3.4,1.5],index=['a','c','d','e'])
s2=Series([-2.1,3.6,-1.5,4,3.1],index=['a','c','e','f','g'])
'''not overlap return NA'''
s1+s2
'''dataframe'''
df1=DataFrame(np.arange(9.).reshape(3,3),columns=list('bcd'),index=['Ohio','Texas','Colorado'])
df2=DataFrame(np.arange(12.).reshape(4,3),columns=list('bde'),index=['Utah','Ohio','Texas','Oregon']) df1+df2
'''只要有一个为空,就是空'''
df1.add(df2,fill_value=0)
'''只要有一个有数,另外一个就设为0'''
'''reindex'''
df1.reindex(columns=df2.columns,fill_value=0) df1 = DataFrame(np.arange(12.).reshape(3,4),columns=list('abcd'))
df2 = DataFrame(np.arange(20.).reshape(4,5),columns=list('abcde'))
df1.add(df2,fill_value=0)
df1.mul(df2,fill_value=0)
df1.div(df2,fill_value=0)
df1.sub(df2,fill_value=0)

panda2的更多相关文章

  1. 访问图片可以使用闭包map

    1 imageView.animationImages = [ UIImage(named:"panda1"), UIImage(named:"panda2") ...

  2. javascript构造函数以及原型对象的理解

    以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的. //定义一个构造函数 function People(name,age){ this.name=name; ...

  3. 数据结构实习-迷宫(基于Qt实现)

    预览效果: Maze.pro文件 #------------------------------------------------- # # Project created by QtCreator ...

  4. 记Angular与Django REST框架的一次合作(2):前端组件化——Angular

    注:这是这个系列的第二部分,主要集中在Angular的使用方面.之前使用过AngularJS(Angular 1.x),混在Django的模板中使用,这些页面一般完全是结果展示页.在有Django表单 ...

随机推荐

  1. 006-Hadoop Hive sql语法详解1-数据结构和Hive表建立

    1.认识hive:  Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构化的数据文件映射为一张数据库表, ...

  2. Python np.newaxis

    np.newaxis的功能是插入新维度,看下面的例子: a=np.array([1,2,3,4,5])print a.shape print a 输出结果 (5,)[1 2 3 4 5] 可以看出a是 ...

  3. 15.遇到window leaked的解决方法

    遇到这个可能是android:configChanges没有配置好 可以试试配置为这个 mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navig ...

  4. JDB调试代码 20165324 何春江

    Java书本程序调试: 课上程序调试

  5. python全栈开发从入门到放弃之装饰器函数

    什么是装饰器#1 开放封闭原则:对扩展是开放的,对修改是封闭的#2 装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象#3 目的:''' 在遵循 1. 不修改被装饰对象的源代码 2. ...

  6. 实现:左边为菜单导航,当一个菜单中包含多个Tabs,并且不同的Tab要根据权限的不同显示。

    1.前台代码 //当点击左侧菜单时,将访问Controller中的Home方法,这样就会根据用户权限的不同,通过后台的判断来决定显示的页面<li class="@(ViewBag.Se ...

  7. Jenkins--持续集成服务器

    1.持续集成: 1.1概念 持续集成,Continuous integration ,简称CI. 集成:我们所有项目的代码都是托管在SVN服务器上.每个项目都要有若干个单元测试,并有一个所谓集成测试. ...

  8. ios 常见问题解决 以及小技巧

    1.使用cocoaPods引用第三方类库,报错:file not found   . 解决方案:设置 Project->Info->Configurations之后  clear ,然后再 ...

  9. qemu-nbd方式挂载qcow2镜像

    客户端配置 加载nbd模块 [root@centos sm]# rmmod nbd [root@centos sm]# modprobe nbd max_part=8 映射服务器的块设备到本地nbd设 ...

  10. oracle 分区表详解

    一.分区表的概述: Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处.通常,分区可以使某些查询以及维护操作的性能大大提高.此外,分区还可以极大简化常见的管理任 ...