【小工具】python 携手R 计算两组数据相关性

要求:

假如你有两个表格:每个表格中有至少两列或者好多列,如下图例子中用到的表格只有3列,以空格分隔,第一列是名称,第二列是观察值,第三列也是观测值。


image.png

你想根据两个文件中共有的某一列的值算相关性:

首先根据两个文件中共同列求交集,然后输出交集部分的指定列的信息。
比如,两个文件中都有第一列的信息,然后输出第一个文件中第三列,和第二个文件中第三列的信息。

脚本功能:

  • 支持求数据的频率。
  • 支持求并集或交集的相关性。
  • 支持文件有或没有header,表头。
  • 支持按照指定的列去计算:比如第一个文件中第二列,第二个文件中第三列之类。
  • 支持文件分割类型为space或者tab或者comma。默认用space,如果不知道自己的数据是用什么分割的。可以用cat -A your_file.txt |head 去看,如果看到是^I隔开的,就表示该文件用tab作为分隔符,如果看到是空格,那么就是空格。comma即以逗号分割的csv格式文件。
  • 生成的内容需要重定向到指定文件中,否则将会屏幕输出。
  • 生成相关性图,并包含sperm系数和pearson系数的计算结果(可选参数,默认不输出)。

输出文件为一个新生成的表格。
该表格具有三列:
第一列为两个文件中共有列的共有数据;
第二列和第三列分别是来自第一个文件中指定列和第二个文件中的指定列。

然后用第二个脚本(R脚本)画相关性图:
画相关性的脚本也支持将数据取对数log或者非log形式:

脚本参数详解

参数介绍

基本参数 -a -b,两个输入文件,必须加
选择性参数:这些参数都有默认值,看清楚即可。
-ka,-kb 表示a文件的key列,b文件的key列,就是共有列,要以这两列为key去提取。
-va,-vb 表示a文件的value列,b文件的value列,就是你要比较的数据的值所在的列,可以使数字类型,也可以是字符串类型的值。
-sa,-sb 表示a文件的分割符,b文件的分隔符。
-headera,-headerb 加了哪个表示那个文件有header,不加表示没有header。
-f [布尔类型] 表示是否计算数值占总体的比例,默认False不计算。
-u [布尔类型] 表示输出key列的并集(合集),默认不加-u参数。

案例

第一步,将原始文件整理为相关性数据文件的格式。
python  correlation.py -a 01.xls -b 03.xls >01vs03.xls 
# 推荐输出格式用"."分隔,比如这里的01vs03.xls 中分隔符“.”号之前的“01vs03”将用在后面生成图的前缀。
第二步,用R脚本画图。
Rscript  correlation.point.log.R  01vs03.xls
结果生成为:
01vs03.0.corelation.jpg
01vs03.0.corelation.jpg

待更新:

1)美化图片,配色,线条需要美化一下下。
2)偏离点如何查看,什么意义?

更新说明:

*20200501:支持以“comma”,“,”分割的文件,只需在参数-sa或-sb中设置comma即可

  • 20190919: 新增计算比例的参数:-f。
  • 20190919:新增输出union 的参数:-u。

一些说明

该脚本已经发展成为了根据两个文件中共有的某一列来提取相关信息的脚本。
这两个脚本在个人的项目中非常实用。经常用来做相关性图,因此写成通用工具更加方便。
当然如果你已经有了第一步结果的表格,直接用第二个R脚本画图即可。
python脚本使用的全部为python内置的包,无需安装其他包,测试使用的是python 2.7及python3中都适用。
R脚本需要安装ggplot2. 测试使用的R版本为 3.5.1
需要脚本的点赞并私信我哦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,165评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,861评论 6 13
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,351评论 0 17