xml地图|网站地图|网站标签 [设为首页] [加入收藏]
数据预处理,Iris的R语言命令工具箱澳门新葡亰手
分类:编程

 

qqbot是多少个无偿开源的依附smartqq的python插件,借使暗中认可安装有pip,则足以从来在命令行下试行:pip install qqbot安装qqbot,安装成功后得以在命令行输入qqbot help查看扶植文书档案。如若直白输入qqbot会自动掸出三个二维码图片,用手提式有线电话机qq扫码就能够运营成功,会活动保存这一次的登录新闻到地面文件,下一次得以输入qqbot -q qq号码运维,假诺登录音信未有过期就能够不用扫码登陆。qqbot运维后,能够再开四个极端来操作qqbot,输入:qq help|stop|restart,那八个指令分别是支援文书档案,停机和重启。

艾丽丝的索罗德语言命令工具箱(1)

明天在做多少分析,使用了QX56语言做了些数据管理和可视化,在这里记下遭遇过的主题素材、应用过的命令、管理情势以致工具包~

版权注明:本文为博主原创随笔,转发请申明本文地址。

大器晚成、日期时间、字符串的管理

日期

Date: 日期类,年与日

POSIXct: 日期时间类,准确到秒,用数字代表

POSIXlt: 日期时间类,正确到秒,用列表表示

Sys.date(), date(), difftime(), ISOdate(), ISOdatetime()

#得到当前日期时间
(d1=Sys.Date())   #日期        年月日
(d3=Sys.time())   #时间        年月日时分秒  通过format输出指定格式的时间
(d2=date())       #日期和时间  年月日时分秒  "Fri Aug 20 11:11:00 1999"

myDate=as.Date('2007-08-09')
class(myDate)     #Date
mode(myDate)      #numeric

#日期转字符串
as.character(myDate)

birDay=c('01/05/1986','08/11/1976') #
dates=as.Date(birDay,'%m/%d/%Y')    #向量化运算,对向量进行转换
dates

# %d    天 (01~31)
# %a    缩写星期(Mon)
# %A    星期(Monday)
# %m    月份(00~12)
# %b    缩写的月份(Jan)
# %B    月份(January)
# %y    年份(07)
# %Y    年份(2007) 
# %H    时
# %M    分
# %S    秒

td=Sys.Date()
format(td,format='%B  %d %Y %s')
format(td,format='%A,%a ')
format(Sys.time(), '%H %h %M %S %s')

#日期转换成数字
as.integer(Sys.Date())  #自1970年1月1号至今的天数
as.integer(as.Date('1970-1-1')) #0
as.integer(as.Date('1970-1-2')) #1

sdate=as.Date('2004-10-01')
edate=as.Date('2010-10-22')
days=edate-sdate
days    #时间类型相互减,结果显示相差的天数

ws=difftime(Sys.Date(),as.Date('1956-10-12'),units='weeks') #可以指定单位

#把年月日拼成日期
(d=ISOdate(2011,10,2));class(d)  #ISOdate 的结果是POSIXct
as.Date(ISOdate(2011,10,2))     #将结果转换为Date

ISOdate(2011,2,30)             #不存在的日期 结果为NA

#批量转换成日期
years=c(2010,2011,2012,2013,2014,2015)
months=1
days=c(15,20,21,19,30,3)

as.Date(ISOdate(years,months,days))

#提取日期时间的一部分
p=as.POSIXlt(Sys.Date())
p=as.POSIXlt(Sys.time())
Sys.Date()
Sys.time()
p$year + 1900   #年份需要加1900
p$mon + 1       #月份需要加1
p$mday

p$hour
p$min
p$sec

字符串处理

nchar() 、length()

paste()、outer()
substr()、strsplit()
sub()、gsub()、grep()、regexpr()、grepexpr()

#字符串
x='hellorwoldn'

cat(x)    #woldo  hello遇到r光标移到头接着打印wold覆盖了之前的hell变成woldo
print(x)  #
#字符串长度
nchar(x)  #字符串长度
length(x) #1 向量中元素的个数

#字符串拼接
board=paste('b',1:4,sep='-') #"b-1" "b-2" "b-3" "b-4"
board

mm=paste('mm',1:3,sep='-')   #"mm-1" "mm-2" "mm-3"
mm

