panda2
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的更多相关文章
- 访问图片可以使用闭包map
1 imageView.animationImages = [ UIImage(named:"panda1"), UIImage(named:"panda2") ...
- javascript构造函数以及原型对象的理解
以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的. //定义一个构造函数 function People(name,age){ this.name=name; ...
- 数据结构实习-迷宫(基于Qt实现)
预览效果: Maze.pro文件 #------------------------------------------------- # # Project created by QtCreator ...
- 记Angular与Django REST框架的一次合作(2):前端组件化——Angular
注:这是这个系列的第二部分,主要集中在Angular的使用方面.之前使用过AngularJS(Angular 1.x),混在Django的模板中使用,这些页面一般完全是结果展示页.在有Django表单 ...
随机推荐
- Linux SSH免登录配置总结(转)
转载请出自出处:http://eksliang.iteye.com/blog/2187265 一.原理 我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器Serv ...
- Java CodeFormatter
设置Formatter模板的入口: Window->Preference->Java->Code Style->Code Formatter <?xml version= ...
- boost::any 用法
boost::any可以存放任何类型的C++类型,也可以是用户自定义的类型.非常方便,可以很方便的满足在运行过程中判断数据类型,从而进行相关的操作. 函数原型: // In header: <b ...
- k8s-安装coreos+kubernetes
开始 软件 版本 分支 简称 Container Linux 1465.7.0 stable coreos kubernetes 1.7.3 stable k8s 本文主要内容来自coreos.com ...
- 10 Linux Commands Every Developer Should Know
转载:http://azer.bike/journal/10-linux-commands-every-developer-should-know/ As a software engineer, l ...
- redis安全设置
1. 设置监听ip为本地和内网ip bind 127.0.0.1 192.168.1.99 ## 可以是多个ip,用空格分割 2. 设置监听端口 port 16379 3. 设置密码 在配置文件中加入 ...
- Linux 系统日志管理
Linux rsyslogd服务及启动方法 在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd.Red Hat 公司认为 syslogd 已经不能满足工作中的 ...
- list元素排序需要满足两个条件
关于List 说到list,我的印象就是单值集合接口,插入取出是有序的,允许重复,用他的实现类用的最频繁的就是ArrayList了.如果我现在有一个list,插入了一些值,想让里面的值按照我自定义的规 ...
- 负载均衡技术在CDN中发挥着重要作用
转载地址:http://www.qicaispace.com/gonggao/server/page01/info07.asp CDN是一个经策略性部署的整体系统,能够帮助用户解决分布式存储.负载均衡 ...
- 【Error】安装程序无法打开注册表项 UNKNOWN\Components\...
在安装程序的时候出现错误信息: 解决方法: 依次点击开始,所有程序,附件,右键单击命令提示符,选择以管理员身份运行.运行secedit /configure /cfg %windir%\inf\def ...