pandas 2

==============
sdf={'rkey':[1,2,3,2],'name':['rkey1','rkey2','rkey3','rkey4']}
sdf2={'lkey':[1,2,3],'name':['lsdf1','lsdf2','lsdf3']}
sdf3={'lkey':[11,2,3],'name':['lsdf3','lsdf3','lsdf3']}
cc=DataFrame(sdf)
cc2=DataFrame(sdf2)
cc3=DataFrame(sdf3)
print cc.merge(cc2,left_on='rkey',right_on='lkey')
name_x rkey lkey name_y
0 rkey1 1 1 lsdf1
1 rkey2 2 2 lsdf2
2 rkey4 2 2 lsdf2
3 rkey3 3 3 lsdf3
print cc2.merge(cc3,on='lkey')
lkey name_x name_y
0 2 lsdf2 lsdf3
1 3 lsdf3 lsdf3
# 指定附加在重名列上的字符串
print cc2.merge(cc3,on='lkey',suffixes=('_left','_right'))
lkey name_left name_right
0 2 lsdf2 lsdf3
1 3 lsdf3 lsdf3


======通过索引和列进行合并=====================
sdf2={'tst':[1,2,3],'name':['lsdf2','lsdf22','lsdf32']}
sdf3={'lkey':[11,2,3],'name':['lsdf3','lsdf23','lsdf33']}
cc2=DataFrame(sdf2,index=[1,2,3])
cc3=DataFrame(sdf3)
print cc2.merge(cc3,left_index=True,right_on='lkey')

=======================
sdf=Series([11,22,33])
sdf2=Series([44,55,66])
print pd.concat([sdf,sdf2])

print pd.concat([sdf,sdf2],axis=1)

=============
sdf2={'tst2':[1,2,3],'name':['lsdf2','lsdf22','lsdf32']}
sdf3={'tst3':[11,2,3],'name':['lsdf3','lsdf23','lsdf33']}
cc2=DataFrame(sdf2,index=['b','c','d'])
cc3=DataFrame(sdf3,index=['a','b','c'])
print pd.concat([cc2,cc3])

print pd.concat([cc2,cc3],axis=1)

===========
print pd.concat([cc2,cc3],axis=1,join='inner')

print pd.concat([cc2,cc3],join='inner')

==============
sdf2={'tst':[1,2,3],'name':['lsdf2','lsdf22','lsdf32']}
sdf3={'tst':[11,2,3],'name':['lsdf3','lsdf23','lsdf33']}
cc2=DataFrame(sdf2,index=['b','c','d'])
cc3=DataFrame(sdf3,index=['a','b','c'])
print pd.concat([cc2,cc3],ignore_index=True)

=========用参数对象中的数据为调用者对象的缺失数据打补丁==========
sdf2={'tst':[11,np.nan,33],'name':[np.nan,'lsdf22','lsdf22']}
sdf3={'tst':[1,2,3],'name':['lsdf3','lsdf23','lsdf33']}
cc2=DataFrame(sdf2,index=['b','c','d'])
cc3=DataFrame(sdf3,index=['a','b','c'])
print cc2.combine_first(cc3)

======================
sdf3={'tst':[1,2,3],'name':['lsdf3','lsdf23','lsdf33']}
cc3=DataFrame(sdf3,index=['a','b','c'])
# 指定附加在重名列上的字符串
print cc3.replace(3,100) #替换一个值

print cc3.replace([1,3],100) #替换多个值

print cc3.replace({1:100,3:300}) #不同值进行不同替换

