一句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,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- Codeforces D. Sorting the Coins
D. Sorting the Coins time limit per test 1 second memory limit per test 512 megabytes input standard ...
- oracle plsql exception例外
以下plsql程序用的scott用户的dept,emp表. not_data_found例外: --系统列外 set serveroutput on declare pename emp.ename% ...
- TensorflowTutorial_一维数据构造简单CNN
使用一维数据构造简单卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 神经网络对于一维数据非常重要,时序数据集.信号处理数据集和一些文本嵌入数据集都是一维数据,会频繁的使用到神经网 ...
- 正确理解python的装饰器
一直在用别人写的装饰器,从来没有对其原理进行深入的探究.今天趁有点闲着的时间,把装饰器的原理好好看了一遍,做一下整理. 一.装饰器的基本原理 装饰器就是一个可以接受调用也可以返回调用的调用.装饰器本身 ...
- 为什么说http协议是无状态的?
首先了解基本概念:什么是无状态,什么是无连接 无状态协议: 协议的状态是指下一次传输可以“记住”这次传输信息的能力. http是不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存. 比如 ...
- NIO基础篇(二)
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 传统的 ...
- 洛谷 [P2590] 树的统计
迷之TLE #include <iostream> #include <cstdio> #include <cstring> #include <algori ...
- BZOJ 3329: Xorequ [数位DP 矩阵乘法]
3329: Xorequ 题意:\(\le n \le 10^18\)和\(\le 2^n\)中满足\(x\oplus 3x = 2x\)的解的个数,第二问模1e9+7 \(x\oplus 2x = ...
- BZOJ 1076: [SCOI2008]奖励关 [DP 期望 状压]
传送门 题意:$n$种宝物,出现$k$次每次一种,每种宝物有价值和吃掉它之前必须要吃掉的宝物的集合,求采取最优策略的期望最大价值 1<=k<=100,1<=n<=15,分值为[ ...
- POJ 2154 Color [Polya 数论]
和上题一样,只考虑旋转等价,只不过颜色和珠子$1e9$ 一样的式子 $\sum\limits_{i=1}^n m^{gcd(i,n)}$ 然后按$gcd$分类,枚举$n$的约数 如果这个也化不出来我莫 ...