outer(board,mm,paste,sep=':') #向量的外积 
  #[,1]       [,2]       [,3]      
  #[1,] "b-1:mm-1" "b-1:mm-2" "b-1:mm-3"
  #[2,] "b-2:mm-1" "b-2:mm-2" "b-2:mm-3"
  #[3,] "b-3:mm-1" "b-3:mm-2" "b-3:mm-3"
  #[4,] "b-4:mm-1" "b-4:mm-2" "b-4:mm-3"


#拆分提取
board
substr(board,3,3) #子串
strsplit(board,'-',fixed=T) #拆分 

#修改
sub('-','.',board,fixed=T) #修改指定字符
board
mm                 #"mm-1" "mm-2" "mm-3"
sub('m','p',mm)    #替换第一个匹配项 "pm-1" "pm-2" "pm-3"
gsub('m','p',mm)   #替换全部匹配项 "pp-1" "pp-2" "pp-3"


#查找
mm=c(mm, 'mm4')   #"mm-1" "mm-2" "mm-3" "mm4"
mm
grep('-',mm)      #1 2 3 向量中1,2,3包含'-'

regexpr('-',mm)   #匹配成功会返回位置信息,没有找到则返回-1

 

上边达成和煦的文字新闻自动回复。qqbot提供了一个音讯响应函数,大家只须求登记这一个音讯响应函数就足以摄取qq音信了,这么些音信响应函数的写法如下:

1.CSV格式文件数量导入导出

二、数据预处理

保险数据品质

准确性
完整性
一致性
冗余性
时效性

...

 

1、提取有效数据,必要业务人士合营(主观),及相关的技能手腕有限支撑

2、理解多少定义,统生龙活虎对数据定义的掌握

...

 

数量集成 : 对许多据源实行整合
多少调换 :
数量洗濯 : 卓殊数据,缺点和失误数据
数据约简 : 提炼,行,列

澳门新葡亰手机版 1

 

 

1.1 导入CSV数据(导入CSV数据现在积累为“Data Frame数据框”数据结构)

## 导入csv数据
## 第一行没有表头
mytable <- read.csv("/FilePath/read.csv", sep=",", header=FALSE)
## 第一行有表头
mytable <- read.csv("/FilePath/read.csv", sep=",", header=TRUE)
## 手动选择文件读入
mytable <-read.table(file.choose(),stringsAsFactors=FALSE,header = FALSE)

三、数据集成

由此merge对数据进行合併

#数据集成
#merge pylr::join (包::函数)
(customer = data.frame(Id=c(1:6),State=c(rep("北京",3),rep("上海",3))))
(ol = data.frame(Id=c(1,4,6,7),Product=c('IPhone','Vixo','mi','Note2')))


merge(customer,ol,by=('Id'))  #inner join
merge(customer,ol,by=('Id'),all=T) # full join
merge(customer,ol,by=('Id'),all.x=T)  # left outer join 左链接,左边数据都在
merge(customer,ol,by=('Id'),all.y=T)  # right outer join 右链接,右边数据都在


#union 去重 在df1 和df2 有相同的列名称下 
(df1=data.frame(id=seq(0,by=3,length=5),name=paste('Zhang',seq(0,by=3,length=5))))
(df2=data.frame(id=seq(0,by=4,length=4),name=paste('Zhang',seq(0,by=4,length=4))))

rbind(df1,df2)

merge(df1,df2,all=T)     #去重,不使用by

merge(df1,df2,by=('id')) #重名的列会被更改显示

 

from qqbot import QQBotSlot as qqbotslot,RunBot

@qqbotslot
def onQQMessage(bot,contact,member,content):

    if content == '-hello':
        bot.SendTo(contact,'你好')
    elif content=='-stop':
        bot.SendTo(contact,'机器人已关闭')
        bot.Stop()

if __name__=='__main__':
    RunBot()

1.2 导出CSV数据

write.csv(mytable,"/FilePath/write.csv",row.names = FALSE)  

四、数据转变

协会属性
规范化(极差化、标准化)
离散化
修正分布

 

 

2.删减钦命变量或对象

1、直接删除
> a<-c(1,2,3)
> rm(a)