================
df=pd.DataFrame({'name':['aa','bb','cc'],'age':[,,]})
ss=df['age']
print ss
Name: age, dtype: int64
索引ss的某一个值:ss[0]
索引ss的某几个值:ss[[0,1]]
切片:ss[1:]
==========
s6=pd.Series(np.array([,,,,,]),index=['a','b','c','d','e','f'])
s7=pd.Series(np.array([,,,,,]),index=['a','c','g','b','d','f'])
#s6中不存在g索引,s7中不存在e索引,所以数据运算会产生两个缺失值NaN。
print(s6+s7)
dtype: int32
a 22.0
b 30.0
c 31.0
d 44.0
e NaN
f 96.0
g NaN
#可以注意到这里的算术运算自动实现了两个序列的自动对齐
#对于数据框的对齐,不仅是行索引的自动对齐,同时也会对列索引进行自动对齐,数据框相当于二维数组的推广
print(s6/s7)
dtype: float64
a 0.833333
b 1.000000
c 1.818182
d 2.142857
e NaN
f 5.000000
g NaN
dtype: float64
获取DataFrame的多行:test_data.iloc[[0,2,4,5,7]]
按某一列的值进行过滤:test_data[test_data['age']==51]
对多列进行过滤:test_data[(test_data['age']==51) & (test_data['job']>=5)] ---圆括号括起来+ &
过滤完后,只留下某几列:test_data[(test_data['age']==51) & (test_data['job']>=5)][['education','housing','loan','contact','poutcome']]
查询指定的行:test_data.loc[[0,2,4,5,7]]
查询指定的列:test_data[['age','job','marital']]
查询指定的行和列:test_data.loc[[0,2,4,5,7],['age','job','marital']]
pandas 2的更多相关文章
- pandas基础-Python3
未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...
- 10 Minutes to pandas
摘要 一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型 十.画图 十一 ...
- 利用Python进行数据分析(15) pandas基础: 字符串操作
字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...
- 利用Python进行数据分析(10) pandas基础: 处理缺失数据
数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 利用Python进行数据分析(9) pandas基础: 汇总统计和计算
pandas 对象拥有一些常用的数学和统计方法. 例如,sum() 方法,进行列小计: sum() 方法传入 axis=1 指定为横向汇总,即行小计: idxmax() 获取最大值对应的索 ...
- 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作
一.reindex() 方法:重新索引 针对 Series 重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- pandas.DataFrame对行和列求和及添加新行和列
导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...
- pandas.DataFrame排除特定行
使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...
随机推荐
- [k8s]debug模式启动集群&k8s常见报错集合(on the fly)
debug模式启动-支持sa 集群内(pod访问api)使用443加密 no1 no2 安装flanneld kubelet/kube-proxy m1 安装etcd/ api/contruller/ ...
- tensorflow 笔记12:函数区别:placeholder,variable,get_variable,参数共享
一.函数意义: 1.tf.Variable() 变量 W = tf.Variable(<initial-value>, name=<optional-name>) 用于生成一个 ...
- 大数据:Parquet文件存储格式
一.Parquet的组成 Parquet仅仅是一种存储格式,它是语言.平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎 ...
- React+Webpack+Webstorm开发环境搭建
需要安装的软件 node.js npm包管理 Webstorm 由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm nodejs(包含npm)安装在默认路径C:\Program Fi ...
- TPS和QPS的区别和理解
QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准. TPS:是Transactions ...
- elasticsearch以及head插件在centos7上的安装与配置教程
ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...
- laravel5.8笔记五:基类控制器和基类模型
建立基类的目的就是为了方便继承.比如:Admin模块访问,是否登陆.检测登陆可以写到基类里面 控制器基类 原始基类:app\Http\Controllers\Controller.php,我们下面要做 ...
- mpvue 未找到入口 app.json 文件
# 1. 先检查下 Node.js 是否安装成功 $ node -v v8.9.0 $ npm -v 5.6.0 到项目的目录 $ npm install $ npm run dev
- 【Dubbo 源码解析】07_Dubbo 重试机制
Dubbo 重试机制 通过前面 Dubbo 服务发现&引用 的分析,我们知道,Dubbo 的重试机制是通过 com.alibaba.dubbo.rpc.cluster.support.Fail ...
- Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...