一句Python,一句R︱数据的合并、分组、排序、翻转
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。
python中的numpy模块相当于R中的matirx矩阵格式,化为矩阵,很多内容就有矩阵的属性,可以方便计算。
以下符号:
=R=
代表着在R中代码是怎么样的。
一、分组.groupby
df.groupby(df.year // 10 *10).max() #=R= max(cut(df$year,10))
——————————————————————————
二、数据合并——pandas
1、横向合并,跟R一样,用merge就可以。
merge(data1,data2,on="id",, join='outer', join_axes=None, ignore_index=False,
concat不会去重,要达到去重的效果可以使用drop_duplicates方法。
1、objs 就是需要连接的对象集合,一般是列表或字典;
2、axis=0 是连接轴向join='outer' 参数作用于当另一条轴的 index 不重叠的时候,只有 'inner' 和 'outer' 可选(顺带展示 ignore_index=True 的用法),axis=1,代表按照列的方式合并。
3、join_axes=[] 指定自定义索引
4、参数ignore_index=True 重建索引
同时,可以标识出来, keys=[ , ] 来标识出来,基本语句为:concat([D1,D2], keys=['D1', 'D2'] )
同时,concat也可以暴力的横向合并:concat([D1,D2], axis=1)
注意:
特别是参数ignore_index=True,一定要带上,因为不带上会出现索引都是0000,那么就不能方便地使用切片,而发生切片都是“0”
——————————————————————————
三、数据合并——array、list、tuple
a=[] #append a.append([1,2]) #insert a.insert(2,1) a.insert(2,[1,2])
append加在后面,insert(位置,内容)可以加在指定位置。如果是 元组+list,都可以通过append/insert合并起来。
如果数据格式是array的话,如何对array进行合并?
这边笔者又要吐槽自己了...以为又在使用R,如果a是array格式的,append是不可以使用的。只有a=[]元组的时候,才可以append加进去。
那么这边的解决办法就是先赋值一个元组,然后往里面加:
a=[] a=a.append(np.array([1,2]))
——————————————————————————
四、排序
ascending=True代表升序(从小到大)、Flase代表降序(从大到小)
笔者借用R的思维,最好的排序就是先定位出来其下标(、索引)出来,就像R中排序中:
data[order(data$x),]
其中的order就是给出了下标。那么排序在不同数据结构下也有不同的排序方式。
1、元组、list
笔者目前见到的排序有以下几类:sort、sorted
sorted是一种函数,可以有更多的功能;而sort就直接帮你排序了
>>> a=[1,6,42,7,4,3,8,9,3] >>> sorted(a) [1, 3, 3, 4, 6, 7, 8, 9, 42] >>> a.sort() >>> a [1, 3, 3, 4, 6, 7, 8, 9, 42]
如果是元组形式的话,那么sorted是函数形式,就直接拿到了排好序的数列。
其中a.sort()就直接帮你排序好了,还是sorted比较好。
2、数组array/numpy
笔者目前见到的排序有以下几类:sort、sorted;argsort返回的是数列排序的秩
sort+sorted跟之前的元组、list一样,但是argsort不太一样。
>>> b=np.array([1,6,42,7,4,3,8,9,3]) >>> b.sort() >>> b array([ 1, 3, 3, 4, 6, 7, 8, 9, 42]) >>> sorted(b) [1, 3, 3, 4, 6, 7, 8, 9, 42]
其他用法都差不多,这里我非常喜欢argsort(),我想仔细了解她。
>>> b=np.array([1,6,42,7,4,3,8,9,3]) >>> b.argsort() array([0, 5, 8, 4, 1, 3, 6, 7, 2]) >>> b.argsort()[::-1] array([2, 7, 6, 3, 1, 4, 8, 5, 0]) >>> b[b.argsort()[::-1]] array([42, 9, 8, 7, 6, 4, 3, 3, 1])
其中argsort()神器啊,就是之前我说的R里面的秩,可以用这个做很多复杂排序。
假设b是一个array
b.argsort():显示=b的秩+按照从小到大排序
b.argsort()[::-1]:b的秩+按照从大到小排序
b[b.argsort()[::-1]]:从大到小排序后的b
3、pandas中的DataFrame
pandas中有sort和rank,这个就跟R里面是一样的了。
rank(axis=0,ascending=Flase)
其中axis代表0为列,1代表行,ascending=True代表升序(从小到大)、Flase代表降序(从大到小)
sorted(data.ix[:,1]) # 数据排序 a=data.rank(axis=0,ascending=False) #数据求秩 data.ix[:,1][a.ix[:,1]-1]
data.ix[:,1]代表选中第一列,然后sorted代表对第一列进行排序;
a.ix[:,1]-1 代表排好的秩,-1就还原到数据可以认识的索引。
另外,拍完序一般都需要取前几位数:
可以用data.head(n)
tail代表尾部
——————————————————————————
五、数据翻转
转置是data.T
序列翻转:reverse
利用切片的方法进行序列翻转:data[::-1]
一句Python,一句R︱数据的合并、分组、排序、翻转的更多相关文章
- Python 数据分析—第九章 数据聚合与分组运算
打算从后往前来做笔记 第九章 数据聚合与分组运算 分组 #生成数据,五行四列 df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one ...
- 利用python进行数据分析之数据聚合和分组运算
对数据集进行分组并对各分组应用函数是数据分析中的重要环节. group by技术 pandas对象中的数据会根据你所提供的一个或多个键被拆分为多组,拆分操作是在对象的特定轴上执行的,然后将一个函数应用 ...
- python数据分析之:数据聚合与分组运算
在数据库中,我们可以对数据进行分类,聚合运算.例如groupby操作.在pandas中同样也有类似的功能.通过这些聚合,分组操作,我们可以很容易的对数据进行转换,清洗,运算.比如如下图,首先通过不同的 ...
- 一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas中有类似R中的read.table的功能,而 ...
- 一句python,一句R︱python中的字符串操作、中文乱码
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...
- 一句Python,一句R︱pandas模块——高级版data.frame
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas可谓如雷贯耳,数据处理神器. 以下符号: = ...
- 一句Python,一句R︱numpy、array——高级matrix
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. python中的numpy模块相当于R中的matirx矩 ...
- 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
一句python,一句R︱python中的字符串操作.中文乱码.NaN情况 先学了R,最近刚刚上手Python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句pytho ...
- python爬取网站数据
开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- MySQL--当查询遇到隐藏字符
事件起因: 在将一些EXCEL维护的数据导入MySQL中维护过程中发现漏了一些数据,检查时发现看着相同的SQL返回的结果完全不同: 在SQLyog中看到的截图如: 两个SQL执行返回结果不同,其中一条 ...
- H5WebSocket消息推送
1.效果图 2.前端代码 @{ ViewBag.Title = "Home Page"; } @*HTML5 WebSocket WebSocket是HTML5开始提供的一种在单个 ...
- JS声明变量的写法
学习JS时候,声明变量是必须的,(虽然在没有声明变量的情况下,对某一变量赋值后, js自动认为已进行声明,但为了严谨,建议还是要进行声明)声明方式有传统的 var a: var b: var c: 也 ...
- C#基础(五)--枚举的含义及其应用
本章讲解如下枚举的如下几个知识点: 1.什么是枚举? 2.枚举是值类型还是引用类型? 3.如何定义枚举? 4.枚举的好处? 5.枚举在实际系统开发过程中的用处? 一 ...
- JUnit5 技术前瞻
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6868495.html JUnit ...
- 解决mysql、vsftp远程连接速度慢的问题
以 centOS 6.3(其他操作系统类似,同样适用)说明: 当我们的服务都配置正常的情况下,有时会出现连接速度慢而导致连接失败的问题 问题分析:这些情况一般都是DNS解析惹的祸 mysql连接速度慢 ...
- ContextLoaderListener加载过程
在web.xml中,配置ContextLoaderListener <!-- 配置Listener,用来创建Spring容器 --> <listener> <listen ...
- System.nanoTime
System.currentTimeMillis()返回的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数. System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意 ...
- BZOJ 1982: [Spoj 2021]Moving Pebbles [博弈论 对称]
给你N堆Stone,两个人玩游戏. 每次任选一堆,首先拿掉至少一个石头,然后移动任意个石子到任意堆中. 谁不能移动了,谁就输了... 以前在poj做过已经忘记了... 构造对称,选最多的一堆往其他堆分 ...
- git恢复误删除文件
在git仓库管理下误删除文件一般会分为以下3种情况: 1.手动直接删掉,如选择-右击-删除 这种删除未修改本地仓库[版本库],只修改了工作区,直接git checkout -- fileName即可恢 ...