格力空调f0是什么意思出现f0故障还可以继续使用吗

本文所属图书&>&
还在苦苦寻觅用python控制、处理、整理、分析结构化数据的完整课程?《利用python进行数据分析》含有大量的实践案例,你将学会如何利用各种python库(包括numpy、pandas、matplotlib以及ipython等)高效地解决各&&
各章的示例数据都存放在GitHub上:/pydata/pydata-book。下载这些数据的方法有二:使用git版本控制命令行程序;直接从网站上下载该GitHub库的zip文件。
为了让所有示例都能重现,我尽量使其包含所有必需的东西,但仍然可能会有一些错误或遗漏。如果出现这种情况的话,请给我发邮件:。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。周末推书|《利用Python进行数据分析》-微众圈
微众圈,我的微信生活圈!
周末推书|《利用Python进行数据分析》
摘自公众号:发布时间: 5:30:13
名人推荐“科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法。本书在未来几年里肯定会成为Python领域中技术计算的权威指南。” ――Fernando Pérez(加州大学伯克利分校研究科学家, IPython创始人之一)内容简介还在苦苦寻觅用Python控制、处理、整理、分析结构化数据的完整课程?本书含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。由于作者Wes McKinney是pandas库的主要作者,所以本书也可以作为利用Python实现数据密集型应用的科学计算实践指南。本书适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。作者简介Wes McKinney 资深数据分析专家,对各种Python库(包括NumPy、pandas、matplotlib以及IPython等)等都有深入研究,并在大量的实践中积累了丰富的经验。撰写了大量与Python数据分析相关的经典文章,被各大技术社区争相转载,是Python和开源技术社区公认的权威人物之一。开发了用于数据分析的著名开源Python库――pandas,广获用户好评。在创建Lambda Foundry(一家致力于企业数据分析的公司)之前,他曾是AQR Capital Management的定量分析师摘 录来自bit.ly的1.usa.gov数据2011年,URL缩短服务bit.ly跟美国政府网站usa.gov合作,提供了一份从生成.gov或.mil短链接的用户那里收集来的匿名数据。直到编写本书时为止,除实时数据之外,还可以下载文本文件形式的每小时快照。以每小时快照为例,文件中各行的格式为JSON(即JavaScript Object Notation,这是一种常用的Web数据格式)。例如,如果我们只读取某个文件中的第一行,那么你所看到的结果应该是下面这样:Python有许多内置或第三方模块可以将JSON字符串转换成Python字典对象。这里,我将使用json模块及其loads函数逐行加载已经下载好的数据文件:你可能之前没用过Python,解释一下上面最后那行表达式,它叫做列表推导式(list comprehension),这是一种在一组字符串(或一组别的对象)上执行一条相同操作(如json.loads)的简洁方式。在一个打开的文件句柄上进行迭代即可获得一个由行组成的序列。现在,records对象就成为一组Python字典了:注意,Python的索引是从0开始的,不像其他某些语言是从1开始的(如R)。现在,只要以字符串的形式给出想要访问的键就可以得到当前记录中相应的值了:单引号前面的u表示unicode(一种标准的字符串编码格式)。注意,IPython在这里给出的是时区的字符串对象形式,而不是其打印形式:豆瓣评分:8.5推荐指数:★★★★☆ 更多精彩,长按下方图片中的二维码,下载APP查看。
微信号:cntongjipandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于NumPy构建的,让以NumPy为中心的应用变得更加简单。具备按轴自动或显式数据对齐功能的数据结构。这可以防止许多由于数据未对齐以及来自不同数据源(索引方式不同)的数据而导致的常见错误。集成时间序列功能。既能处理时间序列数据也能处理非时间序列数据的数据结构。数学运算和约简(比如对某个轴求和)可以根据不同的元数据(轴编号)执行。灵活处理缺失数据。合并及其他出现在常见数据库(例如基于SQL的)中的关系型运算。pandas引入约定如下所示:In [1]: from pandas import Series, DataFrameIn [2]: import pandas as pd因此,只要你在代码中看到pd.,就得想到这是pandas。因为Series和DataFrame用的次数非常多,所以将其引入本地命名空间中会更方便。1、pandas的数据结构介绍要使用pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame。虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的、易于使用的基础。2、SeriesSeries是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:In [4]: obj = pd.Series([4, 7, -5, 3])In [5]: objOut[5]: 0dtype: int64Series的字符串表现形式为:索引在左边,值在右边。由于我们没有为数据指定索引,于是会自动创建一个0到N-1(N为数据的长度)的整数型索引。你可以通过Series的values和index属性获取其数组表示形式和索引对象:In [7]: obj.valuesOut[7]: array([ 4,7, -5,3], dtype=int64)In [8]: obj.indexOut[8]: Int64Index([0, 1, 2, 3], dtype='int64')通常,我们希望所创建的Series带有一个可以对各个数据点进行标记的索引:In [9]: obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', 'c'])In [10]: obj2Out[10]: d4b7a -5c3dtype: int64In [11]: obj2.indexOut[11]: Index([u'd', u'b', u'a', u'c'], dtype='object')与普通NumPy数组相比,你可以通过索引的方式选取Series中的单个或一组值:In [12]: obj2['a']Out[12]: -5In [13]: obj2['d'] = 6In [14]: obj2[['c', 'a', 'd']]Out[14]: c3a -5d6dtype: int64NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接:In [25]: obj2Out[25]: d4b7a -5c3dtype: int64In [26]: obj2[obj2 & 0]Out[26]: d4b7c3dtype: int64In [27]: obj2 * 2Out[27]: d 8b14a -10c 6dtype: int64In [28]: import numpy as npIn [29]: np.exp(obj2)Out[29]: d54.6...085537dtype: float64还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。它可以用在许多原本需要字典参数的函数中:In [31]: 'b' in obj2Out[31]: TrueIn [32]: 'e' in obj2Out[32]: False如果数据被存放在一个Python字典中,也可以直接通过这个字典来创建Series:In [33]: sdata = {'Ohio': 3500, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}In [34]: obj3 = pd.Series(sdata)In [35]: obj3Out[35]: Ohio 3500Oregon16000Texas 71000Utah 5000dtype: int64如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。In [36]: states = ['California', 'Ohio', 'Oregon', 'Texas']In [37]: obj4 = pd.Series(sdata, index=states)In [38]: obj4Out[38]: CaliforniaNaNOhio 3500Oregon16000Texas 71000dtype: float64在这个例子中,sdata中跟states索引相匹配的那3个值会被找出来并放到相应的位置上,但由于“California”所对应的sdata值找不到,索引其结果就为NaN(即“非数字”(not a number)),在pandas中,它用于表示缺失或NA值。我将使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可用于检测缺失数据:In [39]: pd.isnull(obj4)Out[39]: California TrueOhioFalseOregonFalseTexas Falsedtype: boolIn [40]: pd.notnull(obj4)Out[40]: CaliforniaFalseOhio TrueOregon TrueTexasTruedtype: boolSeries也有类似的实例方法:In [41]: obj4.isnull()Out[41]: California TrueOhioFalseOregonFalseTexas Falsedtype: bool对于许多应用而言,Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。In [42]: obj3Out[42]: Ohio 3500Oregon16000Texas 71000Utah 5000dtype: int64In [43]: obj4Out[43]: CaliforniaNaNOhio 3500Oregon16000Texas 71000dtype: float64In [44]: obj3 + obj4Out[44]: California NaNOhio7000Oregon 32000Texas 142000Utah NaNdtype: float64Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。In [45]: obj4.name = 'population'In [46]: obj4.index.name = 'state'In [47]: obj4Out[47]: stateCaliforniaNaNOhio 3500Oregon16000Texas 71000Name: population, dtype: float64Series的索引可以通过赋值的方式就地修改:In [48]: obj.index = ['Bob', 'Steve', 'Jeff', 'Ryan']In [49]: objOut[49]: Bob4Steve7Jeff-5Ryan 3dtype: int643、DataFrameDataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。注意:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维的数据(层次化索引的表格型结构,这是pandas中许多高级数据处理功能的关键要素)。构建DataFrame的办法有很多,做常用的一种是直接传入一个由等长列表或NumPy数组组成的字典:In [50]: data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], ....:'year': [, , 2002], ....:'pop':[1.5, 1.7, 3.6, 2.4, 2.9]}In [51]: frame = pd.DataFrame(data)结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序排列:pop stateyear01.5OhioOhioOhioNevadaNevada2002[5 rows x 3 columns]如果指定了列序列,则DataFrame的列就会按照指定顺序进行排列:In [53]: pd.DataFrame(data, columns=['year', 'state', 'pop'])Out[53]:
year statepop02000
Ohio1.512001
Ohio1.722002
Ohio3.632001Nevada2.442002Nevada2.9[5 rows x 3 columns]跟Series一样,如果传入的列在数据中找不到,就会产生NA值:In [54]: frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], ....:
index=['one', 'two', 'three', 'four', 'five'])In [55]: frame2Out[55]:
year statepop debtone2000Ohio1.5NaNtwo2001Ohio1.7NaNthree2002Ohio3.6NaNfour 2001Nevada2.4NaNfive 2002Nevada2.9NaN[5 rows x 4 columns]In [56]: frame2.columnsOut[56]: Index([u'year', u'state', u'pop', u'debt'], dtype='object')通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:In [57]: frame2['state']Out[57]: oneOhiotwoOhiothreeOhiofour Nevadafive NevadaName: state, dtype: objectIn [58]: frame2.yearOut[58]: one2000two2001three2002four 2001five 2002Name: year, dtype: int64返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应地设置好了。行也可以通过位置或名称的方式进行获取,比如用索引字段ix:In [59]: frame2.ix['three']Out[59]: year 2002stateOhiopop 3.6debtNaNName: three, dtype: object列可以通过赋值的方式进行修改。例如,我们可以给那个空的“debt”列赋上一个标量值或一组值:In [60]: frame2['debt'] = 16.5In [61]: frame2Out[61]:
year statepopdebtone2000Ohio1.516.5two2001Ohio1.716.5three2002Ohio3.616.5four 2001Nevada2.416.5five 2002Nevada2.916.5[5 rows x 4 columns]In [62]: frame2['debt'] = np.arange(5.)In [63]: frame2Out[63]:
year statepopdebtone2000Ohio1.5 0two2001Ohio1.7 1three2002Ohio3.6 2four 2001Nevada2.4 3five 2002Nevada2.9 4[5 rows x 4 columns]将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值:In [64]: val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])In [65]: frame2['debt'] = valIn [66]: frame2Out[66]:
year statepopdebtone2000Ohio1.5 NaNtwo2001Ohio1.7-1.2three2002Ohio3.6 NaNfour 2001Nevada2.4-1.5five 2002Nevada2.9-1.7[5 rows x 4 columns]为不存在的列赋值会创建出一个新列。关键字del用于删除列:In [67]: frame2['eastern'] = frame2.state == 'Ohio'In [68]: frame2Out[68]:
year statepopdebt easternone2000Ohio1.5 NaNTruetwo2001Ohio1.7-1.2Truethree2002Ohio3.6 NaNTruefour 2001Nevada2.4-1.5 Falsefive 2002Nevada2.9-1.7 False[5 rows x 5 columns]In [69]: del frame2['eastern']In [70]: frame2.columnsOut[70]: Index([u'year', u'state', u'pop', u'debt'], dtype='object')警告:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何就地修改全部会反映到源DataFrame上。通过Series的copy方法即可显式地复制列。另一种常见的数据形式是嵌套字典(也就是字典的字典):In [71]: pop = {'Nevada': {, }, ....: 'Ohio': {, , }}如果将它传给DataFrame,它就会被解释为:外层字典的键作为列,内层键则作为行索引:In [72]: frame3 = pd.DataFrame(pop)In [73]: frame3Out[73]:
NevadaOhio2000 NaN 1. 1. 3.6[3 rows x 2 columns]当然,你也可以对该结果进行转置:In [74]: frame3.TOut[74]: Nevada NaN 2.4 2.9Ohio 1.5 1.7 3.6[2 rows x 3 columns]内层字典的键会被合并、排序以形成最终的索引。如果显示指定了索引,则不会这样:In [75]: pd.DataFrame(pop, index=[, 2003])Out[75]:
NevadaOhio 1. 3.62003 NaN NaN[3 rows x 2 columns]由Series组成的字典差不多也是一样的用法:In [76]: pdata = {'Ohio': frame3['Ohio'][:-1], ....: 'Nevada': frame3['Nevada'][:2]}In [77]: pd.DataFrame(pdata)Out[77]:
NevadaOhio2000 NaN 1. 1.7[2 rows x 2 columns]如果设置了DataFrame的index和columns的name属性,则这些信息也会被显示出来:In [78]: frame3.index.name = 'year'; frame3.columns.name = 'state'In [79]: frame3Out[79]: stateNevadaOhioyear 2000NaN 1. 1. 3.6[3 rows x 2 columns]跟Series一样,values属性也会以二维ndarray的形式返回DataFrame中的数据:In [80]: frame3Out[80]: stateNevadaOhioyear 2000NaN 1. 1. 3.6[3 rows x 2 columns]如果DataFrame各列的数据类型不同,则值数组的数据类型就会选用能兼容所有列的数据类型:In [81]: frame2.valuesOut[81]:array([[2000L, 'Ohio', 1.5, nan], [2001L, 'Ohio', 1.7, -1.2], [2002L, 'Ohio', 3.6, nan], [2001L, 'Nevada', 2.4, -1.5], [2002L, 'Nevada', 2.9, -1.7]], dtype=object)
为什么Thinkphp
中的&if&&v
最新教程周点击榜
微信扫一扫在10个鸡蛋上坐了3星期后,终于成功孵化出第一颗鸡蛋。
但礼仪小姐、导购小姐依然是场内的一道风景线。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  欢迎关注天善智能微信公众号,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区。 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入头条数据爱好者交流群,数据爱好者们都在这儿。
  本书讲的是利用python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。
  书中的“数据”主要指的是 结构化数据(structured data),例如
