一句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,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- [Bug] 解决 Sql Server 数据库死锁问题
SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tra ...
- [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题
机器学习策略-不匹配的训练和开发/测试数据 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.4在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...
- python中用xpath匹配文本段落内容的技巧
content = item.xpath('//div[@class="content"]/span')[0].xpath('string(.)') content = item. ...
- c#结构体、打他table、excel、csv互转
1.csv相关 public static class CsvHelper { /// <summary> /// 根据csv路径获取datatable /// </summary& ...
- 给你的jQuery项目赋予Router技能吧
现在你不会React/Vue都不好意思说自己是前端,不过我相信很多前端项目还是基于jquery类库的传统模式的,假如你有追求的态度使用过requireJs这个库,你一定思考过一个问题,或者说一种组件化 ...
- HDU [P1151] Air Raid
二分图匹配求DAG图上的最小路径覆盖 应用了拆点的思想,将DAG图上的每一个点拆成二分图的x集合与y集合,对于一条有向边u->v来说,我们在ux与vy之间连一条边,然后求二分图的最大匹配 DAG ...
- 洛谷 [P1198] 最大数
首先这是一道线段树裸题,但是线段树长度不确定,那么我们可以在建树的时候,将每一个节点初始化为-INF,每次往队尾加一个元素即一次单节点更新,注意本题的数据范围,其实并不用开 long long,具体请 ...
- C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]
题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义 ...
- [Android] Toast问题深度剖析(二)
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者: QQ音乐技术团队 题记 Toast 作为 Android 系统中最常用的类之一,由于其方便的api设计和简洁的交互体验,被我们所广泛采用 ...
- js实现点击切换显示隐藏,点击其它位置再隐藏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...