一句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,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...
随机推荐
- php之快速排序
<?phpfunction shell_sort(array $arr){ $right=$left = array(); $Rights=$Lefts = array() ...
- PYTHON3 中的虚假四舍五入:round()
PYTHON3 中的虚假四舍五入:round() 创建时间: 2017/12/5 17:08 作者: CN_Simo 标签: python基础, round, 四舍五入 一.这不是一个BUG! 在使用 ...
- Cypher查询语言--Neo4j 综合(四)
目录 返回节点 返回关系 返回属性 带特殊字符的标识符 列的别名 可选属性 特别的结果 查询中的返回部分,返回途中定义的感兴趣的部分.可以为节点.关系或其上的属性. 图 返回节点 返回一个节点,在 ...
- python3操作redis
redis也被称为缓存 1.redis是一个key-value存储系统,没有ForeignKey和ManyToMany的字段. 2.在redis中创建的数据彼此之间是没有关系的,所以也被称为是非关系型 ...
- 安装基准测试工具sysbench
下载地址: http://pan.baidu.com/s/16KhJ4 解包 tar -zxvf sysbench-0.4.12.tar.gz 进入源码文件夹 cd sysbench- 执行autog ...
- redis2 安装步骤备忘
编译 make MALLOC=jemalloc 开启后台进程 /opt/redis2/src/redis-server /opt/redis2/redis.conf 配置,后台驻守模式一定要开 vi ...
- ABP官方文档翻译 7.1 后台Jobs和Workers
后台Jobs和Workers 介绍 后台Jobs 关于Job持久化 创建后台Job 在队列中添加一个新Job 默认的后台Job管理器 后台Job存储 配置 禁用Job执行 异常处理 Hangfire集 ...
- 使用sed修改配置项的值
起先我的想法是根据等号来求得配置项所在的行号, sed -n '/aaa/=' config.ini 然后根据行号删除这一行,再增加一行比如行号是9 sed -i '9d' config.ini s ...
- ECMAScript 6 笔记(一)
一.ECMAScript 6简介 1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准.次年,ECM ...
- C#小笔记:单例模式
双重锁定: public class Singleton { private static Singleton instance; private static readonly object syn ...