r语言打印log r语言怎么打印_python

1. 引子

前两天还说 R 语言不是不好,(只是不适合咱用)[],今天就想收回这话了。这货用着也太别扭了,一个最简单的可视化差点憋死我。

就像马保国,名气大,实则很完蛋。

2. 问题

比如一个最简单的csv,想打印成 Bar Plot。数据长的像下面这样

skills

number

machine learning

7255

communication skill

2970

fast pace

1672

software develop

1356

track record

1079

deep learning

1065

project management

1047

natural language

958

data mining

939

written communication

926

再简单不过的一个表格,想按照上面顺序打印出来。于是导入以后调用 ggplot2 开始可视化

library(ggplot2)
sdata = read.csv('skills.csv')
ggplot(data=sdata) + geom_col(mapping = aes(x=skills, y=n)) +
    theme(axis.text.x = element_text(angle = 90)) + coord_flip()

但就这么简单个东西,问题就出来了,打印结果如下

r语言打印log r语言怎么打印_python_02

不对吖,不应该是按照我数据的顺序打印么?这算怎么回事儿?仔细一看,丫的自作主张给我按照字母顺序排序打印了。

自作多情。谁稀罕你的排序啊。我就纳闷了,有多少次我们打印会按照字母顺序?直接按我原始数据指定的打印不好么?看 Python 多听话

import pandas as pd
import matplotlib.pyplot as plt

sdata = pd.read_csv("skills.csv", skipinitialspace=True)
plt.style.use('ggplot')
plt.barh(y=sdata.skills, width=sdata.numbers)
plt.xticks(rotation=90)
plt.gca().invert_yaxis()

结果

r语言打印log r语言怎么打印_python_03

3. 分析

上网搜了一下,有的文章说是因为dataframe把categorical data转换成了factor,然后按照factor的order打印的。那我们把factor转换成vector是不是就可以了?

试试

sdata = read.csv('skills.csv')
sdata$skills = as.character(sdata$skills)
ggplot(data=sdata) + geom_col(mapping = aes(x=skills, y=numbers)) +
    theme(axis.text.x = element_text(angle = 90)) + coord_flip()

很遗憾,结果和之前一模一样

r语言打印log r语言怎么打印_python_02

所以,应该是 R 在处理坐标轴排序的时候就是用的字母顺序,和factor还是vector没有关系。这个设计真是脑残。

既然想保持固定顺序,我们最后还是得回到能排序的东西上来。仔细看了看各种数据类型,也还是得靠facto。不管是它的 level属性,还是它的ordered属性,都是指定顺序的。指定level的时候,需要重新修改一下原来的column

sdata = read.csv('skills.csv')
s = as.character(sdata$skills)
sdata$skills = factor(s, levels = rev(s))
ggplot(data=sdata) + geom_col(mapping = aes(x=skills, y=numbers)) +
    theme(axis.text.x = element_text(angle = 90)) + coord_flip()

这回终于一切正常了

r语言打印log r语言怎么打印_r语言打印log_05

4. 总结

这两天用 R,各方面都很怪异。作为被Python惯坏的东哥,实在有点伺候不了这个性格怪异的家伙。

上网大致搜了一下,R 第一版发布于1993年,前驱的 S语言则发布于1976年,算是上古语言了。Python则发布于1990年,没有前驱语言;其计算包 NumPy 发布于1995年,分析包pandas发布于2008年。

这就是先发优势吧。虽然Python优雅简洁,奈何R语言已经在统计和科学计算方面有了统治级别的地位。想一时半会儿取而代之,还是颇有难度。尤其在学界。

但我是真有点受够她了。人生苦短,我为啥不用 Python。

5. 参考文献

  1. Dr. P. Prakash和A. S. K. Rao, R Data Structures and Algorithms. 2016.
  2. H. Wickham和G. Grolemund, R for data science: import, tidy, transform, visualize, and model data, First edition. Sebastopol, CA: O’Reilly, 2016.