多维数据(矩阵)
表格型数据,其中各列可能是不同的类型(字符串、数值、日期等)
通过关键列(对于SQL来说就是主键和外键)相互联系的多个表
间隔平均或不平均的时间序列
  重要的python库
  numpy(numberical python),是python的科学计算基础包。提供的功能(不限于此):
快速高效的多维数组对象ndarray
读写硬盘上基于数组的数据集的工具
线性代数运算、傅里叶变换、以及随机数的生产
  pandas
  pandas这个名字源于panel data(面板数据)以及python data analysis(python数据分析)
  pandas提供了能够快速便捷的处理结构化数据的大量数据结构和函数。
  matplotlib
  matplotlib是流行的数据图表的python库。
  Ipython
  一个增强的python shell,目的是体改编写、测试、调试python代码的速度。主要用于交互式数据 的处理和利用matplotlib对数据进行可视化处理。
  scipy是一组专门解决科学计算中各种标准问题域的集合,主要包括:
scipy.integrate 数值积分例程和微分方程求解器
scipy.linalg 扩展了由scipy.linalg提供的线性代数例程和矩阵分解功能
  安装和设置
  这里我们下载Anaconda2-4.3.0.1安装包。如果你之前安装过python的解释器,需要手动将其删除。
  (注:Anaconda一个开源的 发行版本)
  此时,打开命令提示符。输入python。与之对应的安装消息是:
  此时查看环境变量:
  先删除之前与python有关的所有环境变量。
  添加在path环境中应该如下:
  H:\python; H:\python\s
  (其中安装Anaconda2-4.3.0.1包时候,上面的环境变量会自动添加)
  Anaconda(注:Anaconda一个开源的 发行版本,里面已经内置了numpy、pandas、matplotlib等200多个包)
  我们来引入pandas,绘制一个简单的matplotlib图形
  生成这样一个图形
  我们再检查IPython HTML notebook是否安装成功:
  集成开发环境(IDE)
  标准开发环境?Ipython外加一个文本编辑器(pycharm)
  数据规整:指的是将非结构化或散乱数据处理为结构化或整洁形式的整个过程。
  伪码:算法或过程的“代码式”描述,而这些代码本身并不是实际有效的源代码。
  语法糖:这是一种编程语法,并不会带来新的特性,但是能使代码更易读、更易写。
  转载请保留以下内容:
  本文来源自天善社区lingan的博客(公众号)。
  原文链接:
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
天善智能,专注于商业智能BI,大数据,数据分析领域,欢迎关...
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:利用python进行数据分析之数据规整化
时间: 10:17:42
&&&& 阅读:154
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&数据分析和建模大部分时间都用在数据准备上,数据的准备过程包括:加载,清理,转换与重塑。
合并数据集
pandas对象中的数据可以通过一些内置方法来进行合并:
pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来,实现类似于数据库中的连接操作。
pandas.cancat表示沿着一条轴将多个对象堆叠到一起。
实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象的缺失值。
下面将进行分别讲解:
&1、数据库风格的DateFrame合并
数据集的合并运算是通过一个或者多个键将行连接起来,主要使用的merge或者join方法。
&&& import pandas as pd
&&& from pandas import DataFrame
&&& import numpy as np
&&& df1=DataFrame({‘key‘:[‘b‘,‘b‘,‘a‘,‘c‘,‘a‘,‘a‘,‘b‘],‘data1‘:range(7)})
&&& df2=DataFrame({‘key‘:[‘a‘,‘b‘,‘d‘],‘data2‘:range(3)})
&&& pd.merge(df1,df2)
#未显示指定用何列拼接,默认用重叠列的作为键,最好显示指定
&&& pd.merge(df1,df2,on=‘key‘)
#当两个对象列明不同可以进行分别指定
&&& df3=DataFrame({‘lkey‘:[‘b‘,‘b‘,‘a‘,‘c‘,‘a‘,‘a‘,‘b‘],‘data1‘:range(7)})
&&& df4=DataFrame({‘rkey‘:[‘a‘,‘b‘,‘d‘],‘data2‘:range(3)})
&&& pd.merge(df3,df4,left_on=‘lkey‘,right_on=‘rkey‘)
data1 lkey
data2 rkey
#默认情况下merge函数进行的是交集操作,可以指定how参数来实现左右连接与并集(outer)
#根据多个键进行合并,传入一个由列名组成的列表即可
&&& left=DataFrame({‘key1‘:[‘foo‘,‘foo‘,‘bar‘],‘key2‘:[‘one‘,‘two‘,‘three‘],‘lval‘:[1,2,3]})
&&& right=DataFrame({‘key1‘:[‘foo‘,‘foo‘,‘bar‘,‘bar‘],‘key2‘:[‘one‘,‘two‘,‘one‘,‘two‘],‘rval‘:[4,5,6,7]})
&&& pd.merge(left,right,on=[‘key1‘,‘key2‘],how=‘outer‘)
&对于合并运算需要考虑的最后一个问题是对重复列名的处理,merge有一个suffixes选项,用于指定附加到左右两个DataFrame对象的重叠列名上的字符串:
&&& pd.merge(left,right,on=‘key1‘)
key1 key2_x
lval key2_y
&&& pd.merge(left,right,on=‘key1‘,suffixes=(‘_left‘,‘_right‘))
key1 key2_left
lval key2_right
merge函数的参数表
参与合并的左侧DataFrame
参与合并的右侧DataFrame
选定参与合并的方式(inner,outer,left等)
用于连接的列名
左侧DataFrame中用于连接的键
右侧DataFrame中用于连接的键
根据连接键对合并后的数据进行排序,默认为True
字符串元组,用于追加到重叠列名的末尾
2、索引上的合并
有时,DataFrame中的连接位于其索引中,在此种情况下可以传入left_index=True或者right_index=True以说明索引应该被用作连接键:
&&& left1=DataFrame({‘key‘:[‘a‘,‘b‘,‘a‘,‘a‘,‘b‘,‘c‘],‘value‘:range(6)})
&&& right1=DataFrame({‘group‘:[3.5,7]},index=[‘a‘,‘b‘])
&&& right1
对于层次化索引数据,相对更为复杂些,在这种情况下,必须以列表的形式指明用作合并键的多个列
&&& lenth=DataFrame({‘key1‘:[‘ohio‘,‘ohio‘,‘ohio‘,‘nevada‘,‘nevada‘],‘key2‘:[02,],‘data‘:np.arange(5)})
&&& righth=DataFrame(np.arange(12).reshape((6,2)),index=[[‘neveda‘,‘neveda‘,‘ohio‘,‘ohio‘,‘ohio‘,‘ohio‘],[00,02]],columns=[‘event1‘,‘event2‘])
&&& righth
neveda 2001
&&& pd.merge(lenth,righth,left_on=[‘key1‘,‘key2‘],right_index=True)
&DataFrame还有一个join实例方法,它可以更为方便的实现按索引合并,还可以合并多个带有相同或者相似索引的DataFrame对象,而不管其是否有重叠的列:
&&& left2=DataFrame([[1,2],[3,4],[5,6]],index=[‘a‘,‘c‘,‘e‘],columns=[‘ohio‘,‘nevada‘])
&&& right2=DataFrame([[7,8],[9,10],[11,12],[13,14]],index=[‘b‘,‘c‘,‘d‘,‘e‘],columns=[‘missouri‘,‘alambda‘])
&&& right2
&&& left2.join(right2,how=‘outer‘)
3、轴向连接
&纵向上,numpy有一个用于合并原始numpy数组的concatenation函数:
&&& arr=np.arange(12).reshape((3,4))
array([[ 0,
9, 10, 11]])
&&& np.concatenate([arr,arr],axis=1)
array([[ 0,
9, 10, 11,
9, 10, 11]])
&&& np.concatenate([arr,arr],axis=0)
array([[ 0,
9, 10, 11],
9, 10, 11]])
#pandas的concat函数提供了一种能够解决这些问题的可靠方式,默认情况下,concat在0轴上工作,
&&& s1=pd.Series([0,1],index=[‘a‘,‘b‘])
&&& s2=pd.Series([2,3,4],index=[‘c‘,‘d‘,‘e‘])
&&& s3=pd.Series([5,6],index=[‘f‘,‘g‘])
&&& pd.concat([s1,s2,s3])
dtype: int64#axis=1时,得到一个DataFrame对象
&&& pd.concat([s1,s2,s3],axis=1)
可以通过join_axes指定要在其他轴上使用的索引:
&&& s4=pd.concat([s1*5,s3])
dtype: int64
&&& pd.concat([s1,s4],axis=1,join_axes=[[‘a‘,‘c‘,‘b‘,‘e‘]])
 当你需要区分参与连接的片段时,可以在连接轴上创建一个层次化索引,使用key参数可以达到这个目的