2、以字符串形式的方式删除
> a<-c(1,2,3)
> rm('a')

3、删除不再需要的对象
在使用R语言的过程中,除了要保留特定的对象外,其他的对象不再需要
> a<-ls()
> rm(list=a[which(a!='c2' & a !='m2' & a !='cpu1' & a !='mem1')])
> ls()
[1] "a"    "c2"   "cpu1" "m2"   "mem1"
如这个例子中,除了a,c2,cpu1,m2,mem1变量或对象外,其他的对象和变量均删除

4、对象的查找
有时,需要查找已经存在哪些变量,可根据名字来查找:
> objects(pattern='^m.*')
查找以m开头的对象,pattern为模式(匹配规则)

在乎那些新闻响应函数名必须是onQQMessage,函数参数也必需生龙活虎致。

3.数据框Data Frame的操作

参考博客:http://www.cnblogs.com/studyzy/p/4316118.html

初始化Data Frame

## 例:初始化一个student的Data Frame
student<-data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"),Birthdate=c("1984-12-29","1983-5-6","1986-8-8"))

那会儿翻开student的原委为:

 ID Name Gender Birthdate

1 11 Devin M 1984-12-29

2 12 Edward M 1983-5-6

3 13 Wenli F 1986-8-8

翻看列名:使用names函数

##查看列名:使用names函数
names(student)
##查看行名:使用到row.names函数
row.names(student)
##若希望将 ID 作为行名
row.names(student)<-student$ID
##或在初始化date.frame的时候,有参数row.names可以设置行名的向量

访问成分

##访问第一行:
student[1,]
##访问第二列:
student[,2]

##使用列的Index或者列名可以选取要访问的哪些列。比如要ID、Name和Gender
##注意下标第一个元素就是1
IdNameGender<-student[1:3]
##另一种方法
IdNameGender<-student[c("ID","Name","Gender")]

##如果是只访问某一列,返回的是Vector类型的,那么可以使用双层括号[[]]或者$来访问
##例如访问student的Name
name<-student[[2]] 
##或者
name<-student[["Name"]]
##或者
name<-student$Name

##使用attach和detach函数可以使得访问列时不需要总是跟着变量名在前面
##比如要打印所有Name:
attach(student)
print(Name)
detach(student)
##还可以换一种简洁一点的写法就是用with函数
with(student,{
  n<-Name
  print(n)
})
##这里的n作用域只在大括号内
##如果想在with函数中对全局的变量进行赋值,那么需要使用"<<-"这样一个运算符。

联合三个Data Frame

tableall = merge(table1,table2,all.x = TRUE, all.y = TRUE)

写好消息响应函数后,保存为xx.py,倘诺qqbot已经起步请关闭qqbot进程,然后在命令行输入python xx.py -q qq号码,这样就可以运营qqbot,并且会把xx.py自动注册到qqbot的新闻响应函数上,当qq收到音讯时会在命令行上旁观。还应该有大器晚成种运营xx.py的办法,就是把此文件作为贰个插件,在qqbot运转进度中动态加载卸载。首先要将此文件保留在系统中能够import到的目录下,如python的装置目录下的Lib/site-packages目录,在qqbot运行后,在别的一个垄断台输入qq plug xx就能够将onQQMessage函数注册到qqbot中去,输入qq unplugin xx。借使以插件情势加载xx.py,文件内容能够简化,只保留def onMessage函数,别的的都能够去除。

4.对此CSV/Excel时间数额的拍卖-as.POSIXct()函数

将时间数额转载为时间格式

CSV/Excel文件导入成Data Frame格式数据之后,原先在CSV/Excel中的时间格式数据如“二〇一四-02-11 03:42:10.724”被寄存为“numeric”格式,假如不改良格式,在三番一次可视化处理的时候(如以时间为X轴,画散点图折线图)就能够凌驾难题

解决格局:

##将mytable中名为Time的列转化为时间格式
mytable$Time<-as.POSIXct(mytable$Time)

as.POSIXct(c,'%Y-%m-%d %H:%M',tz='UTC')
as.POSIXct(c,'%Y/%m/%d %H:%M',tz='UTC')

##另:as.Date截取日期部分转化成时间格式
c="2008/2/25 0:20"
as.Date(c,'%Y/%m/%d %H:%M')
##结果为: 2008-02-25

