一句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,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- IT 人士如何避免中年危机?
今天咱们不谈技术,来聊点别的. 这也可能是比学习具体技术更重要的话题 - 投资. 我把投资分成两类: 投资股票.期货.现货.黄金这类常见投资品种. 投资自己.比如看书.学习.参加培训.当然<每天 ...
- 循环while 、do…while 、for
循环while .do-while .for 循环结构的选择? - 当对一个条件进行一次判断时,用if语句: - 当对一个条件进行多次判断时,用while语句: 1.While 循环条件成立就会执行循 ...
- python交互模式下tab键自动补全
import rlcompleter,readline readline.parse_and_bind('tab:complete')
- Date对象和正则对象
1.Date对象 创建 var date1 = new Date(); var date2 = new Date(12983798123);//填一个毫秒值,应该是距离1970年1月1日.....多少 ...
- 高通ASOC中的machine驱动
ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...
- fiddler2请求参数乱码
win7 1.windows按钮+R 2.输入regedit +回车+是 3.HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 4.右键新建,选字符串值 加上 ...
- HDU [P1151] Air Raid
二分图匹配求DAG图上的最小路径覆盖 应用了拆点的思想,将DAG图上的每一个点拆成二分图的x集合与y集合,对于一条有向边u->v来说,我们在ux与vy之间连一条边,然后求二分图的最大匹配 DAG ...
- 洛谷 [P1963] [NOI2009] 变换序列
这是一道二分图匹配的题 先%dalao博客 建图并没有什么难的,但是关键在于如何使字典序最小. 一个很显然的想法是先求出一个完美匹配,然后从x集合的第一个元素开始,如果该元素匹配的较小的一个,那么继续 ...
- centos 7 配置 到多站点设置
背景 : 前面配置了 win2008 WAMP环境, 这次因为一些事情 新买了服务器 只有 win2003 和 win2012, 试着配置2012 WAMP环境 发现比 2008 缺的配置文件多很多 ...
- Visual Studio 2017 for Mac 连接Git的奇怪问题
VS for Mac连接Git的时候遇到个奇怪的问题, 无法将已存在的解决方案绑定并提交到GitHub中去. VS版本7.3.3 问题复现 以为自己操作有问题, 新建项目测试一下, 新建的时候没有勾选 ...