&&& result=pd.concat([s1,s2,s3],keys=[‘one‘,‘two‘,‘three‘])
&&& result
dtype: int64
#如果沿着axis=1对Series进行合并,则keys会变成合并后DataFrame的列头
&&& pd.concat([s1,s2,s3],keys=[‘one‘,‘two‘,‘three‘],axis=1)
最后一个需要考虑的问题是,跟当前分析无关的DataFrame索引,直接传入ignore_index=True即可:
&&& df1=DataFrame(np.random.randn(3,4),columns=[‘a‘,‘b‘,‘c‘,‘d‘])
&&& df2=DataFrame(np.random.randn(2,3),columns=[‘b‘,‘d‘,‘a‘])
0 -1....693538
1 -1....429279
0....243345
0 -1...288906
1 -0...661805
&&& pd.concat([df1,df2],ignore_index=True)
0 -1....693538
1 -1....429279
0....243345
4 -0..381170
#注意区分与下面区别
&&& pd.concat([df1,df2])
0 -1....693538
1 -1....429279
0....243345
1 -0..381170
&4、合并重叠数据
还有一种数据不能用简单的合并或者连接运算来处理比如你有可能索引全部或部分重叠的两个数据集:
&&& a=Series([np.nan,2.5,np.nan,3.5,4.5,np.nan],index=[‘f‘,‘e‘,‘d‘,‘c‘,‘b‘,‘a‘])
&&& b=Series(np.arange(len(a),dtype=np.float64),index=[‘f‘,‘e‘,‘d‘,‘c‘,‘b‘,‘a‘])
dtype: float64
dtype: float64
&&& np.where(pd.isnull(a),b,a)
array([ 0. ,
#可以看作用参数对象中的数据为调用者对象的缺失数据打补丁
也可用combine_first方法
&&& df1=DataFrame({‘a‘:[1,np.nan,5,np.nan],‘b‘:[np.nan,2,np.nan,6],‘c‘:range(2,18,4)})
&&& df2=DataFrame({‘a‘:[5,4,np.nan,3,7],‘b‘:[np.nan,3,4,6,8]})
&&& bine_first(df2)
重塑和轴向旋转
&1、重塑层次化索引
层次化索引技术为DataFrame数据重拍运算提供了一种具有良好一致性的方式,主要功能有二:
stack,将数据的列旋转为行
unstack,将数据的行旋转为列
&&& data=DataFrame(np.arange(6).reshape((2,3)),index=[‘ohio‘,‘colorado‘],columns=[‘one‘,‘two‘,‘three‘])
&&& data.index
Index([u‘ohio‘, u‘colorado‘], dtype=‘object‘)
&&& data.index.name=‘state‘
&&& data.columns.name=‘number‘
&&& data.stack()
dtype: int32#将列转化为行,得到一个Series#对于一个层次化索引的Series,可以用unstack将其重排为一个DataFrame
&默认情况下unstack操作的是最内层的,可传入分层级别的编号和名称参数,即可对其他级别进行untack操作:
&&& result=data.stack()
&&& result
dtype: int32
&&& result.unstack(0)
&&& result.unstack(‘state‘)
&在对DataFrame,进行unset操作时,作为旋转轴的级别将会成为结果中的最低级别(即旋转轴索引将成为最内层索引):
&&& df=DataFrame({‘left‘:result,‘right‘:result+5},columns=[‘left‘,‘right‘])
&&& df.columns.name=‘side‘
colorado one
&&& df.unstack(‘state‘)
ohio colorado
ohio colorado
&&& df.unstack(‘state‘).stack(‘side‘)
number side
除了数据合并与重排之外,另一类重要的操作是过滤,清理。
1、移除重复数据
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否为重复行
&&& data=DataFrame({‘k1‘:[‘one‘]*3+[‘two‘]*4,‘k2‘:[1,1,2,3,3,4,4]})
&&& data.duplicated()
dtype: bool
#drop_duplicates方法用于返回一个移除了重复行的DataFrame,删除那些为True的行
&&& data.drop_duplicates()
#可以指定过滤重复列的项
&&& data.drop_duplicates([‘k1‘])
#以上两个方法默认保留第一个出现的组合值,传入take_last=True则可以保留最后一个
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:/splended/p/5208094.html
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!

我要回帖

更多关于 格力空调f0故障 的文章

 

随机推荐