上面简要介绍传入onQQMessage的多少个参数,bot是qqbot对象,提供了List/Send/Stop/Restart八个接口,List接口是贰个询问接口,能够积极询问联系人列表等音讯,具体详细的情况还需查阅有关文书档案,本案例没用到这几个接口,Send是二个出殡和下葬新闻的接口,Stop是终止qqbot的接口,Restart是重启qqbot的接口。contact是新闻的发送者对象,member仅本新闻是群依然研商组的新闻时才有效,代表发送消息的分子。content是三个str对象,新闻的从头到尾的经过。

5.数据预处理-“dplyr”和“tidyr”扩充包

此地作者只利用它做了简便易行的筛选,关于更多详细用法链接如下

扩展阅读:http://www.cnblogs.com/shangfr/p/6110614.html

扩展阅读:http://www.360doc.com/content/15/0824/21/18847742_494543772.shtml

##安装扩展包
install.packages("dplyr")
install.packages("tidyr")
##筛选数据,清洗数据
##将过长过大的数据集转换为显示更友好的 tbl_df 类型
tablefilter <- tbl_df(table)

result1<-filter(tablefilter,tablefilter$Price<20.5)
result2<-filter(tablefilter, tablefilter$Num<10 | tablefilter1$Price>1100)
result3<-filter(tablefilter, Month == 1 | Month == 2)

qqbot提供了三种发送二维码登录验证的艺术,分别有GUI方式,邮箱形式,服务器形式,文本情势。默许是GUI形式,当展开了其余情势时,GUI方式是关门的。寻平时用的是GUI和邮箱方式。在首先次开发银行qqbot后,在计算机系统盘里的客商目录C:Users个体计算机账号名(有异常的大希望是C:用户计算机的账号名)目录下会有一个.qqbot-tmp文件夹,在此个文件夹里,有二个v2.3.conf文书,那个文件就是登录验证的布局文件,张开配置文件,里面有介绍配置的效果,能够友善复制意气风发份somebody更正为友好想要的登录方式,假若本人复制了生龙活虎份somebody增多在somebody后边,并取名称为some,纠正定制some的内容,下一次运营时能够输入qqbot -u some大概python xx.py -u some运行qqbot。

6.总括方差、样品均值、规范差等-apply函数族

apply族函数详解:

博客1:http://blog.csdn.net/wltom1985/article/details/50403720

博客2:http://blog.sina.com.cn/s/blog_403aa80a010174dj.html

## 计算方差、样本均值、标准差等
## 1代表行,2代表列

例1:xx <- matrix(1:20, 4, 5)
colMeans(xx) #列均值
colSums(xx) #列和
其余大部分都要用到apply()函数

例2:xx <- matrix(1:20, 4, 5)
apply(xx, 2, mean) #列均值,等同于colMeans(xx)
apply(xx, 2, sum) #列和,等同于colMeans(xx),所以矩阵行和列的运算推荐用apply()。
apply(xx, 1, var) #行方差
apply(xx, 2, max) #每列最大值
apply(xx, 2, rev) #每列的数反排列

apply(data,2,sd) #列标准差

上边给出个人达成的qq上取出’笑话’音信时自动恢复生机一条笑话,笑话是上篇博文抓取存款和储蓄的,从mysql数据Curry获得笑话的python代码也在上篇博文。具体代码如下。

7.相关性深入分析

pearson、spearman相关解析及相关周全矩阵可视化

## cor(mytable) 对mytable所有属性进行相关性分析
##(相关性分析不支持时间戳格式的列以及方差为0的列,应先删去对应列)
corrp<-cor(table1) ## 默认是pearson相关分析
corrs <- cor(table1[4:14],method = 'spearman') ## spearman相关分析

## 相关性分析可视化
## 需要下载corrplot扩展包
install.packages("corrplot")
corrplot(corr = corrp,method="square")
## corrplot(corr = corrs, method = 'color', addCoef.col="grey")

更多关于corrplot扩展包:https://sanwen8.cn/p/139qu99.html

本文由澳门新葡亰手机版发布于编程,转载请注明出处:数据预处理,Iris的R语言命令工具箱澳门新葡亰手

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文